最短路径算法:Dijkstra算法

Posted yangfei629

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路径算法:Dijkstra算法相关的知识,希望对你有一定的参考价值。

一、算法介绍


迪杰斯特拉(Dijkstra)算法用于计算一个节点到其他所有节点的最短路径。 

1、单源

2、贪心算法

3、适用无负权边的情况

 

二、算法思想


准备2个集合 S 和 U

S保存已经计算好的源节点到此节点最短距离

U保存未计算好最短记录的点

每次从U中取出最小的值,放入S中,其他节点根据此节点重写计算最短距离

 

图解

技术图片

 

以D为源点

第一步:

S={D(0)}

U={A(无穷大),B(无穷大),C(3),E(4),F(无穷大),G(无穷大)}

技术图片

 

第2步:

S={D(0),C(3)}

U={A(无穷大),B(13),E(4),F(9),G(无穷大)}

技术图片

 

 

 

 

 

 第3步:

S={D(0),C(3),E(4)}

U={A(无穷大),B(13),F(6),G(12)}

技术图片

 

 

 

第4步:

S={D(0),C(3),E(4),F(6)}

U={A(22),B(13),G(12)}

技术图片

 

 

 

 第5步:

S={D(0),C(3),E(4),F(6),G(12)}

U={A(22),B(13)}

技术图片

 

第6步:

S={D(0),C(3),E(4),F(6),G(12),B(13)}

U={A(22)}

技术图片

 

 

第7步:

S={D(0),C(3),E(4),F(6),G(12),B(13),A(22)}

U={}

技术图片

 

 

 

 U中无点时,S即为所求的单源节点到其他所有节点的最短距离

时间复杂度O(V^2)

 

参考:

https://blog.csdn.net/qq_37796444/article/details/80663810

 

以上是关于最短路径算法:Dijkstra算法的主要内容,如果未能解决你的问题,请参考以下文章

Dijkstra算法

最短路径算法(Dijkstra)

图-最短路径-Dijkstra及其变种

最短路径 - Dijkstra算法

最短路径 Dijkstra 算法为啥边上的权值非负阿?

图文解析 Dijkstra单源最短路径算法