繁体   English   中英

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

[英]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值,我们可以遍历不包含sc顶点的所有边,对于边(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) ,以使E1ABE2DE并且它们不共享任何顶点。 后者可以在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM