作家
登录

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

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

证实也证清楚明了,代码该给出了。

  1. package Chap7; 
  2.  
  3. import java.util.LinkedList; 
  4.  
  5. /** 
  6.  * 寻找有向图中的强连通分量 
  7.  */ 
  8. public class KosarajuSCC { 
  9.     // 用来标记已经拜访过的顶点,包管每个顶点值拜访一次 
  10.     private boolean[] marked; 
  11.     // 为每个连通分量标示一个id 
  12.     private int[] id; 
  13.     // 连通分量的个数 
  14.     private int count
  15.  
  16.     public KosarajuSCC(DiGraph<?> graph) { 
  17.         marked = new boolean[graph.vertexNum()]; 
  18.         id = new int[graph.vertexNum()]; 
  19.         // 对原图G取反获得Gr 
  20.         DFSorder order = new DFSorder(graph.reverse()); 
  21.         // 按Gr的逆后序进行dfs 
  22.         for (int s : order.reversePost()) { 
  23.             if (!marked[s]) { 
  24.                 dfs(graph, s); 
  25.                 // 一次dfs调用就是一个连通分量,第一个连通分量id为0。 
  26.                 // 之后分派的id要自增,第二个连通分量的id为1,以词攀类推 
  27.                 count++; 
  28.             } 
  29.         } 
  30.     } 
  31.  
  32.     private void dfs(DiGraph<?> graph, int v) { 
  33.         // 将刚拜访到的顶点设置标记 
  34.         marked[v] = true
  35.         id[v] = count
  36.         // 大年夜v的所有邻居点中选择一个没有被拜访过的顶点 
  37.         for (int w : graph.adj(v)) { 
  38.             if (!marked[w]) { 
  39.                 dfs(graph, w); 
  40.             } 
  41.         } 

  42.   推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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