致敬:P. E.Hart, N. J. Nilsson, and B. Raphael.Aformal basis for the heuristic determination of minimum cost paths in graphs.IEEE Trans. Syst. Sci. and Cybernetics, SSC-4(2):100-107, 1968。
A*搜寻算法,俗称A星算法,作为启发式搜索算法中的一种,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。
A*算法最为核心的部分,就在于它的一个估值函数的设计上:
f(n)=g(n)+h(n)
其中f(n)是每个可能试探点的估值,它有两部分组成:
一部分,为g(n),它表示从起始搜索点到当前点的代价(通常用某结点在搜索树中的深度来表示)。
另一部分,即h(n),它表示启发式搜索中最为重要的一部分,即当前结点到目标结点的估值,h(n)设计的好坏,直接影响着具有此种启发式函数的启发式算法的是否能称为A*算法。
一种具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法的充分条件是:
1、搜索树上存在着从起始点到终了点的最优路径。
2、问题域是有限的。
3、所有结点的子结点的搜索代价值>0。
4、h(n)=<h*(n)(h*(n)为实际问题的代价值)。
当此四个条件都满足时,一个具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法,并一定能找到最优解。
以上文字引用CSDN用户v_July_v: http://blog.csdn.net/v_JULY_v/article/details/6093380
以下实例来自Uppsala University课程Artificial Intelligence 考试:
Points | S | A | B | C | G |
S | 2 | 3 | |||
A | 2 | 7 | 5 | ||
B | 3 | 7 | 6 | ||
C | 0 | 5 | 6 | 11 | |
G | 11 |
上表表示从initial node S 出发到达final node G点与点之间的距离(可以看成g(n)),且给出如下启发式函数(可以看成h(n)):
Points | A | B | C |
G | 15 | 9 | 5 |
求从点S出发到达点G搜索过程中各个点的扩展顺序,最短路径方案以及最短路径的长度?
Explored | Expand | Frontier |
Null | S | As=2+15=17,Bs=3+9=12 |
S | B | As=17,CB=3+6+5=14 |
SB | C | As=17,Bc=3+6+6+9=24, GC=3+6+11+0=20 |
SBC | A | BA=2+7+9=18,CA=2+5+5=12, Gc=20 |
SBCA | C | BA=18,AC=2+5+5+15=27, GC=2+5+11+0=18 |
SBCAC | G |
点的扩展顺序如下:SBCACG
最短路径方案由G点反推至S可得:G-C-A-S,则最优搜索路径为S->A->C->G
最短路径长度为GC=18