关于自学A星算法的理解和总结
知识点总结部分
关键名词部分
节点:搜索区域发的近似替代,节省计算量,削减了对搜索区域的约束
A星算法是用来计算从起点到终点的最低成本(最优)路径的算法
开启列表:用来存放可能的、未计算的节点。
(若最终开启列表是空的,则说明没有直接到达终点的路径)
关闭列表:存放已经计算过的节点。
存放的节点不但要记录其F值,还要记录其父节点。
公式:F=G+H;
F:寻路消耗;
G:已经付出的成本;
H:预计还要付出的成本;
用曼哈顿街区算法计算
如图:
直接计算其与目标点的横距离与纵距离之和。
计算逻辑部分
计算逻辑:
1.先检索计算起点周围的节点的F值并记录下这些节点的父节点后存入开启列表中,
2.对开启列表中各节点按F值从小到大进行排序。
3.对F值最小的点周围进行检索,得到数个新的节点存入开启列表(已经检索过的节点不用再次检索),且将该点存入关闭列表
4.重复2、3步骤直至检索到终点或开启列表中为空列表。
5.若检索到终点,则从终点反向梳理出路径(依据每个点记录的父节点),若最终开启列表为空,则说明没有直接到达终点的路径。
额外:最终不从正向梳理路径原因是依照A星算法的逻辑很可能会有多条从起点分化出来的路径,但只有一条是通往终点的。(参考树状图)
这里可以理解为算法从A系列点计算到C系列点后发现所有C系点的F值均大于A2点,于是算法从A2点寻找新的路线,
当然,正常情况下可能不止一次从新开始。这里只是举了最简单的例子。