前一些天,在群有人问到A*算法的问题。之前我已经有实现过,并将之放到github上(https://github.com/ATinyAnt/A_Star);有兴趣的可以下载下来看看。
这里上传了一个相当好的A*算法演示程序,大家可以下载下来看看效果:http://download.csdn.net/detail/a374826954/8781185。
下面描述是摘自清华大学出版社《人工智能》一书:
评价函数的形式如下:
f(n) = g(n) + h(n)
其中,n是被评价的结点。
g*(n):表示从初始结点s到结点n的最短的耗散值;
h*(n):表示从结点n到目标结点g的最短的耗散值;
f*(n)=g*(n)+h*(n):表示从结点s经过结点n到目标结点g的最短路径的耗散值。
而f(n)、g(n)和h(n)则分别表示是对f*(n)、g*(n)和h*(n)3个函数值的估计值,的一种预测。A算法就是利用这种预测,来达到搜索的目的。
当在算法A的评价函数中,使用的启发函数h(n)是处于h*(n)的下界范围,即满足h(n)≤h*(n)时,则把这个算法称为算法A*。
需要说明的是,程序由于增加了一些调试信息,稍微会比实际慢一些。