【问题标题】:A* (a-star) issues finding shortest path - specific exampleA*(a-star)问题寻找最短路径 - 具体示例
【发布时间】:2017-12-08 06:21:59
【问题描述】:

在此示例中(请参见图片),曼哈顿启发式算法延迟了路径,因为目标块以西的不可步行块。

我的问题是如何解决这个问题?即使在找到目的地后,我是否还需要继续检查打开列表中的块(灰色块)?如果必须这样做,我不妨使用 dijkstra。如果我和明星一起去,我是否必须忍受这样的不完美,或者有解决办法吗?

我已经对其进行了研究并实现了自己的算法,该算法的工作原理与网络上的教程/文章所解释的完全一样,但我一直遇到像这样的特定实例,其中 a* 无法找到最短路径。

【问题讨论】:

    标签: path-finding a-star


    【解决方案1】:

    您的启发式需要是admissible,但不是。请改用Diagonal or Euclidean distance

    【讨论】:

    • 对角线在某些情况下会导致各种其他更严重的问题。我会发布一个例子,但首先我会看看欧几里得的票价如何。在担心性能更差之前,我从未尝试过欧几里得。在这一点上我别无选择。
    • @NathanielG.M.性能差异应该可以忽略不计,但对角启发式应该没有任何问题。如果有,则说明您的实现有问题。
    • 在少数情况下,对角线的最低 f 成本与目的地相反,在找到目的地之前要经过太多节点。尤其是在有许多走廊的地图中,它经常会走到死胡同,必须通过打开的列表来寻找替代路径。它最终会找到最短的路径,但在我看来,它总是不应该进行那么多搜索。经过进一步测试,我发现您是对的,欧几里得的性能非常好。感谢您的回答。
    • @NathanielG.M.这听起来像您错误地计算了启发式,也许您搞砸了某个变量的符号。算法不应该开始远离目标,如果它能够朝着目标移动的话。
    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多