如何为吃豆人游戏实现一个可接受的启发式函数,使其能够从给定位置找到包含多个目标(所有剩余豆子)的最短路径?目前我使用的是A*搜索,启发式函数采用曼哈顿距离。我将一个节点到所有未被吃掉的豆子的曼哈顿距离之和作为H(n)。算法完成所需时间极长,我也不确定如何进行平局处理。
回答:
嗯,我猜你正在参加edX的人工智能课程。
将当前位置与每个食物颗粒之间的距离之和作为启发式函数是不合适的,因为你需要考虑到吃掉一个颗粒可能会使你更接近另一个颗粒。
根据网格的大小和其稀疏程度,你可以从吃豆人当前位置开始运行一个广度优先搜索(BFS)来找到最近的颗粒。然后,你可以使用该距离作为一个可接受的启发式函数。