【路径规划】(1) Dijkstra 算法求解最短路,附python完整代码

好久不见,我又回来了,这段时间把路径规划的一系列算法整理一下,感兴趣的点个关注。今天介绍一下机器人路径规划算法中最基础的 Dijkstra 算法,文末有 python 完整代码,那我们开始吧。


1. 算法介绍

1959 年,荷兰计算机科学家 ·EdsgerWybe·Dijkstra 发表了论文《 A note on two problems in connexion with graphs 》,提出了 Dijkstra 算法。发展至今日,Dijkstra 算法成为了解决带权图最短路径问题的经典算法之一,现在常常被用于网络内部路由问题的求解或者作为其它的复杂图论算法的子算法辅助进行计算。 

近年来,Dijkstra 算法在许多领域得到广泛应用,比如:物流中心分层选址[1]、电网故障行波定位[2]、电能路由策略[3]。众多学者作了研究,比如:徐洋洋等人提出将Dijkstra 算法应用于交通阻塞路径规划中,生成的最佳路径有效避开拥堵路段[4];吴红波等人提出 Dijkstra 算法和 GIS 网络分析的有效集成不但可以实现城市车辆行驶路线优化决策,而且 Dijkstra 算法优化能减少节点访问次数和时间复杂度[5];王芝麟等人提出使用最小二叉堆作为 Dijkstra 最短路径算法的辅助数据结构,有效降低算法的运算次数并提高运算效率[6]。

参考文献:

[1] 靳国伟,何世伟,黎浩东,何必胜,殷玮川.Harmony Search-Dijkstra 混合算法在铁路物流中心分层选址中的应用[J].北京交通大学学报,2016,40(04):45-52.

[2] 李泽文,唐平,曾祥君,肖仁平,赵廷.基于 Dijkstra 算法的电网故障行波定位方法[J].电力系统自动化,2018,42(18):162-168.

[3] 江渝,叶泓炜,张青松,王克,徐志鹏,杨睿.能源互联网中基于 Dijkstra 算法的分布式电能路由策略的实现[J].电网技术,2017,41(07).

[4] 吴红波,王英杰,杨肖肖.基于 Dijkstra 算法优化的城市交通路径分析[J].北京交通大学学报,2019,43(04):116-121+130.

[5] 王芝麟,乔新辉,马旭,严研.一种基于二叉堆的Dijkstra 最短路径优化方法[J].工程数学学报,2021,38(05):709-720.


2. 算法原理

Dijkstra 算法是典型的单源最短路径计算算法用于解决源点到其它所有点之间的最短路径计算的问题。它采用了贪心的思想搜索全局,求取最优解,搜索过程是以起点为圆心,向周围以同心圆的方式进行无序扩张搜索,搜索完全部节点后算法才终止经典 Dijkstra 算法的搜索过程如下图所示,最外层的实线圆代表所有待搜索的点的集合。 

下图展示了 Dijkstra 算法的一般运算流程,为了更直观的描述运算过程,下面以图论的方法来描述 Dijkstra 算法:设 G=(V,E) 是一个带权有向图。其中 V 表示图中所有顶点的集合E 表示图中每条边的长度权值

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值