bfs算法即廣度優先搜尋(Breadth-First Search)算法,是一種用於遍歷或搜尋樹或圖的算法。該算法從根節點(或任意一個節點)開始,訪問最靠近根節點的所有鄰居節點,然後再依次訪問這些鄰居節點的未訪問過的鄰居節點,直到所有節點都被訪問過。這種算法使用了一個佇列來保存待訪問的節點,因此也被稱為寬度優先搜尋。
bfs算法的核心思想是利用佇列先進先出的特性,逐層訪問圖的節點,直到找到目標節點或者遍歷完整個圖。在搜尋過程中,算法會標記已經訪問過的節點,以避免重複訪問。同時,由於佇列的先進先出特性,bfs算法會首先訪問離起始節點最近的節點,因此常用於求解最短路徑、連通性檢測等問題。
在實際套用中,bfs算法可以被用於解決許多與圖相關的問題,如網路爬蟲、地圖導航等。此外,該算法也是許多其他重要圖算法的基礎,如Dijkstra單源最短路徑算法和Prim最小生成樹算法等。