目录
图的两种常用的表示方式是邻接矩阵和邻接表。以下以邻接矩阵为例,图的初始化定义:
class Graph():
def __init__(self,nodeNum,sides,direction=False):
self.nodeNum = nodeNum #顶点
self.amatrix = [[0]*(nodeNum+1) for i in range(nodeNum+1)] #邻接矩阵
for side in sides:
u,v,w = side
if(direction):
self.amatrix[u][v]=w
else:
self.amatrix[u][v]=w
self.amatrix[v][u]=w
1、图遍历
在图遍历时,有两种常用的访问顶点的顺序,深度优先遍历和广度优先遍历。以下图为例,深度优先遍历的结点为:1、2、3、4、6、5、7、8、9,广度优先遍历的结点为:1、2、3、5、4、7、8、6、9.
深度优先遍历的迭代版本如下:
def dfs(graph,v):
visitnodes.append(v)