A星搜索 (A* Search)

致敬: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)为实际问题的代价值)。

   当此四个条件都满足时,一个具有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

你可能感兴趣的:(Computer,Algorithm)