廣度優先搜尋(BFS)

2021-10-22 23:54:27 字數 932 閱讀 8458

廣度優先搜尋一般使用佇列實現

對於需要計算樹高度(層數):可通過先計算佇列內元素個數,每次迴圈完一波計算過個數的元素,層數加一計算。

典型例題:

有乙份大小為 n x n 的『地圖』(網格) grid,上面的每個『區域』(單元格)都用 0 和 1 標記好了。其中 0 代表海洋,1 代表陸地,你知道距離陸地區域最遠的海洋區域是是哪乙個嗎?請返回該海洋區域到離它最近的陸地區域的距離。

我們這裡說的距離是『曼哈頓距離』( manhattan distance):(x0, y0) 和 (x1, y1) 這兩個區域之間的距離是 |x0 - x1| + |y0 - y1| 。

解法:

import numpy as np

class solution:

def maxdistance(self, grid: list[list[int]]) -> int:

gridlen=len(grid)

queue=

for i in range(gridlen):

for j in range(gridlen):

if grid[i][j]==1:

if queue== or len(queue)==gridlen*gridlen:

return -1

deepth=-1

while queue:

deepth+=1

n=len(queue)

for z in range(n):

i,j=queue.pop(0)

for x,y in [(i-1,j),(i+1,j),(i,j-1),(i,j+1)]:

if x>=0 and x=0 and yif grid[x][y]==0:

grid[x][y]=2

return deepth

BFS廣度優先搜尋

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

bfs廣度優先搜尋

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

廣度優先搜尋bfs

bfs即廣度優先搜尋演算法,其是搜尋演算法中的一種。1.dfs常用於尋找是否存在解 其從a節點出發,選取乙個臨近點b,然後不斷深入,在搜尋完b的下屬節點 ehif 後,回到a再搜尋臨近a的c節點,以此類推。2.bfs則用於在最短的時間或最少的移動距離內找到解 其往往從a節點出發,搜尋周圍所有的圍繞節...