Appearance
题目
下图是一个有 10 个活动的 AOE 网,时间余量最大的活动是 ( )。
错因
A
只看到 c 的持续时间短(=1)就以为余量大。但余量与活动持续时间长短无关,要算 才能比较。c (2→3) 实际余量 ,远小于 g 的 6。把"看起来轻量"当成"余量大"是典型直觉错误。
C
把 h(4→5) 与 g(3→6) 混淆——两者持续时间都为 1,看起来差不多。但 h 处于"4→5→6"路径上,前置活动 4 已经被关键路径 (b-e-i) 拉到 ,h 的早开始 、晚开始 ,余量只有 2。而 g 是从 3 直接跨到终点 6 的"捷径",绕过了关键路径上的紧约束,余量自然最大。
D
j(5→6) 的早开始 、晚开始 ,余量 。选 D 的人可能只看到"j 也是从中间汇入终点的小活动"就当作和 g 一样,但 5 是 b-e-h 与 b-f 共同推到的较紧节点,留给 j 的弹性远小于 g。
总解析
思路:AOE 网每个活动 的时间余量公式
求解步骤:① 拓扑序求各事件的最早发生时间 ;② 逆拓扑序求最迟发生时间 ;③ 对每个活动算 slack。
Step 1:求 (从 v1 顺推,取入边 max)
| 事件 | 公式 | |
|---|---|---|
| v1 | 起点 | 0 |
| v2 | 2 | |
| v3 | 5 | |
| v4 | 8 | |
| v5 | 9 | |
| v6 | 12 |
工程总工期 = 。
Step 2:求 (从 v6 逆推,取出边 min)
| 事件 | 公式 | |
|---|---|---|
| v6 | 终点 = | 12 |
| v5 | 11 | |
| v4 | 8 | |
| v3 | 5 | |
| v2 | 4 | |
| v1 | 0 |
Step 3:算每个活动的 slack
| 活动 | slack | ||||
|---|---|---|---|---|---|
| a | 1→2 | 2 | 0 | 4−2=2 | 2 |
| b | 1→3 | 5 | 0 | 5−5=0 | 0 ⭐ |
| c | 2→3 | 1 | 2 | 5−1=4 | 2 |
| d | 2→4 | 3 | 2 | 8−3=5 | 3 |
| e | 3→4 | 3 | 5 | 8−3=5 | 0 ⭐ |
| f | 3→5 | 4 | 5 | 11−4=7 | 2 |
| g | 3→6 | 1 | 5 | 12−1=11 | 6 |
| h | 4→5 | 1 | 8 | 11−1=10 | 2 |
| i | 4→6 | 4 | 8 | 12−4=8 | 0 ⭐ |
| j | 5→6 | 1 | 9 | 12−1=11 | 2 |
关键路径是 b → e → i(slack 全为 0),总工期 12。g 的余量最大 = 6——它从 v3 直接跨到终点 v6,路径自由度大,比所有其他活动都松。
最终答案是 B(g)。
下图把关键路径(红色)和最大余量活动 g(蓝色)画了出来: