![](/img/trans.png)
[英]Why only I think the Time Complexity of Leetcode "133. Clone Graph" is O(E) instead of 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.