我知道Dijkstra的算法,Floyd-Warshall算法和Bellman-Ford算法,用於查找圖中2個頂點之間的最陡峭路徑。是BFS最佳搜索算法嗎?
但是,當所有的邊具有相同的成本時,最便宜的路徑是邊數最少的路徑?我對嗎?沒有理由實施Dijkstra或Floyd-Warshall,最好的算法是從源頭開始的廣度優先搜索,直到達到目標爲止?在最壞的情況下,你將不得不遍歷所有的頂點,所以複雜度是O(V)?沒有更好的解決方案?我對嗎?
但是互聯網上有很多文章談論網格中有障礙物的最短路徑,他們提到Dijkstra或A *。即使在StackOverfow - Algorithm to find the shortest path, with obstacles 或這裏http://qiao.github.io/PathFinding.js/visual/
那麼,所有這些人都是愚蠢的嗎?還是我愚蠢?爲什麼他們向初學者推薦如Dijkstra這樣複雜的東西,他們只是想將敵人移動到常規網格中的主角上?這就像有人詢問如何在列表中找到最小數字一樣,並且建議他實施堆排序,然後從排序的數組中獲取第一個元素。
A *使用啓發式更快地到達目標,因此它比BFS更快。 Dijkstra's沒有,所以我不確定你爲什麼會在這裏使用Dijkstra的算法。 – Mehrdad 2013-04-27 07:31:34