4

我在试图弄清楚如何为交错等距地图实现寻路系统时遇到问题。

我阅读了 A* 算法并试图看看它在等轴测图上的表现形式,结果把我带到了这里。

所以问题就在这里(我对廉价的显示器感到抱歉)

在此处输入图像描述

所以,我目前在绿色瓷砖 (2,3) 上,我试图找到通往红色瓷砖 (3,1) 的路径。

基于 A* 算法,我尝试计算相邻图块的 F 值(我只对这 3 个图块进行了计算)。
由于图像显示 (2,1) 的 F 值低于 (2,2) 并且这是所有问题的根源,因此具有 j+2 和 j-2 的对角线图块将(几乎)每次都低于F值比“逻辑”选择。
所以不是去(2,2),而是去(2,1)。

我怎么解决这个问题?有人可以给我一些关于我应该做什么的提示吗?

4

1 回答 1

3

根据给定的值,看起来您的 H 是不可接受的。由于从 (2,3) 到 (2,2) 需要 10,我认为从 (2,2) 到 (3,1) 需要 10,但是您的 H 说需要 20(即您高估)。

一种可能的 H 是到目标的直接距离(例如曼哈顿距离或欧几里得距离)。

第一步,我们探索所有的邻居。我们的 G 值看起来像:(G= 绿色,R= 红色)

    14
  10  10
14   R  14
  10  10
G   14

让我们将 H 视为类似于曼哈顿距离的东西,其中 14 是对角线跳跃,而 10 是向直接邻居的移动。这实际上是本示例的完美启发式方法,因为它与实际距离完全相同。一旦道路上有障碍,情况就会有所不同。

然后我们得到H值:

    34
  24  30
14   R  34
  10  24
G   14

所以我们的 F 值 (= G + H) 是:

    48
  34  40
28   R  48
  20  34
G   28

然后找到最小值,即 20,探索所有(未探索的)邻居并找到最小值,这将是本例中的目标。

请注意,一旦邻居之一是目标,而不是我们当前正在探索的节点,就停止是一个简单的错误。如果我们这样做,可接受的启发式并不能保证我们会找到到达目标的最佳路径。

于 2013-10-05T15:06:27.787 回答