图的遍历——DFS与BFS

图的遍历

图的遍历 ( T r a v e r s i n g   G r a p b ) (Traversing\ Grapb ) (Traversing Grapb):从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历 。

无向图的邻接矩阵储存结构代码

class Undirected_Graph_Matrix(object):
#Adjacency Matrix
    def __init__(self, vertices=[], edges_list=[]):                 
        self.edges_dict = {}                                        #{(tail, head):weight}
        self.edges_list=edges_list                                  #(tail, head, weight)
        self.vertices = vertices                                    #顶点
        self.num_edges = len(self.edges_list)                       #边的数目
        self.num_vertices = len(self.vertices)                      #顶点数目
        self.Mat = zeros((self.num_vertices,self.num_vertices))     #邻接矩阵
        
        if len(self.vertices) == 0:
        #图不能为空
            print('图不能为空')
            raise IndexError

        for Edge in edges_list:
        #根据edges_list生成self.edges_dict
            self.edges_dict[(Edge[0],Edge[1])]=Edge[2]
        
        for i in range(self.num_vertices):
            for j in range(self.num_vertices):
                if i==j:
                    self.Mat[i][j]=0
                elif (vertices[i],vertices[j]) in self.edges_dict:
                    self.Mat[i][j]=self.edges_dict[(vertices[i],vertices[j])]
                    self.Mat[j][i]=self.edges_dict[(vertices[i],vertice
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值