第 18 章 · 网络图与关键路径计算实战
考点梳理
18.1 网络图计算五步法(“正推 → 逆推 → 浮动 → 关键 → 压缩”)
| 步 | 方向 | 公式 | 说明 |
|---|---|---|---|
| 1 正推 | 左→右 | ES = max(所有前置 EF);EF = ES + 工期 | 起点 ES=0 |
| 2 逆推 | 右→左 | LF = min(所有后续 LS);LS = LF − 工期 | 终点 LF=项目工期 |
| 3 总浮动 TF | — | TF = LS − ES = LF − EF | 不延误项目可推迟时间 |
| 4 关键路径 | — | TF = 0 的路径(最长路径) | 决定项目最短工期 |
| 5 自由浮动 FF | — | FF = min(后续 ES) − EF | 不影响后续活动可推迟时间 |
记忆锚:“正推 EF 累加,逆推 LS 倒减;关键路径 TF=0,自由浮动看后继”。
18.2 关键路径要点(“4 个高频结论”)
- 关键路径 = 最长路径(不是"最短"!经典陷阱);
- 关键路径可能有多条(“两条都 TF=0,都关键”);
- 关键路径上的活动 = 关键活动(“动它整个项目延期”);
- 非关键路径的 TF 会变(“关键路径延长后,原非关键路径可能变关键”)。
18.3 进度压缩(“2 招”)
| 招 | 做法 | 代价 |
|---|---|---|
| 赶工(crashing) | 加资源(加班/加人)压缩关键活动 | 花钱;有压缩极限(“再加也不快”) |
| 快速跟进(fast tracking) | 把串行活动改并行 | 加风险(返工概率↑) |
铁律:“只压关键路径上的活动”——“压非关键活动(TF>0)对项目工期毫无帮助”(“经典陷阱”)。
📝 深度精讲(5 道带解析算例)
例 1(基础正推逆推)
活动:A(2)→B(3)→D(4);A(2)→C(1)→D(4)。求各活动 ES/EF/LS/LF/TF 与关键路径。
解析:
- 正推:A(ES0,EF2);B(ES2,EF5);C(ES2,EF3);D(ES=max(5,3)=5, EF9)。项目工期=9。
- 逆推:D(LF9,LS5);B(LF5,LS2);C(LF5,LS4);A(LF=min(2,4)=2,LS0)。
- TF:A=0,B=0,D=0,C=LS4−ES2=2。
- 关键路径:A→B→D(工期 9);C 有 2 天浮动。
例 2(多关键路径)
A(3)→C(2);A(3)→B(2)→C(2)。求关键路径。
解析:
- 正推:A(0,3);B(3,5);C(ES=max(3,5)=5, EF7)。工期=7。
- 逆推:C(LF7,LS5);B(LF5,LS3);A(LF=min(5,3)=3,LS0)。
- TF:A=0,B=0,C=0 → 两条路径都关键:A→C 和 A→B→C。
- 结论:“压缩时必须两条关键路径同时压”(只压一条,另一条仍卡工期)。
例 3(进度压缩·赶工)
例 1 中项目要求工期从 9 天压到 7 天。各活动赶工成本:B(3天,2万/天),D(4天,5万/天),A(2天,1万/天)(都压 1 天)。怎么压最省?
解析:
- 关键路径 A→B→D(9 天),需压 2 天。
- 只能压关键活动(A/B/D)。单位赶工成本:A 1万、B 2万、D 5万。
- 先压最便宜的 A(1万,压 1 天)→ A 变 1 天,关键路径变 8 天;
- 再压 B(2万,压 1 天)→ B 变 2 天,关键路径 A(1)+B(2)+D(4)=7 天 ✓。
- 总赶工成本 = 1 + 2 = 3 万。
- 易错:直接压 D(5万/天)最贵,不选;“先便宜后贵,且每次压完要重看关键路径”。
例 4(陷阱:压非关键活动)
例 1 中,想把 C(TF=2)从 1 天压到 0 天,能让项目提前吗?
解析:不能。C 是非关键活动,TF=2,压掉 1 天它还有 1 天浮动,项目工期仍由关键路径 A→B→D 决定 = 9 天。“压非关键活动对总工期零贡献”(“除非压到它变成关键路径”)。
例 5(自由浮动 vs 总浮动)
活动 X:ES=3, EF=5, LS=5, LF=7。后继活动 ES=6。求 TF 和 FF。
解析:
- TF = LS − ES = 5 − 3 = 2(或 LF−EF=7−5=2)。
- FF = min(后继 ES) − EF = 6 − 5 = 1。
- 区别:TF=2 指"X 最多可推迟 2 天不延误项目";FF=1 指"X 最多推迟 1 天不影响后继开始"。“TF ≥ FF 恒成立”。
🧠 记忆工具箱
口诀速记
- 五步:“正推累加 EF,逆推倒减 LS,TF 看 LS 减 ES,关键路径 TF 零”;
- 关键:“关键是最长不是最短,可能有多条,压要同时压”;
- 压缩:“只压关键活动,先便宜后贵,压完重看路径”;
- 浮动:“总浮动看自己 LS,自由浮动看后继 ES”。
场景锚点
- 关键路径想象"“串珠项链”":你不是戴项链的人(不需要戴),你是"做项链的"——“每颗珠子 = 一个活动,珠子大小 = 工期;关键路径 = 那条最长的串(项链总长由它定)”——“想缩短项链?只能磨小最长串上的珠子(赶工),或把两串并排穿(快速跟进);磨短串上的珠子?项链总长纹丝不动(非关键活动有’空隙’=浮动)”。
⚠️ 易错提醒
- “关键路径 = 最短路径” = 高频错:“关键路径是最长路径”(“它决定最短工期,但它本身是最长”);
- 只压一条关键路径:“多条关键路径要同时压”(“漏一条 = 白压”);
- 压非关键活动:“对总工期零贡献”(“除非它变成关键”);
- TF 与 FF 混淆:“TF≥FF;FF 看后继 ES,TF 看自己 LS”;
- 逆推起点错:“终点 LF = 项目工期(正推算出的),不是 0”。