我需要编写一个JavaScript算法来找到2个坐标之间的最短路径。我已经研究过使用一些路径寻找算法,例如A *算法。
然而,我的应用程序的不同之处在于我知道路径可以采用的所有坐标。
例如,在下图中,绿色正方形将是起始位置,红色正方形是最终位置。由每个黑色方块表示的co-ord将存储在一个数组(或其他数据结构)中。
所以我需要从绿色方块到红色方块的最短路径,但它只能通过一个黑色方块到达那里。我还会使用A *算法来实现吗?
答案 0 :(得分:2)
是的,你可以使用A *。您可以计算从每个黑色坐标到红色方块的距离(移动次数)。然后你得到一个图形结构,从哪个方形到你可以移动的方格和该图形中的每个节点都有存储到红色方块的距离。然后将A *应用于该图并获得最短路径。
修改强>
对于A *,您需要一个启发式,告诉您哪个节点更靠近端点。计算黑场和红场之间的“空中距离”为每个场提供了这种启发式算法。然后你做A *,这基本上是具有启发式的Dijkstra算法。在你的例子中,绿色和红色区域之间的空气距离,如果左上角是(x = 0,y = 0),红色是(14,7),绿色是(0,1),那么空中距离将是ABS(14 - 0)+ ABS(7 - 1)= 20.因此从坐标计算非常容易。