[英]Time complexity of DFS in undirected graph
假設我們有 4 個節點,所有節點都連接到所有其他節點,我需要從 node1 到 node4 的 go。 我檢查的大多數資源的時間復雜度是O(V+E)
,但我有點困惑。
node1
|
node2 / node3 / node4 level2 3
|
node1 / node3 / node4 .................. level3 3 to power of 2
因此,如果所有節點都將被訪問,那么復雜度是 N 的 N 次方。 即使使用哈希集來跟蹤使用回溯訪問了哪些節點,它也不應該影響整體時間復雜度嗎?
如果您從每個節點訪問所有節點,復雜性不會是N N ,如果N是您的節點數,那么復雜性將是N 2 。
現在碰巧一個完整的圖(一個所有節點都連接到所有節點的圖,就像在你的例子中一樣)有許多邊|E| = O(|V| 2 ) 。 如果您不知道為什么,請注意每個節點都連接到(N - 1)個其他節點,因此確切的邊數是(N - 1) 2 = N 2 - 2N + 1 = O(N 2 ) 。
正如你所說,深度優先搜索的時間復雜度是O(|V| + |E|) 。 在大 O 表示法中,這與O(max(|V|, |E|))相同,因為只有主導項才重要。 所以對於我們的完整圖, |E| 占主導地位,復雜性僅為O(|E|) 。
正如我們之前所說, |E| = O(|V| 2 ) ,所以我們的復雜度是O(|E|) = O(|V| 2 ) 。
這是否為您的困惑提供了一些清晰的信息?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.