Skip to content

2013年 408 数据结构 第 9 题

数据结构2013年选择题2分

题目

下列 AOE 网表示一项包含 8 个活动的工程。通过同时加快若干活动的进度可以缩短整个工程的工期。下列选项中,加快其进度就可以缩短工程工期的是()

a=3b=8d=4c=9e=6f=10g=6h=9123456

错因

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
38
212
421
518
627

整个工程工期 = ve(6) = 27

第二步:求各事件的最迟发生时间 vl(i)(按逆拓扑序反向递推):

事件计算vl
6= ve(6)27
421
518
212
38
10

第三步:找关键活动(活动 关键 ⟺ 相等,即时间余量为 0):

活动余量关键?
a (1→2)099
b (1→3)000
c (2→4)12120
d (3→2)880
e (2→5)12120
f (3→5)880
g (4→6)21210
h (5→6)18180

关键活动:b, c, d, e, f, g, h(除 a 外全部)

第四步:列出所有关键路径(关键活动连成的从源到汇的路径):

关键路径长度
P1:
P2:
P3:

第五步:要缩短工期,必须同时缩短所有关键路径。逐选项检查:

选项缩短的活动P1 经过?P2 经过?P3 经过?能缩短工期?
Ac, e✓(c)✓(e)✗ P3 不动
Bd, e✓(d)✓(d/e)✗ P3 不动
Cf, d✓(d)✓(d)✓(f)✓ 三路全覆盖
Df, h✓(h)✓(f/h)✗ P1 不动

关键路径题的通用解法:① 算 ve、vl → 找出所有关键活动;② 列出所有关键路径(注意常常多于 1 条);③ 选项里"加快若干活动"能缩短工期的充要条件是这些活动构成所有关键路径的"覆盖集"——少一条路径没覆盖就白干。本题最容易踩的坑就是只看到 1~2 条关键路径,忽视了平行存在的第三条。

最终答案是 C(f 和 d)

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数