【发布时间】:2019-04-06 08:52:39
【问题描述】:
在 Kosaraju 算法中,我遇到了两种可能的实现:
1) 按照原图中顶点的拓扑顺序,在逆向图中搜索强连通分量。
2) 按照逆向图中顶点的拓扑顺序搜索原图中的强连通分量。
我想在原始图中使用反向拓扑顺序的顶点搜索强连通分量是错误的。这在内存方面会更好,因为不需要新的邻接列表。
来源:1)E-Maxx,2)CLRS 书
【问题讨论】:
-
请注意,反转图的强连通分量与原图相等。所以,1)和2)都是有道理的。您是否要求 Korasaju 算法不需要计算反转图?为什么不需要新的邻接表?
-
是的,我声称不需要反向图,但我不确定,因为我无法提供证明。另外,如果我是对的,人们不应该使用反转图,因为这会节省内存:)
-
“不需要反向图”是什么意思? kosaraju 的算法需要两次图遍历:一次用于原始图,一次用于反转图。其他算法支持单次遍历,例如tarjan的
-
@mangusta 我的意思是我们必须为反向图创建一个新的邻接表,但是,如果我们只是按照原始图的反向拓扑顺序进行遍历,我们就不必创建反向邻接表.
-
我花了很多时间想出一个反例,但没有。我希望有人能回答这个..
标签: graph-theory depth-first-search strongly-connected-graph