A星算法思路
启发式搜索算法是比较常规的一类算法就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。
建立地图
A星算法需要确定搜索的地图,并将其栅格化,从而将起点和终点在地图的栅格位置确定下来。
在自动驾驶或者机器人的应用中,对于栅格化需要设定好栅格大小,如果栅格太大,那么位置就不精确;如果栅格太小,那么会消耗比较长的时间进行搜索。
设定代价函数
公式
A星寻路算法通过计算和量化行走的各个方向的代价,来选择最优路径。
公式:F = G + H
F:设定其为最终评估代价
G:当起点走到下一目标点的付出的代价
H:下一目标点到终点的预期代价(一般选择曼哈顿距离)
如果下一目标点是不可逾越的障碍物,则从当前点过去的代价为无穷大,最后通过比较各条路线的最终代价,选择最小代价,即为合适的路径,也为最短路径。
示例
以下图为例,绿色的点为起点,到右边的点的代价为10,所以G=10;右边的点到终点(红色点)的预期代价为3个格子,即30,所以H=30;因此F=G+H=40。
A星搜索过程
流程图
代码解释
参考:https://blog.csdn.net/jj6666djdbbd/article/details/126287486?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-126287486-blog-78786493.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-126287486-blog-78786493.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=2