用临界矩阵表示图

示例

假设有如下一个图:
在这里插入图片描述
其临界矩阵的表示结果如下:
在这里插入图片描述
如上图,与某个节点相连的节点均用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()
运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值