思想:做一遍DFS,用dfn[i]表示编号为i的节点在DFS过程中的访问序号(也可以叫做开始时间)用low[i]表示i节点DFS过程中i的下方节点所能到达的开始时间最早的节点的开始时间。初始时dfn[i]=low[i]在DFS过程中会形成一搜索树。在搜索树上越先遍历到的节点,显然dfn的值就越小。D ...
分类:
编程语言 时间:
2016-04-17 17:32:11
阅读次数:
137
无意中想起图的强连通分量来,之前也一直想写所以今天决定来填这个坑。PS:由于本人比较懒,之前做过一个讲解的PPT,不过那是好遥远之前,年代已久早已失传,所以本文里的图来自网络。以后周末都用来填坑也挺好。 分割线 在有向图G中,如果两个顶点间至少存在一条路径,那么这两个顶点就是强连通(strongly ...
分类:
编程语言 时间:
2016-04-12 01:50:24
阅读次数:
560
说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。而提出此算法的普林斯顿大学的Robert E Tarjan教授也是1986年的图灵奖获得者(具体原因请看本博“历届图灵奖得主”一文)。 首先明确几个概念。 关于Tarjan算法的伪代码和流程演示 ...
分类:
编程语言 时间:
2016-04-12 00:13:12
阅读次数:
180
Tarjan算法详解 今天偶然发现了这个算法,看了好久,终于明白了一些表层的知识、、、、在这里和大家分享一下。。。 Tarjan算法是一个求解极大强联通子图的算法,相信这些东西大家都在网络上百度过了,这里不再赘述。 在这个算法中,定义了两个数组,一个是dfn数组,一个是low数组,相信大家在这里就晕 ...
分类:
编程语言 时间:
2016-04-03 18:51:35
阅读次数:
163
来自:http://www.cnblogs.com/ylfdrib/archive/2010/11/03/1867901.html 对于一棵有根树,就会有父亲结点,祖先结点,当然最近公共祖先就是这两个点所有的祖先结点中深度最大的一个结点。 0 | 1 / \ 2 3 比如说在这里,如果0为根的话,那 ...
分类:
编程语言 时间:
2016-04-02 22:45:01
阅读次数:
282
一、操作过程:tarjan算法的基础是DFS。我们准备两个数组Low和Dfn。Low数组是一个标记数组,记录该点所在的强连通子图所在搜索子树的根节点的 Dfn值(很绕嘴,往下看你就会明白),Dfn数组记录搜索到该点的时间,也就是第几个搜索这个点的。根据以下几条规则,经过搜索遍历该图(无需回溯)和 对 ...
分类:
编程语言 时间:
2016-04-02 18:58:17
阅读次数:
170
Tarjan算法详解 【概念】 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components) ...
分类:
编程语言 时间:
2016-03-31 00:17:56
阅读次数:
258
来自博客:http://www.cnblogs.com/saltless/archive/2010/11/08/1871430.html 求强连通分量的Tarjan算法 说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。而提出此算法的普林斯顿大 ...
分类:
其他好文 时间:
2016-03-29 21:14:22
阅读次数:
164
题目: 题意: 给了一个联通无向图,现在问去掉某个点,会让图变成几个联通块? 输出的按分出的从多到小,若相等,输出标号从小到大。输出M个。 分析: BCC求割点后联通块数量,Tarjan算法。 联通块的数目在找到一个low[y]>=dfn[x]时累加,最后加一即可。 代码如下: 2016-03-17
分类:
移动开发 时间:
2016-03-17 14:41:33
阅读次数:
333
http://poj.org/problem?id=3710 (说实话对于Tarjan算法在搞图论的时候就没搞太懂,以后得找时间深入了解) (以下有关无向图删边游戏的资料来自论文贾志豪《组合游戏略述——浅谈SG游戏的若干拓展及变形》) 首先,对于无向图的删边游戏有如下定理性质: 1.(Fushion...
分类:
其他好文 时间:
2016-03-07 06:43:53
阅读次数:
176