簡體   English   中英

為什么BFS O(V + E)的復雜性代替O(V * E)?

[英]Why is the complexity of BFS O(V+E) instead of O(V*E)?

這里有一些偽代碼(無視我的風格)

從v1開始(入隊):

function BFS(queue Q)
  v2 = dequeue Q
  enqueue all unvisited connected nodes of v2 into Q
  BFS(Q)
end // maybe minor problems here

由於圖中有V個頂點,並且這些V頂點連接到E邊,並且訪問連接節點(相當於訪問連接邊)是在內部循環中(外部循環是遞歸本身),在我看來復雜性應該是O(V * E)而不是O(V + E)。 有人能為我解釋一下嗎?

E不是與每個頂點相鄰的邊數 - 實際上是圖中邊的總數。 以這種方式定義它很有用,因為您不必在每個頂點上具有相同數量的邊。

由於在DFS結束時每個邊都被訪問過一次,因此從該部分獲得O(E)復雜度。 然后添加O(V)以訪問每個頂點一次並獲得總計O(V + E)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM