连接与强连接的有向图

时间:2014-12-16 04:51:45

标签: algorithm graph depth-first-search breadth-first-search directed-graph

给出图表:

输入:

0 -> 1
2 -> 1
3 -> 1

表示:

0 -> 1 <- 2
     ^
     |
     3

此图形没有强烈连接,因为并非每个顶点u都可以到达顶点v,反之亦然(路径u到v和v到u)

我目前用于检查有向图是否强连接的算法是从每个顶点O(n 3 )应用DFS,如果我可以从N个顶点找到N-1个顶点,然后有图连接很强 替代算法是Tarjan的算法。

但是这个图表是否被认为是连接的(不是强烈的)? 如果是,那么应用的算法是什么。

谢谢

2 个答案:

答案 0 :(得分:2)

如果你想弄清楚你的有向图是强关联的,那么有几种算法可以在wiki找到这三个:

如果您想检查您的有向图是否已连接,您可以简单地假设它是图形而不是有向图,然后将connected component算法应用于O(|V|+|E|)。如果它只有一个连接的组件,那么你的图表就已经连接了。

答案 1 :(得分:1)

术语&#34;连接(没有强连接&#34;通常用于无向图。在你的情况下,有向图没有连接(强烈)。

可以评估有向图(有向图)在O(V + E)时间内是否紧密连接的算法之一是以发现它的Kosaraju命名的。

维基:http://en.wikipedia.org/wiki/Kosaraju%27s_algorithm非常有启发性。我已经实现了算法,它可以在这里找到。在O(v + E)中运行。我们假设图形作为邻接列表支持。

Link for Kosaraju Implementation in Java

尝试一下,希望你找不到错误:-)