我有一個算法來查找有向圖的邊從頂點或者到任何其他具有O(| V | + | E |)的頂點。時間複雜性(基於DFS)。我必須開發一種算法來查找O(| V || E |)中任意兩個頂點之間的邊。查找有向圖中任意兩個頂點之間的所有邊線
你有任何建議或提示,以實現這一目標嗎?
如果我重複每個頂點的DFS-Visit,只有第一次頂點是白色的,接下來的時間這個調用將什麼也不做。 如果我在這之前重置顏色,那麼算法將是O(| V |^2 + | V || E |)。
非常感謝你提前!
我有一個算法來查找有向圖的邊從頂點或者到任何其他具有O(| V | + | E |)的頂點。時間複雜性(基於DFS)。我必須開發一種算法來查找O(| V || E |)中任意兩個頂點之間的邊。查找有向圖中任意兩個頂點之間的所有邊線
你有任何建議或提示,以實現這一目標嗎?
如果我重複每個頂點的DFS-Visit,只有第一次頂點是白色的,接下來的時間這個調用將什麼也不做。 如果我在這之前重置顏色,那麼算法將是O(| V |^2 + | V || E |)。
非常感謝你提前!
拆分成子問題的問題,在這裏你可以使用你的算法來達到所需的複雜性,具體如下:
的複雜性將是:
步驟1是O(V+E)
- DFS。
步驟2:
i
的複雜性是O(V_i^2 + V_i*E_i)
i
:E_i >= V_i -1
(否則它不是 連接,樹有|V|-1
邊緣),O(ViEi + Vi^2) = O(ViEi)
。O(V1E1 + V2E2 + ... + VkEk)
。注意,對於每個i
E_i <= E
,因此複雜性是不 差那麼:
O(V1E + V2E + ... + VkE) = O(E *(V1+V2+ ... + Vk)) = O(VE)
因此,總的複雜度爲O(VE)
,根據需要。
非常感謝!這是完美的! :) – Stratford
我想「任何到頂點」應該是「任何兩個頂點」? – 2013-08-06 12:32:10
是的,它被編輯。謝謝@ H2CO3! :) – Stratford
你在尋找最短的路徑嗎?所有非循環路徑的集合? – Michelle