作家
登录

数据结构与算法–图论之寻找连通分量、强连通分量

作者: 来源: 2017-11-14 17:21:22 阅读 我要评论

for (int i = 0; i < M; i++) { 
  •             components[i] = new LinkedList<>(); 
  •         } 
  •         // 将同一个id的顶点归属到同一个链表中 
  •         for (int v = 0; v < graph.vertexNum(); v++) { 
  •             components[cc.id(v)].add(v); 
  •         } 
  •         // 打印每个连通分量中的顶点 
  •         for (int i = 0; i < M; i++) { 
  •             for (int v : components[i]) { 
  •                 System.out.print(v+ " "); 
  •             } 
  •             System.out.println(); 
  •         } 
  •     } 
  •  
  • 法度榜样将打印如下信息

    1. 3个连通分量 
    2. 0 1 2 3 4 5 6  
    3. 7 8  
    4. 9 10 11 12  

    比较上图,吻合!

    深度优先搜刮的应用——断定无向图是否有环

    应用DFS可以很便利地断定一幅无向图是否成环(假设不存在自环和平行边)。

    1. package Chap7; 
    2.  
    3. public class UndirectCycle { 
    4.     private boolean marked[]; 
    5.     private boolean hasCycle; 
    6.  
    7.     public UndirectCycle(UndiGraph<?> graph) { 
    8.         marked = new boolean[graph.vertexNum()]; 
    9.         for (int s = 0; s < graph.vertexNum(); s++) { 
    10.             if (!marked[s]) { 
    11.                // 刚开端没有顶点被拜访过,所以当前正拜访和上一个被拜访的顶点设置为起点s。当dfs被递归调用一次后,当前正拜访的参数v是s的一个邻居点,而上一个被拜访的参数u是s,相符 
    12.                 dfs(graph, s, s); 
    13.             } 
    14.         } 
    15.     } 
    16.     // 修悛改的DFS,v表示当前正拜访的顶点,u表示上一个拜访的顶点 
    17.     private void dfs(UndiGraph<?> graph, 

        推荐阅读

        40岁的IT巨人微软 究竟是什么在支撑着它继续前进?

      Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 上周,微软颁布了其2018财年第一季度的财报。毫无不测埠,微软在这一季度大年夜赚了一笔。微软颁布财报后>>>详细阅读


      本文标题:数据结构与算法–图论之寻找连通分量、强连通分量

      地址:http://www.17bianji.com/lsqh/38858.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)