![](/img/trans.png)
[英]Algorithm to find a path that visits every vertex in a directed graph AT LEAST once
[英]Find the simple path with at least 5 edges in directed graph
我有个问题。 给定一个有向图(G = V,E)和V组的源顶点s。 我们要检查从s到G中至少有5条边的任何顶点是否存在简单路径(无圆)。 提供尽可能有效的算法,以解决可能包含圆的图形G的问题。
拜托我需要你的帮忙
谢谢 :-)
我们需要找到从顶点s
开始的任何5边简单有向路径。 此路径如下所示:
s -> a -> b -> c -> d -> e (all distinct)
现在让我们遍历c
的所有可能值(除s
之外s
任何顶点),然后对于每个c
值,我们可以遍历不包含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)
,以使E1
在AB
, E2
在DE
并且它们不共享任何顶点。 后者可以在O(|E|)
。
我们可以取一个G' = (V, DE)
并找到顶点的度数。 然后对于AB
每个边(a, b)
,我们需要检查
degree(a) + degree(b) = |DE| + x
其中x = 1
,如果(a, b)
是在DE
,否则x = 0
。 如果不成立此等式,则意味着DE
中有a
既不包含a
也不包含b
,我们可以遍历整个DE
来找到答案。
加上O(|E|)
附加内存,总体复杂度将为O(|V||E|)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.