【问题标题】:Admissible Heuristic Modification可接受的启发式修改
【发布时间】:2020-05-31 19:03:36
【问题描述】:

我目前正在从事一个涉及谜题和各种寻路算法的项目。拼图使用二维数组表示,并具有特定的形状因子。二维数组中的每个单元格都有一个跳跃值,即您可以从单元格向上、向下、向左或向右移动的空格数。

我目前正在对这个谜题实施 A* 搜索。我正在考虑使用曼哈顿距离作为这个问题的可接受启发式,但我认为传统的曼哈顿距离不会起作用,因为移动仅限于特定数量的移动。

例如:

2   2   2   1   1
1   1   1   2   2
3   1   2   1   1
3   1   2   1   1
2   1   1   1   0

是一个可能的网格。您从左上角单元格中的2 开始,并试图到达右下角单元格中的0。从起始单元格中,您可以向右移动两个或向下 2 到具有不同跳转值的新空间。如果谜题可解,则此过程重复直到达到目标。

如何修改曼哈顿距离abs(x1-x2) + abs(y1-y2) 以包含移动特定数量的空格?

【问题讨论】:

    标签: algorithm artificial-intelligence path-finding a-star


    【解决方案1】:

    正如您所观察到的,曼哈顿距离不是admissible heuristic,例如从P = (3,2)开始你有:

    Manhattan(P, Target) = abs(3 - 4) + abs(2 - 4) = 1 + 2 = 3
    

    真实距离只是2

    一个可接受的启发式是:

    h(P) = (P_x != Target_x) + (P_y != Target_y)
    

    在哪里

               | 1    if x == y
    (x != y) = |
               | 0    otherwise
    

    这是有效的,因为对于 current-position-vector 中与目标向量中的相应组件不匹配的每个组件,您必须至少采取1 移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多