阅读 73

dijkstra算法详细步骤,迪杰斯特拉算法例题

背景

在高德、百度地图上旅行时,大家一定使用过路径规划的功能。 例如,从出发地a到目的地b,开车有两个方案。

时间最短,但路途遥远。 路程最短,时间长。 我想作为开发者,我曾经考虑过他用什么算法计算了最优方案。 今天我们来谈谈文摘算法。

什么是迪杰斯特拉算法

戴克斯特拉算法(Dijkstra )由荷兰计算机科学家戴克斯特拉于1959年提出,故又称戴克斯特拉算法。 是从一个顶点到剩下的各顶点的最短路径算法,解决权利图中的最短路径问题。 稀疏算法的主要特点是从起点开始采用贪婪算法策略,每次遍历到距离起点最近且从未访问过的顶点相邻节点,并扩展到终点。 -百度百科

算法流程

设0为出发地a,剩下的1、2、3、4为目的地b,则现在求出从0到各点的最短路径是多少。

S为已求出最短路径的节点,U为未求出最短路径的节点,Dist[]存放最短路径长度

发现1.0的计算方式最小值为4,对应节点1,更新从0到所有节点的最短路径Dist[]。 分别为0-0=0,0-1=4,0-2=6,0-9=3,0-4=(无限大)。

2 .在s集合中找到与u集合相关的连接:1-2=1,1-4=4,0-3=9,他的最小出度为1,更新dist。 0-2=6大于0-1-2=5,所以2的最短路径是5,1-4=4,所以4的当前最短路径

3 .在集合s { 0,1,2 }中找到与集合u { 3,4 }存在链路:2-4=2,2的最短路径是5,所以0-1-2-4=7小于0-1-4=8,所以4个节点的最短路径

4.4由于节点没有出度,所以没有变化

5 .集合s { 0,1,2,4,3 }和集合U{3}只有连接0-3=9,所以3的最短路径是9。 0-3-2=11大于2的原始最小路径值5,因此丢弃。 以下是最终的0到各节点的最短路径值。

最终结果

0-1最短距离40-2最短距离50-3最短距离90-4最短距离7


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐