您有一个由方形图块组成的地图,可以在8个方向中的任何一个方向上移动。假设您有一个名为cost(tile1, tile2)
的函数,该函数告诉您从一个相邻图块移动到另一个相邻图块的成本,如何找到一个既可接受又一致的启发式函数h(y, goal)?在这种情况下,是否可以推广一种方法来找到启发式函数,或者取决于cost
函数而有所不同?
您有一个由方形图块组成的地图,可以在8个方向中的任何一个方向上移动。假设您有一个名为cost(tile1, tile2)
的函数,该函数告诉您从一个相邻图块移动到另一个相邻图块的成本,如何找到一个既可接受又一致的启发式函数h(y, goal)?在这种情况下,是否可以推广一种方法来找到启发式函数,或者取决于cost
函数而有所不同?
Amit的教程是我看过的关于A*算法最好的之一。(Amit的页面)。你应该在此页面上找到一些非常有用的启发式提示。
以下是与您问题相关的引用:
在允许8个方向移动的正方形网格中,使用对角线距离(L∞)。
是的,启发式算法取决于成本函数,在几个方面上。首先,它必须处于相同的单位。其次,你不能通过实际节点获得低成本路径,而小于启发式算法的成本。
在现实世界中,比如在道路网络上导航,你的启发式算法可能是“汽车以1.5倍速度限制直接行驶所需时间”。每个道路段的成本将使用实际速度限制,这会给出更高的成本。
那么,在你的图形之间,什么是你的瓷砖成本函数?它是基于物理属性还是在图形之外定义的?