各種圖搜尋之間的區別,體現為邊分類結果的不同,以及所得遍歷樹(森林)的結構差異。其決定因素在於,搜尋過程中的每一步迭代,將依照何種策略來選取下一接受訪問的頂點。
廣度優先搜尋的策略是,越早訪問的頂點,其鄰居優先被選用。
bfs,借助佇列q,來儲存已被發現,但尚未訪問完畢的頂點。因此,任何頂點在進入該佇列的同時,都被隨即標記為discovered(已被發現)的狀態。
bfs的每一步迭代,都是先從佇列中取出首頂點v,在處理相鄰的節點u;最後將頂點v設定為visited(訪問完畢)。
若頂點u尚處於undiscovered(未被發現)狀態,則令其轉換為discovered狀態,並隨即加入佇列q中,如每發現的這樣的u,那就可以認為v到u可以拓展,那麼(v,u)就是一條樹邊(tree edge)。
如果發現的u為discovered或者是visited的狀態,則(v,u)就不屬於遍歷樹,將它歸為跨邊(cross edge)。
bfs將會到達頂點s所屬的連通分量或者可達分量,但在過程中如發現某一頂點尚未發現,則就說明此所屬的連通分量或者可達分量為觸及,這時候就要從此頂點出發再一次啟動bfs,各次bfs呼叫所得的bfs樹構成乙個森林,稱作bfs森林(bfs forest)。
空間複雜度為
總體的時間複雜度為
搜尋 廣度優先搜尋
廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...
廣度優先搜尋
include include include include using namespace std struct node 圖頂點結構定義 typedef struct node graph 圖形的結構新型態 struct node head 9 圖形頂點陣列 int visited 9 遍歷標...
廣度優先搜尋
廣度優先搜尋詳解 1.也稱寬度優先搜尋,顧名思義,就是將一棵樹一層一層往下搜。演算法首先搜尋和s距離為k的所有頂點,然後再去搜尋和s距離為k l的其他頂點。bfs是一種完備策略,即只要問題有解,它就一定可以找到解。並且,廣度優先搜尋找到的解,還一定是路徑最短的解。但是它盲目性較大,尤其是當目標節點距...