A*算法

最近在看关于路径规划的算法,对A*算法有点认识,在这里记录一下。

A*算法总能找到最小代价路径,进行搜索的图必须满足如下条件:

1.搜索图中的每个节点的后续几点的数目是有限的。

2.搜索图中所有狐的代价都大于某个正数S

A*算法中,评估各扩展节点的代价值时需要用到估价函数,估价函数的一般形式为:

f = h + g, f代表整条路径的代价,h代表从出发点到当前节点的代价,g代表从当前节点到终点的代价。

设起始点是259,如下图,程序走向如下图所示:

 左侧三张图代表的是父矩阵(parent)的值的变化,右侧三张图代表的是checkPath矩阵的变化,其实起的就是一个标记的作用。代表已经搜索过的为1,没有搜索过的为0.

 

下面这张图对应的是其距离矩阵的计算也就是f矩阵的值的变化:

最后路径的产生其实是父矩阵中的一系列值,从终点往前推,因为终点是上一个节点的儿子,而上一个节点又是上上一个节点的儿子,层层递进,找到目标点,也就是原始的父亲。

具体的代码A*算法代码可从下面的地址免费下载:

https://pan.baidu.com/s/1N_GKFxiMxBmkbfZEumfGnw

 

posted on 2018-12-27 15:25  xiegangqingnian  阅读(466)  评论(0编辑  收藏  举报

导航