zoukankan      html  css  js  c++  java
  • 图的遍历

    1. 深度优先

    • 深度优先遍历的非递归算法

      def dfs_nonrec(graph, v0):
          vnum = graph.vertex_num()
          visited = [0]*vnum
          visited[v0] = 1
          st = []                               # 作为堆栈使用
          dfs_seq = []        
      
          st.append((0, graph.out_edges(v0)))
          while len(st) > 0:
              i, edges = st.pop()
              st.append((i+1, edges))
              v, e = edges[i]
              if not visited[v]:
                  dfs_seq.append(v)
                  visited[v] = 1
                  st.append((0, graph.out_edges(v)))              

      堆栈中的元素形式为为 (i, edges),其中 edges 表示是某个顶点的出边表(比如 graph.out_edges(v0)),i 是目前访问的边表的下标,因为是深度优先,先访问 v0 的第一个出边,v0 的第一个出边能够达到的点全部遍历完毕之后,回过头来(回溯) v0 的第二个出边;

  • 相关阅读:
    openssh的服务端配置文件
    SSH的端口转发
    ssh服务
    文件引入
    数据类型的转换
    作用域
    静态变量
    函数
    php嵌入html的解析过程
    PHP执行过程
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423995.html
Copyright © 2011-2022 走看看