A算法由
f(n)=g(n)+h(n)
俩个因素决定,
g(n)
是这一步的代价函数,
h(n)
是这一步的预估函数;
对于A*算法来说,评判函数也是
f(n)=g∗(n)+h∗(n)
这个,只不过加了约束条件,
g∗(n)
>0,
h∗(n)<=任意h(n)
;
以上只不过是定义,对于一个实例来说,
h(n)
由很多种,
h(n)
只是估值函数的一个集合,有各种方法
h1(n)
h2(n)
h3(n)
…,取其中任意一个方法带入上述公式,组成评判函数,都是A算法的实现,现在取从集合中一个函数
h∗(n)
,使得它比集合中任意的函数都优秀,这样的算法叫A*算法。
也就是A*算法是最优的A算法,(因为估值函数最优)!