最短路径与关键路径

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四节最短路径与关键路径

1.最短路径:对于图G=(有向图或无向图)的每一条边e都附加一个实数

w(e),w(e)称为e的权,则称G是一个带权图或赋权图,并把它记作G=,其中w是E上的实函数,叫作权函数。对于简单图,当e=(v i,v j)(或),常把w(e) 记作w ij。

设G=是n阶简单带权图(无向的或有向的),边(v i,v j)(或)的权为w ij,并且约定:w ii=0;当v i与v j之间无边关联时w ij=∞。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。请读者自己写出详细的求解过程。

相关文档
最新文档