廣度優先搜尋(BFS)是一種用於圖或樹數據結構的搜尋算法。
廣度優先搜尋從圖的起始節點開始,逐層遍歷圖中的節點,直到找到目標節點或遍歷完整張圖。這種算法主要用於解決在圖中尋找最短路徑或最少步驟達到目標節點的問題,廣泛套用於迷宮求解、網路路由、社交網路關係查找等領域。
廣度優先搜尋的核心思想是先訪問起始節點,然後訪問起始節點的所有鄰居節點,接著再訪問這些鄰居節點的鄰居節點,以此類推。為了實現逐層遍歷,通常使用佇列來保存待訪問的節點。與深度優先搜尋不同,廣度優先搜尋會先探索離起始節點較近的節點,再探索較遠的節點。
廣度優先搜尋具有完全性,意味著只要存在通往目標節點的路徑,該算法一定能找到;若目標不存在,且圖為無限大,則BFS不會結束。此外,如果圖中所有邊的長度相等,廣度優先搜尋能找到的是距離起始節點最短的解。