用于SCC最坏情况分析的Tarjan算法

时间:2015-04-04 08:06:17

标签: algorithm graph tarjans-algorithm

我正在阅读Donal B .Johnson的论文,找到有向图中的所有基本电路,http://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF

在本文中他提到Tarjan算法的最坏情况是O(V * E(c + 1)) 虽然其他地方都显示为O(V + E),但约翰逊的论文采用了几个例子来证明这一点,如纸上的图1和图2所示。

图2示例非常相似,在O(k)时间内找到第一个周期1 ... k之后,现在根据我的理解,所有其他的顶点将只是返回,因为它们的索引已经定义,它应该采取另一个对于k个顶点的k时间,所以要将它变为2k倍而不是k ** 2,我在这里错过了一些观点吗?

请举个例子,谢谢

1 个答案:

答案 0 :(得分:1)

“Tarjan算法”在这种情况下不是强连接组件的算法。这是他枚举基本电路的算法。然而,在the original paper中,该方法被指出具有紧密的最坏情况O((V + E)*(C + 1))时间。值得注意的是,Tarjan用来证明这个界限(找到两个电路之间的O(V + E)时间)的论点在Johnson的论文中突然发生了变化(发现两个电路之间的O(V * E)时间)。我不熟悉这些算法中的任何一个,所以我不能说哪一个是正确的。快速搜索似乎认为Johnson的算法渐近更快(尽管两种方法都声称具有相同的时间复杂度),但我找不到一个反驳Tarjan论文中时间复杂性的来源。

相关问题