演算法筆記dfs,bfs - w3c學習教程
文章推薦指數: 80 %
演算法筆記dfs,bfs,深度優先和廣度優先dfs bfs 是最常用的兩種搜尋方法,在各類演算法競賽中也是頻頻出現, 可參見2017藍橋杯的前4題均是搜尋題,所以.
演算法筆記dfs,bfs
2021-10-0302:38:58字數2212閱讀2132
深度優先和廣度優先‘(dfs、bfs)是最常用的兩種搜尋方法,在各類演算法競賽中也是頻頻出現,(可參見2017藍橋杯的前4題均是搜尋題),所以掌握兩種搜尋的適用場合和使用方法是很有必要的。
適用場合:
bfs:常用在搜尋最短路徑的情景,一旦搜尋到可以結束,因為其深度一定是最短的。
dfs也可以但是就必須全部搜尋完才能判定最短的路徑。
dfs:所需要維護的空間少,這個跟其每次只需要維護一個方向的記錄有關。
使用方法:
(即使用的資料結構和儲存方式)
bfs:佇列
dfs:棧
具體見題目:
圍棋遊戲:對於給定的二維陣列,其中只有’x’和’o’,現在需要將其中被包圍的’o’替換成’x’。
(在邊緣的不算被包圍)
所以我們要找到矩陣邊緣的’o’,並以此為根找到與之相通的’o’,這些是不被包圍的,那麼剩下的就需要進行替換。
思路一:bfs
publicclasspos
}publicvoidsolve(charboard)}}
for(inti=0;i
這樣可以保證搜尋是一層一層的。
思路二:dfs
classsolution
}publicvoidsolve(charboard)}}
for(inti=0;i
彈出的時機:如果上下左右都搜尋不到,本次搜尋結束,彈出stack。
與bfs不同,bfs是每次都會彈出隊首,因為以後不會用到這個點了。
最後,還有一種遞迴的方法,其實也是dfs的一種,但是用的是遞迴函式。
publicvoidsolve(charboard)}}
for(inti=0;i
延伸文章資訊
- 1演算法筆記之DFS與BFS - w3c菜鳥教程
演算法筆記之DFS與BFS,基本思想深度優先搜尋dfs depth first search 它從某個狀態開始,不斷的轉移狀態直到無法轉移狀態,然後回退到前一步的狀.
- 2Tree - 演算法筆記
演算法請自行參考程式碼,時間複雜度是兩次DFS 的時間。 bool adj[9][9]; // adjacency matrix ...
- 3演算法筆記dfs,bfs - w3c學習教程
演算法筆記dfs,bfs,深度優先和廣度優先dfs bfs 是最常用的兩種搜尋方法,在各類演算法競賽中也是頻頻出現, 可參見2017藍橋杯的前4題均是搜尋題,所以.
- 42020資訊之芽—最短路徑(Shortest Path) | Peienwu 演算法筆記
... 因此會利用暑假把2020的東西也補一補! 課程內容路徑與權重$G=(V,E)$ 尋找最短路徑權重和最小無帶權:BFS直接做(or DFS) 有帶權最短路徑.
- 5Depth-first search 深度優先搜尋法
Depth-first search (DFS) is an algorithm for traversing or searching a tree, ... 樹是圖的一種特例,關於樹與圖請參...