单源最短路径的 Dijkstra算法推导
2026/5/8 16:28:31 网站建设 项目流程

单源最短路径

最短路径 (shortest paths)的相关实际场景比较广泛,比如地图、网络等。

单源最短路径 (SSSP / single-source shortest paths)是求解给定某一源点到其所有可达点的最短路径,即使得这些无权路径的边数或者带权路径的权重和最小。

Dijkstra (/ˈdaɪkstrə/) 算法解决的是非负权图的 SSSP,未使用堆查找优化时,也被称为 Dijkstra 暴力算法。Dijkstra 译作“迪杰斯特拉“。

松弛(Relax)

"松弛"这个术语在本章出现得较多,含义同数学意义上的松弛相同,减少约束。图的两点之间存在多条路径,找到最短的一条需要比较,每比较一次就减少一次约束。

上图表示在 SSSP 中,忽略原图中的其他点和边,探索过程中某一时刻点 A 对其邻接点的松弛。

红框中的下标:

  • 第一个:在当前探索范围内,源点到该点的的距离。
  • 第二个:相应路径上的父节点。和各顶点一样,都是实际以数字存储,-1 表示没有父节点。

观察 A B 两点状态,3 + 1 < 5,说明 A 点所处路径向 B 延伸后比此前源点到 B 的路径更短,松弛有效。

同理可得对 C 松弛有效,对 D 松弛无效。

如果之后某刻 A 点再次被有效松弛了,那么应该继续松弛 B C D 点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询