[最短路径问题]—Dijkstra 算法最详解

[复制链接]
 楼主| keer_zu 发表于 2023-5-24 11:03 | 显示全部楼层 |阅读模式
83945646d7e7b79837.png
先上个图
 楼主| keer_zu 发表于 2023-5-24 11:09 | 显示全部楼层
Dijkstra 算法,是由荷兰计算机科学家 Edsger Wybe Dijkstra 在1956年发现的算法,戴克斯特拉算法使用类似广度优先搜索的方法解决赋权图的单源最短路径问题。Dijkstra 算法原始版本仅适用于找到两个顶点之间的最短路径,后来更常见的变体固定了一个顶点作为源结点然后找到该顶点到图中所有其它结点的最短路径,产生一个最短路径树。本算法每次取出未访问结点中距离最小的,用该结点更新其他结点的距离。需要注意的是绝大多数的Dijkstra 算法不能有效处理带有负权边的图。
 楼主| keer_zu 发表于 2023-5-24 11:17 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 11:18 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 11:19 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:15 | 显示全部楼层
现在选择v1为原点s:


选择v_1作为原点s。
44600646d9d46b3152.png
 楼主| keer_zu 发表于 2023-5-24 13:16 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:17 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:20 | 显示全部楼层
以上是我们通过观察和计算比对出来的最短路径,下面我们就来看看Dijkstra 算法是如何帮助我们找到这些所有的最短路径的。
在开始之前,有几个概念需要明确一下。
14812646d9e2354563.png
41283646d9e8b11aed.png
37626646d9eae88c67.png

 楼主| keer_zu 发表于 2023-5-24 13:22 | 显示全部楼层
然后是Dijkstra 算法的伪码:
3507646d9f0151734.png
 楼主| keer_zu 发表于 2023-5-24 13:24 | 显示全部楼层
下面我们来解释一下这个伪码:
48026646d9f5d90555.png
99849646d9f7bd9289.png
 楼主| keer_zu 发表于 2023-5-24 13:24 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:27 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:28 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:29 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:29 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:30 | 显示全部楼层
 楼主| keer_zu 发表于 2023-5-24 13:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1478

主题

12917

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1478

主题

12917

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部