示例
假设有如下一个图:
其临界矩阵的表示结果如下:
如上图,与某个节点相连的节点均用1表示,比如与A节点相连的有B和C,那么(A,B)和(A,C)位置就用1表示。
python实现邻接矩阵
注意此处不能用[0]*n来创建列表。
class Graph:
def __init__(self):
self.vertexList = [] #用来记录图的顶点的列表
self.n_vertex = 0 #保存类中现有顶点的个数
self.edge = [] #用来保存图的弧,用邻接矩阵表示
def add_vertex(self,vertex): #向图中添加顶点
self.vertexList.append(vertex)
self.n_vertex = self.n_vertex+1
self.edge = [[i*0 for i in range(self.n_vertex)] for j in range(self.n_vertex)]
def add_edge(self,start,end): #向图中添加弧(边)
self.edge[start][end] = 1
self.edge[end][start] = 1 #因为是无向图,所以能从终点到初识点,自然能从初始点到终点
def test_method(self):
for i in self.vertexList:
print(i,end=" ")
print()
for j in self.edge:
print(j)
用上图来测试上面的类
def run_graph():
g = Graph()
g.add_vertex("A")
g.add_vertex("B")
g.add_vertex("C")
g.add_vertex("D")
g.add_vertex("E")
g.add_edge(0,1)
g.add_edge(0,2)
g.add_edge(1,2)
g.add_edge(2,3)
g.add_edge(3,4)
g.add_edge(4,3)
g.test_method()
#执行
run_graph()