【发布时间】:2014-05-14 20:53:59
【问题描述】:
我有一种方法可以在有向图中找到循环。
给定一个有向图 G = (V, E),假设 G 中有一个顶点 w,使得存在一条从 w 到图中所有其他顶点的路径。考虑以下方法来查找图中的循环。使用顶点 w 作为源在 G 上运行 BFS。如果我们两次遇到另一个顶点,我们就声称我们找到了一个循环。如果我们每个顶点只遇到一次,我们就声称 G 中不存在环。
问题是:如果我使用这种方法,我总是能得到正确的答案吗?
【问题讨论】:
我有一种方法可以在有向图中找到循环。
给定一个有向图 G = (V, E),假设 G 中有一个顶点 w,使得存在一条从 w 到图中所有其他顶点的路径。考虑以下方法来查找图中的循环。使用顶点 w 作为源在 G 上运行 BFS。如果我们两次遇到另一个顶点,我们就声称我们找到了一个循环。如果我们每个顶点只遇到一次,我们就声称 G 中不存在环。
问题是:如果我使用这种方法,我总是能得到正确的答案吗?
【问题讨论】:
这并不总是有效。考虑这个简单的图表:
A -> B
\ |
\ v
> C
这里,有一条从 A 到图中每个节点的路径。但是,在 BFS 期间,您会发现节点 C 两次——一次来自 A,一次来自 B,并且会错误地报告存在循环。
希望这会有所帮助!
【讨论】: