假设我们有一个有向图,它不是一个完整的图,并且有多个SCC。 我想知道如果我们转换图形并使用Kosaraju的算法,强连通分量的模式是否会改变? 通过说“转置图形”我的意思是翻转边缘的方向。 如果我们试图在转置/反转图形而不是原始图形中找到SCC,我们发现SCC会不同吗?
我提出了这个问题,因为我误解了SCC的算法并在我的转置/反转图上运行它。我得到的是与正确答案相同的SCC /运行Kosaraju的算法。所有图表都普遍适用吗?
答案 0 :(得分:1)
如果你看http://en.wikipedia.org/wiki/Kosaraju%27s_algorithm,你会看到:
“转置图(每条边的方向相反的图形)与原始图形具有完全相同的强连通分量。”
(一个强连通组件是一个可以从每个顶点到组件中每个其他顶点的组件,如果你反转所有链接,它仍然会成立)。当然,连接不同组件的链接将是相反的,因此我希望您将以不同的顺序获得组件。
答案 1 :(得分:0)
即使图形反转,图表的SCC也不会保持不变,这对于kosaraju的SCC算法来说非常重要。只有SCC之间的链接是相反的。 Kosaraju的算法利用这一事实来评估反向图上的DFS,现在为SCC提供了更接近水槽SCC的更高完成时间值。由于Sink SCC没有向另一个SCC的传出边缘,因此在其上评估DFS将SCC作为整个连接组件给出,并且还允许将图分解为具有类似属性的子图,在该子图上我们再次应用DFS以获得另一个SCC。