gpt4 book ai didi

algorithm - 寻找强连通分量 - Kosaraju 算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:21 26 4
gpt4 key购买 nike

在有向图中,要找到强连通分量(使用 Kosaraju 算法),如果我们可以在完成时间之前使用节点的反向列表然后遍历原始图,为什么我们必须转置邻接矩阵(反转所有边的方向) .换句话说,我们会找到所有顶点的完成时间并开始从最低完成时间遍历到最大(通过增加完成时间)?

此外,如果我们对某些 DAG 进行拓扑排序,然后反转边(转置邻接矩阵)并再次进行拓扑排序 - 我们是否应该以相反的顺序得到相等的数组?

最佳答案

这不会给 SCC。考虑 2 个子图 S1 和 S2。为了使 S1 和 S2 都成为单个 SCC 的一部分,应该有一条从 S1 到 S2 以及从 S2 到 S1 的路径。按照您提到的方式,即使只有从 S1 到 S2 的路径,它也会将它们计为单个 SCC。原始图和反向图上的 DFS 确保只有在两个方向上都有路径的组件才会在 SCC 内组合。

Additionally, if we do topological sorting on some DAG, and then reverse edges (transpose adjacency matrix) and do topological sorting again - should we get to equal arrays, just in reversed order?

不一定。考虑一个简单的例子 (1->2,1->3) .Topological sort=(1,2,3)。反转图(2->1,3->1)。拓扑排序(2,3,1)

关于algorithm - 寻找强连通分量 - Kosaraju 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21061507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com