图表 - 强连接组件

时间:2010-05-22 22:27:53

标签: c++ algorithm graph version-control

有没有快速的方法来确定图表中最大的强连通组件的大小?

我的意思是,明显的方法意味着确定每个SCC(可以使用两个DFS调用完成),然后循环遍历它们并取最大值。

我很确定如果我只需要那个组件的大小而只需要最大的那个,那么必须有一些更好的方法,但我想不出一个好的解决方案。有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

让我用另一个问题回答你的问题 -
如何在不检查所有值的情况下确定集合中哪个值最大?

答案 1 :(得分:0)

首先,你可以使用只需要一个DFS而不是两个DFS的Tarjan's algorithm。如果您清楚地理解算法,则SCC形成DAG,并且此算法以反向拓扑排序顺序找到它们。因此,如果您对图形有所了解(如可视化表示),并且如果您知道相对较大的SCC出现在DAG的末尾,那么您可以在找到几个SCC后停止算法。