圖之 DFS 與 BFS 的復雜度分析


圖之 DFS 與 BFS 的復雜度分析

BFS 的復雜度分析。

BFS 是一種借用隊列來存儲的過程,分層查找,優先考慮距離出發點近的點。無論是在鄰接表還是鄰接矩陣中存儲,都需要借助一個輔助隊列,v 個頂點均需入隊,最壞的情況下,空間復雜度為 O(v)。

鄰接表形式存儲時,每個頂點均需搜索一次,時間復雜度 T1=O(v),從一個頂點開始搜索時,開始搜索,訪問未被訪問過的節點。最壞的情況下,每個頂點至少訪問一次,每條邊至少訪問 1 次,這是因為在搜索的過程中,若某結點向下搜索時,其子結點都訪問過了,這時候就會回退,故時間復 雜度為 O(E),算法總的時間復 度為 O(|V|+|E|)。

鄰接矩陣存儲方式時,查找每個頂點的鄰接點所需時間為 O(V),即該節點所在的該行該列。又有 n 個頂點,故算總的時間復雜度為 O(|V|^2)。

DFS 復雜度分析

DFS 算法是一一個遞歸算法,需要借助一個遞歸工作棧,故它的空問復雜度為 O(V)。

遍歷圖的過程實質上是對每個頂點查找其鄰接點的過程,其耗費的時間取決於所采用結構。

鄰接表表示時,查找所有頂點的鄰接點所需時間為 O(E),訪問頂點的鄰接點所花時間為 O(V), 此時,總的時間復雜度為 O(V+E)。

鄰接矩陣表示時,查找每個頂點的鄰接點所需時間為 O(V),要查找整個矩陣,故總的時間度為 O(V^2)。

v 為圖的頂點數,E 為邊數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM