2013-10-23 80 views
1

我有這樣如何使用bfs在未加權圖上實現多源最短路徑?

000000000 
0AAA00000 
0AA000000 
0AAA00000 
000000000 
000000000 
000000B00 
00000BBB0 
00000BBBB 

現在怎麼辦,我覺得從A的最短路徑使用BFS到B網格?在A和A之間旅行的成本是0,A-0或0-B或0-0是1。 我曾嘗試在每個A上單獨應用bfs,並採取了最低限度的。但這似乎並不奏效。有沒有其他的方法。

+0

你可以從任何'A'開始,對吧? – svs

+0

到目前爲止你做了什麼? – rendon

+0

嘗試從每個'A'開始使用Dijkstra算法。如果你有問題來實現算法回來。 – rendon

回答

4

BFS會沒事的。首先,通過網格中的A的所有位置初始化隊列。每次,你在隊列前面彈出一個位置,同時推動所有可以達到1步的位置,並且還沒有被訪問過。你第一次訪問B時,你得到了從A到B的最短路徑。