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) 即由这两部分组成。在栅格地图中,启发函数通常采用两点间距离表示,例如曼哈顿距离。

2.A*搜索算法原理及matlab代码_第1张图片

二、实现效果

能够看到欧式距离结果更好,与Dijkstra算法结果一样,但是拓展次数Dijkstra算法>欧式距离>曼哈顿距离,计算路径结果Dijkstra算法=欧式距离<曼哈顿距离

1.欧式距离计算H

2.A*搜索算法原理及matlab代码_第2张图片

2.A*搜索算法原理及matlab代码_第3张图片

 2.曼哈顿距离计算H

 2.A*搜索算法原理及matlab代码_第4张图片

 2.A*搜索算法原理及matlab代码_第5张图片

 三、代码

Astar算法求解格栅地图路径matlab代码.rar-专业指导文档类资源-CSDN下载

你可能感兴趣的:(matlab代码,matlab,算法,图论)