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) 编辑 收藏 举报