【问题标题】:If the A* algorithm explores more than one path, how do you choose the best one?如果 A* 算法探索不止一条路径,你如何选择最好的一条?
【发布时间】:2016-07-14 17:51:57
【问题描述】:

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

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

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

【问题讨论】:

  • A* 算法已经选择了最好(最便宜)的路径。您的实现可能不正确。
  • @itsme86 不完整,而是
  • 是的,对不起。不完整。我发现此页面 (policyalmanac.org/games/aStarTutorial.htm) 在前段时间实现我自己的 A* 算法时非常有用。
  • @itsme86 以“那么我们如何确定路径?”开头的段落似乎回答了我的问题。谢谢!顺便说一句:您可能想发布要点作为答案,以便我接受它
  • 什么是“非直达路线”?在 A* 中(就像在大多数寻路算法中一样),您知道每个访问节点的来源......您似乎暗示该路径将包括所有访问节点 - 为什么?

标签: c# algorithm performance path-finding


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2012-02-06
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多