我有一个网格,如图所示。到目前为止,我已经实现了以下函数作为我的启发式函数。所以这个游戏的目标是收集所有放在这个网格上的数字。起点 A。
- 曼哈顿距离,然后取它的最大值来计算启发式。
distance = abs(A_x-x_i)+abs(A_y-y_i)
if distance > manhMax:
manhMax = distance
- 所有曼哈顿距离到所放置数字的总和。(我认为这是不可接受的,因为它高估了到达目标的距离——如果我错了,请纠正我)
我的问题是,第一种方法扩展状态超出了我的需要,第二种方法是不可接受的。我目前正在实施我自己的启发式方法。
我想出了这个想法,计算从 A 到 2 再到 1 再到 3 和 0 的距离之间的距离之间的平方欧几里得距离。没有这样的顺序来收集数字。然而,问题只是欧几里得距离扩展了太多的状态,尽管它是可以接受的。你能帮我一个合适的距离或方法来完成我的任务吗?
谢谢!