给出图表:
输入:
0 -> 1
2 -> 1
3 -> 1
表示:
0 -> 1 <- 2
^
|
3
此图形没有强烈连接,因为并非每个顶点u
都可以到达顶点v
,反之亦然(路径u到v和v到u)
我目前用于检查有向图是否强连接的算法是从每个顶点O(n 3 )应用DFS,如果我可以从N个顶点找到N-1个顶点,然后有图连接很强 替代算法是Tarjan的算法。
但是这个图表是否被认为是连接的(不是强烈的)? 如果是,那么应用的算法是什么。
谢谢
答案 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
尝试一下,希望你找不到错误:-)