A*算法

Posted zzm1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于A*算法的主要内容,如果未能解决你的问题,请参考以下文章

算法 | A*算法和权重A* 算法

[算法学习]A星算法

算法 | A*算法实现最优路径规划

A*算法基本原理

算法练习-排序算法

算法和算法分析