在有向图中找到至少有5条边的简单路径

时间:2017-11-22 12:55:02

标签: algorithm graph vertex directed-graph

我有一个问题。 给定有向图(G = V,E)和来自V组的源顶点s。 我们想检查从S到G中任何顶点是否有一条简单的路径(没有圆圈),至少有5条边。 提供尽可能高效的算法,以解决可能包含圆的图G的问题。

我需要你的帮助

谢谢: - )

1 个答案:

答案 0 :(得分:0)

我们需要找到从顶点s开始的任何5边简单有向路径。此路径如下所示:

s -> a -> b -> c -> d -> e   (all distinct)

现在让我们浏览c(除了s之外的任何顶点)的所有可能值,然后对于每个c值,我们可以遍历不包含{{1}的所有边}}和s个顶点以及边c执行以下操作:

(x, y)

这可以在if edge (s, x) exists and edge (y, c) exists put (x, y) in AB edges list if edge (c, x) exists put (x, y) in DE edges list 中完成。然后我们需要找到一对边O(|E|)(E1, E2)位于E1AB位于E2,并且它们不共享任何顶点共同。后者可以在DE中完成。

我们可以采用图O(|E|)并找到顶点的度数。然后,对于来自G' = (V, DE)的每个边(a, b),我们需要检查

AB

degree(a) + degree(b) = |DE| + x x = 1 (a, b)位于DE,否则为x = 0。如果这种相等不成立,则意味着DE中的边缘既不包含a也不包含b,我们可以遍历整个DE来找到答案。

总体复杂性为O(|V||E|)O(|E|)额外内存。