我知道有算法找到兩點之間的最短路徑,例如,在How to calculate the shortest path between two points in a grid中回答的算法。但是,現在,我有一個N * M
網格,其中行從0到N-1,列從0到M-1,其中每個網格包含障礙物(或者您可以認爲它是兩個網格之間的距離)。例如,下面我有一個4×4格:找到網格上一個點和一行之間的最短路徑
5 7 8 2
2 7 4 3
6 4 3 2
5 7 2 5
而且我想找到(0, 0)
和(X, 3)
,其中X
可以是任意數量的左上角和底部行,即之間的最短距離從0到3.
我可以找到(0, 0) -> (0, 3)
到(0, 0) -> (3, 3)
之間的每條最短路徑,但這可能太慢了。這個問題是否有更有效的算法/方法?
這比循環遍歷底部行中的每個網格要高效得多。謝謝!編輯:只需在距離頂部行的任何節點0距離的頂部添加另一個節點... – Jamie