如果 A* 算法探索了不止一条路径,你如何选择最好的一条?

If the A* algorithm explores more than one path, how do you choose the best one?

我一直在研究 A* 寻路算法的 C# 实现,现在我已经设法让它找到从起点到目的地的路径,我想知道如何才能选择最好的小路。

澄清一下,如果我让程序找到一条从黄色边框的方块到绿色边框的方块(深灰色方块不能穿过)的路线,程序会将所有红色方块添加到它的 'closed' 数组。

如您所见,这不是直达路线。我如何从封闭数组中获取实际路径?顺便说一句,我禁用了对角线移动。

我做A*已经有一段时间了,但如果我没记错的话,你可以向后追溯,从最后开始,沿着最短距离的路径。

因此,如果此网格上的数字表示到黄色方块的距离,则可以找到最短路径,方法是从绿色方块(距离 12)开始,并不断移动到距离最短的邻居,直到到达黄色方块广场.

所以你会去 12 -> 11 -> 10 -> 9 ... -> 0