考试学习中心网

咨询投诉0931-8254357
主办单位:元海德教育宗旨:富家 兴教
0931-8254357

当前位置:主页 > 学习中心新 > 第二学位 >

第五节 - 最短路径

发布时间:2020-09-20 11:01来源:未知

第五节 最短路径

1、最短路径的问题

最短路径问题的提法很多,在这里仅讨论单源最短路径问题:从某个源点S∈V到G中其余各顶点的最短路径。对于求多源点的最短路径问题,可以用每个顶点作为源点调用一次单源最短路径问题算法予以解决。

【例】下图所示带权有向图,假定以vl为源点,则v1到其他各顶点的最短路径下表所示。

源点

最短路径

终点

路径长度

v1

v1,v3,v2

v2

5

v1

v1,v3

v3

3

v1

v1,v3,v2,v4

v4

10

v1

v1,v3,v5

v5

18

2、迪杰斯特拉(Dijkstra)算法

该算法是典型的最短路径路由算法,用于计算一个顶点到其他所有顶点的最短路径。主要特点是以起始点为中心向外层扩展,直到扩展到终点为止。

【算法思想】创建三个数组,数组S记录了当前从源点到该顶点存在最短路径的顶点集合;数组dist(简称D)记录当前状态源点到图中其余各顶点之间的最短路径长度;数组path(简称P)是最短路径的路径数组,其中path[j]表示从源点到顶点j的最短路径上顶点的前驱顶点。每一次循环都是从数组D中选择未被加入到数组S中的顶点到源点路径最短的顶点加入到数组S中,然后对数组D和数组P进行修改,直到所有顶点都加到了数组S 中为止。

【例】已知有向图如图所示,根据迪杰斯特拉算法画出求源点v1开始的单源最短路径的过程示意图,以及算法的动态执行过程。

迪杰斯特拉算法的动态执行情况

循环 集合S j  D[1] D[2] D[3] D[4] D[5]   P[1]P[2]P[3]P[4]P[5]
初始化 {1} 1 0   9   ∞   18   18 0   l   0   0   1
2 {1,2} 2 0   9   14   ∞   18 0  1   2   0   1
3 {l,2,3} 3 0   9   14   17   16 0   l   2   3   3
4 {1,2,3,5} 5 0   9   14   17   16 0   1   2   3   3
5 {1,2,3,5,4} 4 0   9   14   17   16 0   1   2   3   3

【真题选解】

(例题•填空题)已知有向图如下图所示,其中顶点A到顶点C的最短路径长度是_________。


免费咨询

  • 甘肃: QQ
  • 四川: QQ
  • 山西: QQ
  • 陕西: QQ
  • 0931-8254357