(1)最短工期与关键活动。
AOE 网的顶点表示事件,边表示活动。一个事件只有在所有进入该事件的活动都完成后才能发生。因此事件最早时间 ve(v) 取各前驱完成时间的最大值;事件最晚时间 vl(v) 则从终点反向取各后继允许开始时间的最小值:
ve(v)=u→vmax{ve(u)+w(u,v)},vl(u)=u→vmin{vl(v)−w(u,v)}.
图中源点为事件 1,终点为事件 5。虽然编号不是拓扑顺序,但可以按 1、3、4、2、6、7、5 的拓扑顺序计算。正向计算的关键步骤是:
ve(1)ve(3)ve(4)ve(2)ve(6)ve(7)ve(5)=0,=0+2=2,=max(0+3,2+3)=5,=max(0+5,5+4)=9,=max(2+1,5+1)=6,=max(5+4,6+1)=9,=max(9+2,5+1,9+3)=12.
令终点 vl(5)=12,反向计算,例如
vl(4)=min(10−4,12−1,8−1,9−4)=5,全部事件时间如下:
| 事件 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
| 最早时间 ve |
0 |
9 |
2 |
5 |
12 |
6 |
9 |
| 最晚时间 vl |
0 |
10 |
2 |
5 |
12 |
8 |
9 |
对活动 u→v、持续时间 w,最早开始时间 e=ve(u),最晚开始时间 l=vl(v)−w,时间余量为 l−e:
| 活动 |
起点→终点 |
持续时间 |
最早开始 e |
最晚开始 l |
时间余量 |
| a |
1→3 |
2 |
0 |
0 |
0 |
| b |
1→2 |
5 |
0 |
5 |
5 |
| c |
3→6 |
1 |
2 |
7 |
5 |
| d |
1→4 |
3 |
0 |
2 |
2 |
| e |
3→4 |
3 |
2 |
2 |
0 |
| f |
4→2 |
4 |
5 |
6 |
1 |
| g |
4→6 |
1 |
5 |
7 |
2 |
| h |
6→7 |
1 |
6 |
8 |
2 |
| j |
4→5 |
1 |
5 |
11 |
6 |
| k |
2→5 |
2 |
9 |
10 |
1 |
| m |
4→7 |
4 |
5 |
5 |
0 |
| n |
7→5 |
3 |
9 |
9 |
0 |
零余量活动就是关键活动,因此关键活动为 a、e、m、n,关键路径为 1→3→4→7→5。持续时间之和为 2+3+4+3=12,最短工期为 12 个时间单位。
(2)可能与 e 同时进行的活动。
e 是关键活动,其开始时间固定为 2,结束时间固定为 5。采用最早开始安排时,b 在 0~5 进行,d 在 0~3 进行,c 在 2~3 进行,三者都与 e 有实际时间重叠。因此答案为 b、d、c。
活动 a 必须在 e 开始前完成;f、g、j、m 都从事件 4 出发,而事件 4 要等 e 在时刻 5 完成后才能发生。h、k、n 又依赖这些后续事件,最早也在 5 之后开始,均不能与 e 重叠。只在同一时刻结束和开始不算一段时间内同时执行。
(3)最大时间余量。
由活动表,j 的时间余量最大,为
l(j)−e(j)=vl(5)−1−ve(4)=12−1−5=6.
也就是说 j 最早可在 5 开始,最晚可在 11 开始而于 12 完成,允许延迟 6 个时间单位。这是保持工程工期不变的总余量,不是 j 自身的持续时间。
(4)b 在时刻 6 开始时的调整。
设 b 的新持续时间为 t。事件 2 既要等待 b,也要等待 f;f 最早在 5+4=9 完成,所以事件 2 最早为 max(6+t,9)。随后 k 还需 2,必须满足
max(6+t,9)+2≤12.
于是 6+t≤10,即 b 最多持续 4 个时间单位。取 t=4 时,b 在 10 完成,k 在 10~12 进行,仍可按 12 完工。
若 b 保持原持续时间 5,则它在 11 完成,路径 b、k 最早要到 11+2=13 才完成。要把该路径压缩回 12,必须将其后继活动 k 至少压缩 1 个时间单位,即从 2 压缩到 1。此时事件 2 在 11 发生,k 在 12 完成,其他路径仍可按原安排在 12 前完成。压缩与 b、k 无关的活动不能消除这条路径的 1 单位超时。