【问题标题】:What are some good methods to finding a heuristic for the A* algorithm?有哪些好方法可以为 A* 算法找到启发式方法?
【发布时间】:2011-08-06 23:16:46
【问题描述】:

您有一张方形瓷砖地图,您可以在其中向 8 个方向中的任何一个方向移动。假设你有一个名为cost(tile1, tile2) 的函数,它告诉你从一个相邻的瓦片移动到另一个瓦片的成本,你如何找到一个既可接受又一致的启发式函数 h(y, goal)?在给定此设置的情况下,是否可以推广查找启发式的方法,还是会根据 cost 函数而有所不同?

【问题讨论】:

    标签: algorithm graph heuristics shortest-path a-star


    【解决方案1】:

    Amit 的教程是我在 A* (Amit's page) 上看到的最好的教程之一。您应该在此页面上找到一些关于启发式的非常有用的提示。

    这是关于您的问题的报价:

    在允许 8 个移动方向的方形网格上,使用对角距离 (L∞)。

    【讨论】:

    • 这仍然取决于您移动到相邻方格的成本函数。
    【解决方案2】:

    这取决于成本函数。

    有几种常见的启发式方法,例如Euclidean distance(二维平面上两个图块之间的绝对距离)和Manhattan distance(绝对 x 和 y 增量之和)。但是这些假设实际成本永远不会低于一定数量。如果您的代理可以有效地沿对角线移动(即移动到对角线的成本小于 2),则排除曼哈顿距离。如果移动到相邻图块的成本小于该移动的绝对距离(例如,如果相邻图块从该图块“下坡”),则排除欧几里得距离。

    编辑

    无论您的成本函数如何,您在h(t1, t2) = -∞ 中始终有一个可接受且一致的启发式。这不是一个好的。

    【讨论】:

      【解决方案3】:

      是的,启发式取决于成本函数,在几个方面。首先,它必须在相同的单位中。其次,通过实际节点的路径不可能比启发式的成本更低。

      在现实世界中,用于路网导航之类的事情,您的启发式可能是“汽车以 1.5 倍限速行驶的时间”。每个路段的成本会使用实际的限速,这样会产生更高的成本。

      那么,图块之间的成本函数是多少?它是基于物理特性,还是在图表之外定义?

      【讨论】:

      • 一个更好的启发式是“如果有一条高速公路(最高限速的道路)在通往目的地的直线上,汽车将花费的时间”。无需应用 1.5 的系数。
      猜你喜欢
      • 2011-01-08
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多