最短路径之迪杰斯特拉(Dijkstra)算法

最短路径:
(1) 在网图中,指两顶点之间经历的边上权值之和最短的路径
(2) 在非网图中,指两顶点之间经历的边数最少的路径
单源最短路径问题:(源点就是起点,即起点已经确定且只有一个)
问题描述:给定带权有向图 G=<V, E> 和源点 v ∈V,求从源点 v 到G中其余各顶点的最短路径。
迪杰斯特拉(Dijkstra)算法 :按路径长度递增的次序产生最短路径

图示
求从A到各顶点的最短距离:
初始:S = < A >
第一步:S = <A, B>
过程:A->B: (A, B) 10; A->C: (A, C) ∞; A->D: (A, D) 30; A->E: (A, E) 100
第二步:S = <A, B, D>
过程:A->B: (A, B) 10; A->C: (A, B, C) 60; A->D: (A, D) 30; A->E: (A, E) 100
第三步:S = <A, B, D, C>
过程:A->B: (A, B) 10; A->C: (A, D, C) 50; A->D: (A, D) 30; A->E: (A, D, E) 90
第四步:S = <A, B, D, C, E>
过程:A->B: (A, B) 10; A->C: (A, D, C) 50; A->D: (A, D) 30; A->E: (A, D, C, E) 60

程序用图

猜你喜欢

转载自blog.csdn.net/weixin_46497503/article/details/110531447