1 数据结构课程辅导 ---图的最短路径、拓扑排序和关键路径 一、最 短 路 径 由图的概念可知,在一个图中,若从一顶点到另一顶点存在着一条路径(这里只讨论无回路的简单路径),则称该路径长度为该路径上所经过的边的数目,它也等于该路径上的顶点数减 1
由于从一顶点到另一顶点可能存在着多条路径,每条路径上所经过的边数可能不同,即路径长度不同,我们把路径长度最短(即经过的边数最少)的那条路径叫做最短路径,其路径长度叫做 最短路径长度 或最短距离
上面所述的图的最短路径问题只是对无权图而言的,若图是带权图,则把从一个顶点 i到图中其余任一个顶点 j的一条路径上所经过边的权值之和定义为该路径的带权路径长度,从 vi到 vj可能不止一条路径,我们把带权路径长度最短(即其值最小)的那条路径也称作最短路径,其权值也称作最短路径长度 或最短距离
例如,在图3-1中,从 v0到 v4共有三条路径:{0,4},{0,1,3,4}和{0,1,2,4},其带权路径长度分别为 30,23和 38,可知最短路径为{0,1,3,4},最短距离为23
图3-1 带权图和对应的邻接矩阵 2 实际上,这两类最短路径问题可合并为一类,这只要把无权图上的每条边标上数值为 1的权就归属于有权图了,所以在以后的讨论中,若不特别指明,均认为是求带权图的最短路径问题
求图的最短路径问题用途很广
例如,若用一个图表示城市之间的运输网,图的顶点代表城市,图上的边表示两端点对应城市之间存在着运输线,边上的权表示该运输线上的运输时间或单位重量的运费,考虑到两城市间的海拔高度不同,流水方向不同等因素,将造成来回运输时间或运费的不同,所以这种图通常是一个有向图
如何能够使从一城市到另一城市的运输时间最短或者运费最省呢
这就是一个求两城市间的最短路径问题
求图的最短路径问题包括两个方面:一是求图中一顶点到其余各顶点的最短路径,