广度优先算法、Dijkstra算法、A*算法、ARA*算法、AD*算法简单比较
仿真视频:五种经典路径规划算法
以下为关于广度优先算法、Dijkstra算法、A-star算法、ARA-star算法、AD-star算法的个人总结,可能会有不恰当的地方,望各位大佬多多批评指正。
(1)广度优先算法
该算法是从根节点开始一层一层的进行遍历,只有完全遍历完一层所有的节点后才会进入下一层的遍历。
作为盲目搜寻法,主要通过系统地展开并检查图中的所有节点,以找寻结果。它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
(2)Dijkstra算法
该算法以起始点为中心,向外层层扩展,直到扩展到终点为止。每次找到离源点最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径。
其核心起于贪心思想,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。
(3)A-star算法
作为启发式搜索算法中的一种,A-star搜索算法是通过使用启发式函数来指导寻路,从而高效的保证找到一条最优路径。该算法试图找寻从起点到终点的最优路径,即代价最小。同时,好的启发函数将使得这一搜索运算尽可能高效,即搜索尽量少的节点/可能的路径。
启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。
(4)ARA-star算法
启发式搜索ARA*算法根据可用的搜索时间调整其性能边界,它首先使用松散边界快速找到次优解,然后在时间允许的情况下逐渐收紧边界。如果有足够的时间,它会找到可证明的最佳解决方案。在改进其约束的同时,ARA-star重复使用以前的搜索工作,因此比其他随时搜索方法更有效。
(5)AD-star算法
作为一种反向搜索算法,在动态环境中表现优秀,试图完成从目标点开始搜索的过程。在初次遍历时候,与Dijkstr算法一致,它将每个节点的信息都保存下来,其算法核心在于假设了未知区域都是自由空间,以此为基础,增量式地实现路径规划,通过最小化rhs值找到目标点到各个节点的最短距离。由于储存了空间中每个点到终点的最短路径信息,故在重新规划时效率大大提升。