【问题标题】:Better A* Search Heuristic in a 2-d grid world二维网格世界中更好的 A* 搜索启发式
【发布时间】:2015-04-20 14:04:27
【问题描述】:

我对 A* 搜索的想法还是很陌生。我了解 A* 搜索的一些启发式方法,例如直线距离(欧几里得距离)、曼哈顿距离和错位瓷砖(适用于 8 益智游戏)。

对于二维网格世界, 哪个比直线距离更适合启发式。我对曼哈顿距离有想法。还有什么建议吗?

【问题讨论】:

  • 希望你知道启发式是什么意思...
  • @eliasah 我知道一点。我还在学习中
  • 那么您应该从这里开始:en.wikipedia.org/wiki/Heuristic_(computer_science)。一旦您了解启发式方法是什么,您可能会单独找出问题的答案! :)
  • 这取决于角色如何移动。如果不允许对角线移动,那么两点之间的距离就是曼哈顿距离。如果对角线移动是可能的,那就是切比雪夫距离。
  • @ColonelThirtyTwo 所以你是说如果不允许对角线移动,曼哈顿距离会比直线距离好?

标签: a-star heuristics


【解决方案1】:

使用 A* 时,启发式必须具备两个属性,以使搜索达到最优(找到最佳解决方案)。

  • 启发式必须是可接受的
  • 启发式必须是单调的

实际上,很难提出非单调(也称为不一致)启发式,所以让我们坚持第一个要求。

如果从不高估两个节点(在本例中为点)之间的距离,则启发式是可接受的。因此,如果允许对角线运动,曼哈顿距离启发式是可接受的 - 仅仅是因为毕达哥拉斯定理(两个catheti的组合长度比对角的平方根长),所以在这个如果直线距离启发式更好 - 因为它是可以接受的。

但是,如果在 2D 网格中不允许对角线移动,那么两种启发式都是可以接受的,因为两者都不会高估距离,但是曼哈顿距离启发式是首选,因为它可以做出更好的估计,即更接近实际距离的估计.

【讨论】:

    【解决方案2】:

    使用与允许移动一致的启发式方法:

    • 对于 4 方向,使用曼哈顿距离 (L1)
    • 对于 8 方向,使用切比雪夫距离 (L-Infinity)
    • 对于任何方向,您可以使用欧几里得距离,但替代地图表示可能更好(例如使用航点)

    Amit Patel 为这个主题制作了出色的参考资料。有关 A* 的介绍,请参见他在 RedBlobGames.com 的页面,并在斯坦福大学的 Game Programming Page 上查看他的页面,了解几种网格世界启发式方法的描述。他的斯坦福页面还描述了几种在不需要最优性时减小开放集大小的方法。

    还有 A* 的扩展,以利用具有恒定移动成本的网格中的对称性。 Daniel Harabor 在他的博士论文中介绍了两个——跳跃点搜索(JPS)和矩形对称减少(RSR)。他在AiGameDev.com 上发布的一篇文章中描述了这些内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-11
      • 2021-02-11
      • 1970-01-01
      • 2014-03-04
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多