我试图找出如何为交错的等距地图实现路径查找系统时遇到问题。
我阅读了A *算法并尝试了解它如何在等距地图上显示,结果将我带到了这里。
所以问题出在这里(对于便宜的显示器我很抱歉)
所以,我现在在绿色瓷砖(2,3)上,我试图找到红色瓷砖(3,1)的路径。
基于A *算法,我尝试计算相邻瓷砖的F值(我只为这3块瓷砖做了这个)。
由于图像显示(2,1)的F值低于(2,2)并且这是所有问题的母亲,因此j + 2和j-2的对角线块每次都会(几乎) F值比“逻辑”选择
所以不是去(2,2)而是去(2,1)。
我该如何解决这个问题?有人可以给我一些关于我应该做什么的提示吗?
答案 0 :(得分:3)
根据给定的值,看起来你的H不是admissible。由于从(2,3)到(2,2)需要10,我认为从(2,2)到(3,1)需要10,但你的H说需要20(即你高估)。
一个可能的H是到目标的直接距离(像Manhattan distance或欧几里德那样)。
在我们的第一步,我们探索所有邻居。我们的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,探索它的所有(未探索的)邻居并找到最小值,这将是这种情况下的目标。
请注意,只要其中一个邻居是目标而不是我们当前正在探索的节点,就很容易停止。如果我们这样做,可接受的启发式算法并不能保证我们能够找到目标的最佳路径。