[英]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.