Amn*_*non 3 algorithm graph cycle depth-first-search
有没有办法在线性时间内找到图中简单循环一部分的所有顶点?
我在O(| V |(| V | + | E |))时间找到了一种方法,但是想知道是否有办法更快地完成它?
好吧,我想我已经有了答案。在处理 DFS 时,对于每个顶点 v 计算 low(v)(如下所述)。然后再次运行 DFS 并检查每个顶点 v:
if low(v) != d(v) (其中 d(v) 是距 DFS 树根的距离)
顶点 v 是简单循环的一部分。
*low(v) = min ( d(v),d(u),low(w)) 其中 (v,u) 是后边缘,w 是 DFS 树中 v 的子节点。计算时间为 O(|V|+|E|)。