关键路径法 CPM 与浮动时间
核心概念
关键路径法(Critical Path Method, CPM) 在活动网络(0003)上计算:从起点到终点,哪条路径总工期最长——它就是关键路径,决定了项目的最短可能工期。
计算依赖两组时间参数(正向+反向推演):
- 最早开始 ES / 最早完成 EF(正向推):从项目起点顺流,ES = max(前置 EF),EF = ES + 工期。
- 最晚开始 LS / 最晚完成 LF(反向推):从项目终点逆流,LF = min(后继 LS),LS = LF − 工期。
- 总浮动 TF(Total Float) = LS − ES = LF − EF:活动可延误而不拖总工期的余地。
关键路径 = 总浮动为 0 的活动连成的路径。 这些活动「一天都不能拖」,否则整个项目延期。非关键活动有正浮动,可弹性调度。
赶工(Crash):要缩短总工期,只能压缩关键路径上的活动(加资源/加班/简化)。压缩一条关键路径后,可能出现新的关键路径——所以赶工是迭代的,且边际成本递增。
关键路径是项目的「阿喀琉斯之踵」:它不显眼,但任意一环延误都直接扣总工期。监控资源与注意力,应优先压在零浮动的活动上。
实务直觉
第一原则:管项目就是管关键路径。 非关键活动晚两天常常无妨;关键活动晚一天,承诺日期就破。把稀缺的管理注意力放在浮动为 0 的地方,性价比最高。
- 压缩非关键路径是徒劳。 给一个有 5 天浮动的活动加人赶工,总工期纹丝不动——你省下的 5 天本就是缓冲。赶工必须对准关键路径。
- 关键路径会「漂移」。 原关键活动提前、或某非关键活动因风险超支吃掉浮动,次长路径就升为关键。所以关键路径不是一次算定、永久不变,要随进度动态重算。
- 浮动是共享资源,不是白送的假期。 一条路径上多个活动的浮动可能互相挤占;一个活动用了浮动,后续兄弟活动浮动就减少。别把浮动当「可以随意拖延」。
跨学科应用
图论:最长路径问题
CPM 即在 DAG 上求最长权重路径(权重=工期)。与最短路同构(取负权跑最短路)。关键活动即该路径上的节点。环(循环依赖)会让最长路径无穷大——意味着计划有逻辑死锁。
运筹学:资源约束下的调度(RCPSP)
纯 CPM 假设资源无限。现实资源有限(唯一架构师),需在「时间最优」与「资源可行」间平衡(资源平衡 Resource Leveling),可能主动放弃部分浮动换资源可行。
敏感度分析:哪条路径最脆弱
给各活动工期加扰动,看总工期波动幅度——波动大的路径(近关键、高不确定性)是监控重点。这把 0003 的概率思想接进排期。
系统动力学:反馈延迟
压缩关键路径常诱发的副作用:新人上手期反而拖慢(布鲁克斯定律,见 0011)。赶工不是免费午餐。
练习题
单选题
项目的「关键路径」是指?
单选题
某活动总浮动 TF = 0,意味着?
判断题
要给项目赶工缩短总工期,给任意有富余时间的活动加人即可。
案例题
项目两条并行路径:A→B(各 10 天,共 20) 与 C→D(各 8 天,共 16)。当前关键路径是 A→B(20 天)。你给 B 赶工 4 天(变 6 天),总工期变成多少?接下来该压谁?
参考答案:B 赶工后 A→B = 10+6 = 16 天,与 C→D 的 16 天持平——总工期压到 16 天。此时出现双关键路径(A→B 与 C→D 都零浮动)。再想压缩总工期,必须同时压两条路径上的活动(例如再压 A 和 C 各 2 天),只压一条已无效——这正是关键路径漂移、赶工边际成本递增的体现。