强连通分量的三种算法
来源:互联网 发布:2017年大数据产业规模 编辑:程序博客网 时间:2024/05/22 06:19
就我所知,有三种时间复杂度为O(n)的方法可以求强连通分量,分别是Kosaraju、Tarjan和Gabow。
- Kosaraju
算法的步骤为- 对图G进行DFS,并按照遍历完成的先后顺序进行标号。
- 将图G中所有的边反向得到G'。
- 对G'进行DFS,每轮DFS都选择编号最大的点最为当前的遍历树的根。
- 最后,遍历得到的森林就是SCC的集合。
- Tarjan
第一个求解SCC的算法,应用非常广泛,几乎任何和图的遍历有关的问题都可以套用Tarjan算法的思想(比如,求割点、桥、块等等)。
在遍历时,对每一个节点定义时间戳,同时定义Low函数,含义为节点及其子孙通过非父子边的返祖边所能到达的最小时间戳。最后若Low函数等于其时间戳,则当前递归栈内存在一个SCC。
代码如下: - Gabow
算法的原理说起来太麻烦,还是直接给出代码。其实这个算法并不是很常用。
更新时间 2015-5-24 晚上
晚上对以前算法作总结,总结tarjan算法核心思想
0 0
- 强连通分量的三种算法
- 强连通分量的三种算法
- 强连通分量的三种算法
- 有向图强连通分量的三种算法
- 强连通分量的三种算法分析
- 强连通分量算法
- 强连通分量的三种算法和四种实现
- 求强连通分量的三种算法——Kosaraju, Tarjan, Gabow
- 求强连通分量几种算法的比较
- 求强连通分量的Tarjan算法
- 强连通分量的Kosaraju算法
- 强连通分量个数的tarjan算法
- 强连通分量 的 Kosaraju算法
- 强连通分量(SCC)的Tarjan算法
- 强连通分量的Garbow算法
- 强连通分量的tarjan算法
- 求强连通分量的Tarjan算法
- 求强连通分量的Tarjan算法
- web中的批量操作
- 基于GMM-HMM算法语音识别
- I2C总线的时序
- 智能家居---遥控器APP
- 【Your Are Real Stewart】五月“啦啦啦”英语总结
- 强连通分量的三种算法
- js计时器
- Linux 进程的理解
- [排列]poj1256
- boost circular_buffer的使用
- 嵌入式学习笔记201-Linux kernel动起来
- (15.1.1)女人身上的“互联网思维”——女神商业逻辑
- 双冒号 冒号 在c++/c中的用法
- Ascii Table 不同系统中换行符的区别