Wikipedia listing for A* search州:
换句话说,如果保证解决方案存在,或者如果算法被调整以便仅在新的节点具有较低的节点时将新节点添加到开放集中,则可以省略闭合集(产生树搜索算法)。 f 值比之前的任何迭代值都要多。
然而,在这样做的过程中,我发现我在其他功能性的A *搜索实现中收到了错误的结果。有人可以说明如何进行这种修改吗?
答案 0 :(得分:0)
确保您的启发式符合以下条件:
h(x)< = d(x,y)+ h(y)
这意味着您的启发式功能不应高估从当前位置到目的地或目标的费用。
例如,如果您在网格中并且尝试从A到B,则此网格上的两个点都是。一个好的启发函数是当前位置和目标之间的欧几里德距离:
h(x)= sqrt [(crtX -goalX)^ 2 +(crtY -goalY)^ 2]
由于三角不等式,这种启发式并没有过高估计。
有关三角不等式的更多信息:http://en.wikipedia.org/wiki/Triangle_inequality
关于欧几里德距离的更多信息:http://mathworld.wolfram.com/Distance.html