A*算法

A*算法是对A算法的估价函数f(n)=g(n)+h(n)加上某些限制后得到的一种启发式搜索算法

     假设f*(n)是从初始节点S0出发,约束经过节点n到达目标节点Sg的最小代价,估价函数f(n)是对f*(n)的估计值。记

              f*(n)=g*(n)+h*(n)

其中, g*(n)是从S0出发到达n的最小代价,h*(n)是n 到Sg的最小代价

     如果对A算法(全局择优)中的g(n)和h(n)分别提出如下限制:

    第一,g(n)是对最小代价g*(n)的估计,且g(n)>0;

     第二,h(n)是最小代价h*(n)的下界,即对任意节点n均有h(n)≤h*(n)。

则称满足上述两条限制的A算法为A*算法。

可纳性的含义:

    对任一状态空间图,当从初始节点到目标节点有路经存在时,如果搜索算法总能在有限步骤内找到一条从初始节点到目标节点的最佳路径,并在此路径上结束,则称该搜索算法是可采纳的。

A*算法的搜索效率很大程度上取决于估价函数h(n)。一般来说,在满足h(n) ≤h*(n)的前提下,h(n)的值越大越好。h(n)的值越大,说明它携带的启发性信息越多,A*算法搜索时扩展的节点就越少,搜索效率就越高。 A*算法的这一特性被称为最优性。


你可能感兴趣的:(A*算法)