Appearance
题目
下列 AOE 网表示一项包含 8 个活动的工程。通过同时加快若干活动的进度可以缩短整个工程的工期。下列选项中,加快其进度就可以缩短工程工期的是()
错因
A
只看见"路径 1→2→4→6 上有 c"和"路径 1→2→5→6 上有 e"两条经过 2 的路径,以为已经覆盖了所有最长路径。漏看了第三条同样长 27 的关键路径 1→3→5→6(b+f+h = 27)——这条路径既没有 c 也没有 e,所以哪怕 c 和 e 同时缩短,1→3→5→6 仍是 27,整体工期不变。
B
发现 d 同时位于 1→3→2→4→6 和 1→3→2→5→6 这两条关键路径上,以为加上 e 就能扫掉所有"长链"。但同样漏看了第三条关键路径 1→3→5→6(b+f+h)——它绕开了节点 2,d 和 e 都不在上面,所以工期下不来。
D
把 h 看成"通用要冲"——h 在路径 1→3→2→5→6 和 1→3→5→6 上确实是必经边,但第一条关键路径 1→3→2→4→6(b+d+c+g)走的是 4→6(边 g),完全不经过 h。f 也不在这条路径上。所以缩短 f 和 h 后,1→3→2→4→6 的长度仍是 27。
总解析
第一步:求各事件的最早发生时间 ve(i)(按拓扑序正向递推):
| 事件 | 计算 | ve |
|---|---|---|
| 1 | 起点 | 0 |
| 3 | 8 | |
| 2 | 12 | |
| 4 | 21 | |
| 5 | 18 | |
| 6 | 27 |
整个工程工期 = ve(6) = 27。
第二步:求各事件的最迟发生时间 vl(i)(按逆拓扑序反向递推):
| 事件 | 计算 | vl |
|---|---|---|
| 6 | = ve(6) | 27 |
| 4 | 21 | |
| 5 | 18 | |
| 2 | 12 | |
| 3 | 8 | |
| 1 | 0 |
第三步:找关键活动(活动 关键 ⟺ 与 相等,即时间余量为 0):
| 活动 | 余量 | 关键? | ||
|---|---|---|---|---|
| a (1→2) | 0 | 9 | 9 | ✗ |
| b (1→3) | 0 | 0 | 0 | ✓ |
| c (2→4) | 12 | 12 | 0 | ✓ |
| d (3→2) | 8 | 8 | 0 | ✓ |
| e (2→5) | 12 | 12 | 0 | ✓ |
| f (3→5) | 8 | 8 | 0 | ✓ |
| g (4→6) | 21 | 21 | 0 | ✓ |
| h (5→6) | 18 | 18 | 0 | ✓ |
关键活动:b, c, d, e, f, g, h(除 a 外全部)。
第四步:列出所有关键路径(关键活动连成的从源到汇的路径):
| 关键路径 | 长度 |
|---|---|
| P1: | |
| P2: | |
| P3: |
第五步:要缩短工期,必须同时缩短所有关键路径。逐选项检查:
| 选项 | 缩短的活动 | P1 经过? | P2 经过? | P3 经过? | 能缩短工期? |
|---|---|---|---|---|---|
| A | c, e | ✓(c) | ✓(e) | ✗ | ✗ P3 不动 |
| B | d, e | ✓(d) | ✓(d/e) | ✗ | ✗ P3 不动 |
| C | f, d | ✓(d) | ✓(d) | ✓(f) | ✓ 三路全覆盖 |
| D | f, h | ✗ | ✓(h) | ✓(f/h) | ✗ P1 不动 |
关键路径题的通用解法:① 算 ve、vl → 找出所有关键活动;② 列出所有关键路径(注意常常多于 1 条);③ 选项里"加快若干活动"能缩短工期的充要条件是这些活动构成所有关键路径的"覆盖集"——少一条路径没覆盖就白干。本题最容易踩的坑就是只看到 1~2 条关键路径,忽视了平行存在的第三条。
最终答案是 C(f 和 d)。