2.A*搜索算法原理及matlab代码
Posted 墨叔叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.A*搜索算法原理及matlab代码相关的知识,希望对你有一定的参考价值。
一、原理
A*算法是根据评估函数在静态连通图中寻找最优路径的经典启发式搜索算法,也是最有效的直接搜索算法。在 A*算法之前,路径规划通常采用 Dijkstra 算法,Dijkstra 是一种广度优先搜索算法,但其搜索具有盲目性。A*算法则是利用启发函数对 Dijkstra 的搜索空间进行剪枝的优化算法。两者最大的差别就是启发函数,A*算法的搜索过程是根据启发函数值的大小向着代价值低的方向进行。即对于所处的节点 n ,算法利用估价函数对其周边节点进行评估,并选择估价值最小的点为下一节点,表达式为 f(n) =g(n)+h(n)。启发函数h(n) 表示当前节点位置n 到目标点的估计值,而 g(n) 表示出发点到当前位置节点 n 实际的代价,估计值 f(n) 即由这两部分组成。在栅格地图中,启发函数通常采用两点间距离表示,例如曼哈顿距离。
二、实现效果
能够看到欧式距离结果更好,与Dijkstra算法结果一样,但是拓展次数Dijkstra算法>欧式距离>曼哈顿距离,计算路径结果Dijkstra算法=欧式距离<曼哈顿距离。
1.欧式距离计算H
2.曼哈顿距离计算H
三、代码
以上是关于2.A*搜索算法原理及matlab代码的主要内容,如果未能解决你的问题,请参考以下文章
Dijkstra算法A*算法D*算法LPA*算法和D* Lite算法详解汇总(原理matlab代码)格栅地图
Dijkstra算法A*算法D*算法LPA*算法和D* Lite算法详解汇总(原理matlab代码)格栅地图