演算法筆記 8 2 廣度優先搜尋BFS

2021-10-09 07:40:51 字數 654 閱讀 5489

三、相關例題

這次我們改變尋路策略,不知要找出路線,而且想知道從起點到終點的最短步數是多少(兩個相鄰節點間看作相隔一步),我們可以按如下的圖示進行寬度優先搜尋

起點a是第一層,發現從a出發能訪問到b和c,於是b、c是第二層

按順序訪問第二層,先看b。從b出發能訪問到d和e,於是d、e是第三層,等第二層訪問完要按順序訪問

繼續訪問第二層的c,從c出發能訪問到f和g,於是f、g是第三層,等第二層訪問完要按順序訪問,而且它們排在d、e之後

第二層訪問完畢,開始訪問第三層的第乙個結點d,第四層加入h、i、j

繼續訪問第三層的e,第四層加入k、l、m

繼續訪問第三層的f,發現f是死胡同,不管他

訪問第三層最後乙個點g,發現g是出口,演算法結束,後面第四層的結點可以不管了

按照上述分析過程,可以看出層數就是從a出發到達相應點的步數,所有從a到g至少要3步

注:上面一段出自《演算法**》

關鍵點有兩個:

bfs適用於找最短距離

最短距離可以被包裝成很多樣子出現在不同的題目中

演算法 廣度優先搜尋 BFS

廣度優先搜尋主要解決兩類問題 1 從a節點出發,有到b節點的路徑麼?2 從a節點出發,到b節點的最短路徑是什麼?演算法複雜度為o v e 其中v為頂點,e為邊數。例 假設你要在朋友中找乙個芒果銷售商,如果朋友中沒有,則找朋友的朋友,即人際關係網。實現的是第一類問題,在你的人際關係王忠,能找到芒果銷售...

BFS廣度優先搜尋

廣度優先搜尋,利用佇列實現,結束標誌是隊列為空的時候 承接dfs的演算法實現的講例,對於迷宮問題我們也可以採取廣度優先搜尋實現 include iostream include cstdio include cstdlib using namespace std int map 55 55 int ...

bfs廣度優先搜尋

這一課我們來學習圖的另一種遍歷方法 廣度優先搜尋 breadth first search,簡稱 bfs 這是一種連通圖的常用遍歷策略,通常用於求起點到各點的最短路徑,以及求兩點之間的最優路徑等問題。首先我們先來看看廣度優先搜尋的具體方法吧 對於乙個連通圖,我們假設一開始所有頂點均未被訪問,廣度優先...