白書BFS寬度優先搜尋

2021-09-01 13:01:33 字數 1330 閱讀 5800

寬度優先搜尋演算法(又稱廣度優先搜尋)是最簡便的圖的搜尋演算法之一,這一演算法也是很多重要的圖的演算法的原型。dijkstra單源最短路徑演算法和prim最小生成樹演算法都採用了和寬度優先搜尋類似的思想。其別名又叫bfs,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說,它並不考慮結果的可能位置,徹底地搜尋整張圖,直到找到結果為止。

迷宮問題中和其他演算法來解決最短路徑問題。

假定有乙個迷宮,s為迷宮開始,e為迷宮的結束,迷宮之中「.」為通路,"#",為牆壁,給定特殊迷宮,求能出去的最短路徑。

迷宮小於100*100

輸入m,n小於100

白書的寫法:

#include #include #include #include using namespace std;

typedef pairp;

char migong[102][102];

const int inf = 10000000;

int res,n,m;

int sx,sy;

int gx,gy;

int d[1000][1000];

int dx[4] = ;int dy[4] = ;

int bfs()

} que.push(p(sx,sy));

d[sx][sy] = 0;

while(que.size())

}} return d[gx][gy];

}int main()

else if(migong[i][j] == 'e')

} }cout << sx 《個人寫法以及見解:

#include #include #include #include #include #include using namespace std;

struct node

;char map[102][102];

int map_bool[102][102];

int tx[4][4] = ;//本地方可以使用二維陣列來代替遍歷的方向,組合分別為

int sx,sy;

int ex,ey;

int m,n;

int bfs(int sx,int sy)}}

}int main()

if(map[i][j] == 'e')}}

cout << sx << sy << ex << ey

for(int i = 0; i < m; ++i)

cout << endl;

}cout << t <}

return 0;

}

寬度優先搜尋BFS

寬度優先搜尋 bfs,breadth first search 也是搜尋的手段之一。它與深度優先搜尋類似,從某個狀態出發探索所有可以到達的狀態。與深度優先搜尋的不同之處在於搜尋的順序,寬度優先搜尋總是先搜尋距離初始狀態近的狀態。也就是說,它是按照開始狀態 只需1次轉移就可以到達的所有狀態 只需2次轉...

寬度優先搜尋(BFS)

bfs,其英文全稱是breadth first search。0 1 4 2 3思路 從圖中某個節點出發,將該結點入隊,標記為已訪問。然後輸出佇列的隊首 第一次為起點 將隊首從佇列中刪除,訪問該結點的鄰接表,將未標記的相鄰結點入隊,並且標記為已訪問。接下來迴圈操作第二句話。按照上邊的圖,假設出發點為...

寬度優先搜尋bfs

好吧,今天看了bfs,其實發現基本思想也是不過如此。只是,應用還是不太會。bfs是寬度優先,從根節點開始,依次訪問它的所有鄰接點,然後再按順序訪問鄰接點的鄰接點,先被訪問的點的鄰接點先被訪問。由於要按這樣的順序訪問,所以需要用到佇列。求最短路徑和迷宮型別的題目都可以利用bfs.下面是基本步驟 1 從...