1. 程式人生 > >關於廣/寬度優先搜索

關於廣/寬度優先搜索

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 }

嗯.....那就先說到這吧....

關於廣/寬度優先搜索