(所有电路板都以每个角落的点开头)
如果我有这样的pacman板
*--------------------*
----------------------
----------------------
----------------------
----------------------
----------------------
----------------------
P--------------------*
----------------------
让他吃掉所有点(*
)最好的启发法是什么?
我正在使用A *搜索。我曾尝试过使用曼哈顿距离,但是一旦墙壁被扔进混合物中,它就无法达到与BFS相同的效果,因此不是最佳选择。我正在寻找它是最佳的,同时扩展更少的节点然后BFS。
答案 0 :(得分:0)
好的,我找到了解决方案:
(到最远角落的最大(x,y)距离
childXY =州[0] cornersLeft = state [1]
maxDistance = 10000
minDistance = 0
farthestCorner = 0
nearestCorner = 0
for corner in cornersLeft:
if util.manhattanDistance(childXY, corner) > minDistance:
minDistance = util.manhattanDistance(childXY, corner)
farthestCorner = minDistance - min((childXY[0]-corner[0]),(childXY[1]-corner[1]))
heuristic = farthestCorner
print "heuristic is: ", heuristic
return heuristic
我的A *搜索出现问题,最终导致我的启发式主要问题无效。