簡體   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