【最短路径问题】dijkstra 迪杰斯特拉

单源点最短路径问题  dijkstra算法伪代码

算法思路如下:

1).标记设定算法,将点集合分为S,U,集合S中是已标记的点集合,集合U中是未标记的点集合.

2).初始状态,集合S中包含源点v0,集合U为V-v0.

每次从U中选取源点到该点路径最小值加入集合S中,加入集合S后,更新v0到集合U中各点的路径值,并保存相应的路径信息.

3).循环执行步骤2),直到集合U为空则算法结束.

算法时间复杂度为O(n2),主要在求未标记的集合U中最小路径的点,需要遍历集合U中的元素.

基于Dijkstra的改进方法,都是集中于此处,如何更快地求出未标记集合中的最小路径的点.

改进方法,利用二叉堆或者斐波那契构建优先队列来减小求最小路径值的点的复杂度.

 

原文地址:https://www.cnblogs.com/dwdxdy/p/2538946.html