1. 程式人生 > 其它 >C++-BFS 廣搜的含義

C++-BFS 廣搜的含義

【Horn Studio】程式設計專欄: BFS

BFS,其英文全稱是Breadth First Search。 BFS並不使用經驗法則演算法。從演算法的觀點,所有因為展開節點而得到的子節點都會被加進一個先進先出的佇列中。

寬度優先搜尋演算法(又稱廣度優先搜尋)是最簡便的圖的搜尋演算法之一,這一演算法也是很多重要的圖的演算法的原型。Dijkstra單源最短路徑演算法和Prim最小生成樹演算法都採用了和寬度優先搜尋類似的思想。其別名又叫BFS,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說,它並不考慮結果的可能位置,徹底地搜尋整張圖,直到找到結果為止。

 

 (來源於 Baidu  Baike)

廣度搜索的判斷重複如果直接判斷十分耗時,我們一般藉助雜湊表來優化時間複雜度。

在證明寬度優先搜尋的各種性質之前,我們先做一些相對簡單的工作 ——分析演算法上的執行時間。在初始化後,再沒有任何結點又被置為白色。由此可見,寬度優先搜尋的執行時間是圖的鄰接表大小的一個線性函式,十分入門,卻又十分難以精通。