
【計】 breadth-first
breadth; width
【醫】 width
preference; priority; first; precedence; precession
【經】 priority
在計算機科學與算法設計領域,"寬度優先"(Breadth-First)是一種重要的遍曆或搜索策略,其核心原則是優先處理當前層級的所有相鄰節點,再進入下一層級。以下是基于權威來源的詳細解釋:
寬度優先指在遍曆樹(Tree)或圖(Graph)結構時,從根節點(或起始節點)開始,按層級逐層向外擴展訪問。具體表現為:
來源:《算法導論》(Thomas H. Cormen 等)
英文對應術語為"Breadth-First",其标準定義為:
"An algorithm that explores all neighbor nodes at the present depth prior to moving on to nodes at the next depth level."
(一種在進入下一深度層級前,優先探索當前深度所有相鄰節點的算法。)
來源:IEEE Standard Glossary of Software Engineering Terminology
實現方式
使用隊列(Queue) 數據結構:
關鍵特性
典型應用場景
來源:GeeksforGeeks "Breadth-First Traversal for a Graph"
特性 | 寬度優先(BFS) | 深度優先(DFS) |
---|---|---|
遍曆順序 | 層級優先(橫向擴展) | 分支優先(縱向深入) |
數據結構 | 隊列(FIFO) | 棧(LIFO) |
空間複雜度 | $O(b^d)$(b為分支因子) | $O(bm)$(m為最大深度) |
適用問題 | 最短路徑、連通分量 | 拓撲排序、回溯問題 |
來源:Oxford Dictionary of Computer Science
寬度優先(Breadth-First,通常指寬度優先搜索,Breadth-First Search,簡稱BFS)是一種用于遍曆或搜索圖、樹等數據結構的算法策略。其核心思想是按層次逐層擴展,先訪問離起點最近的節點,再依次處理下一層節點。以下是詳細解釋:
特性 | BFS | DFS |
---|---|---|
數據結構 | 隊列 | 棧 |
路徑性質 | 最短路徑(無權圖) | 可能非最短 |
空間消耗 | 較高(需存每層節點) | 較低(存單條路徑) |
適用場景 | 目标節點較淺或需最短路徑 | 目标節點較深或需遍曆所有可能 |
以樹結構為例,BFS遍曆順序為:
根節點 → 所有子節點 → 子節點的子節點 → 依此類推。
例如,對二叉樹:
A
/
B C
/
D E F
BFS輸出順序為:A → B → C → D → E → F。
寬度優先搜索通過逐層擴展确保找到最短路徑,適合對路徑長度敏感的場景,但需權衡其較高的内存消耗。在算法選擇時,需根據問題需求(如解深度、空間限制)決定使用BFS還是DFS。
【别人正在浏覽】