【发布时间】:2019-11-05 09:50:39
【问题描述】:
我有一个如图所示的网格。到目前为止,我已经实现了以下函数作为我的启发式函数。所以这个游戏的目标是收集所有放在这个网格上的数字。起点A。
- 曼哈顿距离,然后取其中的最大值来计算启发式。
distance = abs(A_x-x_i)+abs(A_y-y_i)
if distance > manhMax:
manhMax = distance
- 所有曼哈顿距离与所放置数字的总和。 (我认为这是不可接受的,因为它高估了到达目标的距离——如果我错了,请纠正我)
我的问题是,第一种方法扩展状态超出了我的需要,第二种方法是不可接受的。我目前正在实施我自己的启发式方法。
我想出了这个主意,计算从 A 到 2 再到 1 再到 3 和 0 的距离之间的距离之间的平方欧几里得距离。没有这样的顺序来收集数字。然而,问题只是欧几里得距离扩展了太多的状态,尽管它是可以接受的。你能帮我一个合适的距离或方法来完成我的任务吗?
谢谢!
【问题讨论】:
-
可接受的启发式算法永远不会高估到达目标(收集所有硬币)的距离(每个区块 1)
-
其实这和旅行商问题(tsp)密切相关。我建议查看一些关于 tsp 和他们使用的启发式的文献。
标签: python artificial-intelligence heuristics planning