§2最短路问题 6.2.1最短路问题的网络模型 最短路问题,就是从给定的网络图中找出一点到各点或任意两 点之间距离最短的一条路 最短路问题在实际中具有广泛的应用,如管道铺设、线路选择 等问题,还有些如设备更新、投资等问题也可以归结为求最短 路问题 求最短路有两种算法: 是求从某一点至其它各点之间最短离的狄克斯屈拉 Dijkstra)算法 另一种是求网络图上任意两点之间最短路的 Floyd(弗洛伊德) 矩阵算法。 管理蓦
管 理 运 筹 学 6 §2 最短路问题 最短路问题在实际中具有广泛的应用,如管道铺设、线路选择 等问题,还有些如设备更新、投资等问题也可以归结为求最短 路问题 求最短路有两种算法: 一是求从某一点至其它各点之间最短离的 狄克斯屈拉 (Dijkstra)算法 另一种是求网络图上任意两点之间最短路的Floyd(弗洛伊德) 矩阵算法。 最短路问题,就是从给定的网络图中找出一点到各点或任意两 点之间距离最短的一条路 6.2.1最短路问题的网络模型
§2最短路问题 最短路问题:对一个赋权的有向图D中的指定的两个点V和V找到一条 从v到的路,使得这条路上所有弧的权数的总和最小,这条路被称 之为从V到V的最短路。这条路上所有弧的权数的总和被称为从到v 的距离。 、求解最短路的 Dijkstra算法(双标号法) 步骤: 1给出点V以标号(0,s) 2找出已标号的点的集合I,没标号的点的集合J以及弧的集合 (,v)v∈1,V∈ 3.如果上述弧的集合是空集,则计算结束。如果v已标号(Lnk),则v 到v的距离为1,而从ⅴ到v的最短路径,则可以从k反向追踪到起点 v而得到。如果v未标号,则可以断言不存在从v到v的有向路。如果 上述的弧的集合不是空集,则转下一步 4.对上述弧的集合中的每一条弧,计算s=-+ci。在所有的s中,找到其 值为最小的弧。不妨设此弧为(VV),则给此弧的终点以双标号 (sa,c),返回步骤2
管 理 运 筹 学 7 §2 最短路问题 • 最短路问题:对一个赋权的有向图D中的指定的两个点Vs和Vt找到一条 从 Vs 到 Vt 的路,使得这条路上所有弧的权数的总和最小,这条路被称 之为从Vs到Vt的最短路。这条路上所有弧的权数的总和被称为从Vs到Vt 的距离。 一、求解最短路的Dijkstra算法(双标号法) 步骤: 1.给出点V1以标号(0,s) 2.找出已标号的点的集合I,没标号的点的集合J以及弧的集合 3. 如果上述弧的集合是空集,则计算结束。如果vt已标号(l t ,kt),则vs 到vt的距离为l t,而从vs到vt的最短路径,则可以从kt 反向追踪到起点 vs 而得到。如果vt未标号,则可以断言不存在从vs到vt的有向路。如果 上述的弧的集合不是空集,则转下一步。 4. 对上述弧的集合中的每一条弧,计算sij=li+cij 。在所有的sij中,找到其 值为最小的弧。不妨设此弧为(Vc ,Vd),则给此弧的终点以双标号 (scd,c),返回步骤2。 {( , ) | , } i j i j v v v I v J
§2最短路问题 例1求下图中v到v的最短路 6 2 3 解:采用 Dijkstra算法,可解得最短路径为v→v34→v6 各点的标号图如下: 3,1) 8,4) 7 6 3,3)5 5 (0,s 5 2. 5 管理蓦
管 理 运 筹 学 8 §2 最短路问题 例1 求下图中v1到v6的最短路 解:采用Dijkstra算法,可解得最短路径为v1 v3 v4 v6 各点的标号图如下: v2 3 5 2 7 5 3 1 5 2 1 v1 v6 v v5 3 v4 (3,1) v2 3 5 2 7 5 3 1 5 2 1 V1 (0,s) v5 (8,4) v6 (2,1) v3 (3,3) v4
§2最短路问题 【例】用 Dijkstra算法求图6-6所示v到v的最短路及最短路长 18,3 420 2 29 ① 1010 0,0 3 824 ⑦295 9,2 16 5 12 32 ④ 517 12.1 16,3 图6-6 v1到v的最短路为:p17={v,v2,吟3,"5,v},最短路长为L17=29 理蓦总
管 理 运 筹 学 9 §2 最短路问题 ② ③ ④ ⑤ ⑥ ⑦ 6 10 12 3 2 14 7 6 5 8 11 16 5 图6-6 9 0,0 6 10 12 9 20 9,2 18 6,1 ① 16 12,1 17 16,3 24 32 18,3 29 29,5 【例】用Dijkstra算法求图6-6 所示v1到v7的最短路及最短路长 v1 到v7的最短路为:p17={v1 , v2 , v3 , v5 , v7},最短路长为L17=29 14
§2最短路问题 【例】求图6-10所示v到各点的最短路及最短距离 6,3 1218 6 6 28 0,0① 55/3,4 912851624 ⑧185 6 2 13 612 2 24 ④ 810 2,1 6,3 图6-10 所有点都已标号,点上的标号就是v1到该点的最短距离,最短路 线就是红色的链。 10
管 理 运 筹 学 10 【例】求图6-10所示v1到各点的最短路及最短距离 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 4 5 2 6 1 7 8 3 9 3 2 6 12 16 18 0,0 4 5 2 2,1 3 10 3,4 9 6 12 6 4,1 11 6,3 6,3 18 8 12 24 8,5 24 18,5 所有点都已标号,点上的标号就是v1到该点的最短距离,最短路 线就是红色的链。 图6-10 §2 最短路问题