關於廣/寬度優先搜索
阿新 • • 發佈:2019-02-01
ron tro 寬度 tac color void 搜索 不同 廣度優先搜索
嗯...
BFS是圖的搜索算法之一,與深度優先搜索不同的是:廣度優先搜索會先搜索到與起始點距離較近的點,而深搜卻是沿著一個分支遞歸到最後....
與深搜的對比:
深搜用棧(stack)來實現:
1.把起始頂點壓入棧中
2.每次從棧頂取出一個頂點,搜索所有它的未訪問相鄰頂點,把這些頂點壓入棧中
3.重復執行第二步操作,直到找到所要找的站的頂點貨著棧為空時結束程序
廣搜用隊列(queue)來實現:
1.把起始頂點放到隊列中
2.每次從隊首取出一個頂點,查看這個頂點所有的未訪問相鄰頂點,把它們那放到隊尾
BFS的一般寫法:
1 void bfs(起始點){ 2 將起始點放入隊列中;3 while (如果隊列不為空){ 4 訪問隊列中隊首元素x; 5 刪除隊首元素; 6 for (x 所有相鄰點){ 7 if (該點未被訪問過且合法){ 8 將該點加入隊列末尾; 9 } 10 } 11 } 12 隊列為空,廣搜結束; 13 }
嗯.....那就先說到這吧....
關於廣/寬度優先搜索