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

标签 c# algorithm performance path-finding

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

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

enter image description here

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

最佳答案

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

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

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

关于c# - 如果 A* 算法探索了不止一条路径,你如何选择最好的一条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38380987/

相关文章:

c# - 在 .NET MVC 5 中使用硬编码值填充下拉列表

C# - 朝鲜语编码

c# - 使用 ToObject 方法反序列化 Json 会产生默认属性值

c++ - 3个顶点之间的角度

java - 通过删除总和不为 17 的连续数字对来计算删除的数字

安卓 O : PHONE_STATE broadcast limitation

c# - 托管 DirectX/SharpDX/SlimDX 在没有安装程序的情况下工作?

Swift 广度优先搜索

c++ - 如何在进入循环之前选择在嵌套循环内调用的函数?

c# - 为什么 Func<> 委托(delegate)这么慢