系列文章目录
路径规划之Dijkstra算法
路径规划之Dijkstra算法
前言
正式开始学习导航,导航的核心部分是路径规划。而最初最经典的路径规划算法就是Dijkstra算法,如果学过数据结构的话就非常熟悉了。
一、路径规划是什么?
路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成,连接起点位置和终点位置的序列点或曲线称之为路径,构成路径的策略称之为路径规划。
以上定义取自百度百科,个人的理解就是找到从起点到终点代价最小的线路,其中需要考虑路障、时间等约束。
二、Dijkstra算法
2.1 定义
Dijkstra算法是由荷兰计算机科学家狄克斯特拉在1959年提出的,属于BFS的扩展。
标题 | 内容 |
---|---|
适用场景 | 解决单源最短路径问题(找到从(一个)源节点到每个结点的最短路径) |
核心思想 | 每一步会选择离初始点最近或者代价最小的结点 |
2.2 过程
- 初始化一个优先队列用于存储已遍历但未找到离起点最短路径的结点,队列开始只有起点;
- 遍历当前节点相邻的结点,将它们加入优先队列中,选择其中到起点代价最小的结点作为下一次遍历的结点(该结点从优先队列中踢出,成为已扩展的结点);
- 如果相邻的结点中已存在优先队列中,更新它到起点的代价;否则加入优先队列;
- 重复2、3步骤直至到达终点。
2.3 练习
三、简单使用
以下就是Dijkstra算法在一个比较简单的地图中进行路径规划的过程