最短路径与关键路径
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四节最短路径与关键路径
1.最短路径:对于图G=
w(e),w(e)称为e的权,则称G是一个带权图或赋权图,并把它记作G=
设G=
路)上各条边的权之和叫作该通路(回路)的权。G中从v i到v j的权最小的通路叫作v i到
v j的最短路径。根据刚才的约定,若不存在从v i到v j的通路,则认为v i到v j的最短路径
的权为∞。所谓最短路径问题就是求给定图中两点之间的最短路径。
下面介绍求最短路径问题的Dijkstra标号法。它仅可用于所有的权w ij≥0的情况,可
以求从给定顶点(设为v1)到所有顶点的最短路径。先介绍几个符号和名词。
(1)设l i(r)∗为顶点v1(最短路径的起点)到v i(最短路径的终点)的最短路径的权。
若v i获得l
i(r)∗,称v i在第r(r≥0)步获得了永久性标号,简称为p标号。由于v1为起点,且w=0,故当r=0时,l1(0)∗=0,首先v1获得永久性标号P。
11
(2)设l(jr)为v1到v j的最短路径的权在第r步获得的一个上界,称l(jr)为顶点v j的
临时性标号,简称t标号,其中,r≥0,开始的时候,l j=w1j。
(0)
(3)设P r={v v在前r步获p标号},称P r为第r步的通过集,r≥0。
(4)设T r=V−P r,称T r为第r步未通过集。
Dijkstra标号法的计算步骤如下:
(1)开始
令r←0,获p标号:l1(0)∗=0,P0 ={v1},T0 =V−P0,v j( j≠1)的t标号为l(0)j
=w1j (2)求下一个p标号顶点。
令r ← r +1。设 min{l (jr −1)}=l i (r −1),则记l i (r )∗ = l i (r −1),将l i (r )∗放在相应顶点v i 处,
v ∈T j r
−1 表明v i 获 p 标号。修改通过集和未通过集:令
P r = P r −1U {v i },T r =T r −1 −{v i }
检查 T r 。若T r = ∅,则算法结束,否则执行(3)。
(3)修改T r 中各顶点的 t 标号。
令
l (jr ) = min{l (jr −1),l i (r )∗ + w ij },v j ∈T r 。
转(2)。 例 4.1 求图 4.1中 v 1到其余顶点的最短路径及其权。
解用 Dijkstra 标号法求解计算过程如表 4.1所示。
T 0 ={v 2,v 3,v 4},这里
(1)r =1:
l ,l 3 ,l
}= min{3,1,∞}=1= l 3
3(1)∗
= min{l 2(0) (0) (0) (0) ,l 3(1)∗的下标之所以取作 3,是因为最
4 小值是在第三个顶点处取得。 v 3在第一步获 P 标号(永久性标号),v 1到v 3的最短路 ,因此 v 1到 v 3的最短路径就是边 v 1,v 3 。这样
T 1 =T 0 −{v 3}={v 2,v 4},这两个顶点的临时性标号(T 标号)为
径的权为
l 3(1)∗=1 l l (1) 2 = min{l 2
(0) ,l 3(1)∗ + w 32}= min{3,1,+3}= 3 (1) 4
= min{l 4 (0)
,l 3(1)∗ + w 34}= min{∞,1,+5}= 6。 (2)r = 2: min{l 2 (1) ,l }= min{3,6}= 3 = l 2
(1) (1) = l 2(2)∗,v 2在第二步获得永久性标号 P, v 1到v 2的
4 最短路径的权就是 3,因此v 1到v 2的最短路径就是边 v 1,v 2。这样T 2 ={v 4},v 4的临时性
标号为
l (2) 4
= min{l 4 (1),l 2(2)∗ + w 24}= min{6,3+ 2}= 5。
(3)r = 3: 4(3)∗ = min{l 4 l (2)
}= 5,v 4在第三步获永久性标号 P, v 1到v 4的最短路径权就是 5, v 1到 v 4的最短路径就是 v 1,v 2 + v 2,v 4,而T 3 = ∅,算法结束。
表 4.1
j
l (0) j l (1) j l (2) j l (3) j 1
2
3
4 0 3 1 * 3 3 * 1*
∞ 6 5 5
*
上表中的第一列为l 1 ,l ,l 3 ,l = 0;第二列为l 2 = 3,l 3 =1 ,l = 6;
(0) (0) (0) (0)的值,l 1(0)∗ = l 1(0) (1) (1) ∗ (1)
2 4 4 第三列为l 2(2)∗ = 3,l 4(2) = 5;第四列为l 4(3)∗ = 5。
v 2
v 1 v 4
v 3
例 4.2设备更新问题。某企业使用一台设备,在每年年初,企业领导部门就要决定是购置新 的,还是继续使用旧的。若购置新设备,就要支付一定的购置费用;若继续使用旧设备,则 需支付一定的维修费用。现在的问题是如何制定一个几年之内的设备更新计划,使得总的支 付费用最少。下面以 5年的计划为例,若已知该种设备在各年年初的价格为:
第 1年 第 2年 第 3年 第 4年 第 5年
11 11 12 12 13
还已知使用不同时间(年)的设备所需要的维修费用为:
使用年数 维修费用 0-1 1-2 2-3 3-4 4-5
5 6 8 11 18
可供选择的方案很多,如何制定方案使得总的支付费用最少呢?可以把这个问题转化为最短 路问题。
用点v i 表示“第i 年年初购进一台设备”这种状态。加点v 6理解为第 5年年底。从v i 到
( ) v i +1,L ,v 6各画一条弧,弧 v ,v 表示在第i 年初购进的设备一直使用到第 j 年年初。
i j 每条弧的权可按资料计算出来。例如,(v 1,v 4)是第 1年年初购进一台新设备(购置费
11),一直使用到第 3年年底(维修费 5+6+8=19),故(v 1,v 4)上的权为 30。
这样一来,制定一个最优的设备更新计划的问题就等价于寻求从 v 1到v 6的最短路的问 题。
按求解最短路的计算方法,可以得出{v 1,v 3,v 6}及{v 1,v 4,v 6}均为最短路,即在第 1年 和第 3年各购置一台新设备,或者在第 1年与第 4年各购置一台新设备,5年总的支付费用 均为 53。请读者自己写出详细的求解过程。