上一篇拆的是下午那张主观卷——它踩点给分,一道 25 分的大题由若干小问拼成,写到几个得分点就拿几分。在项目管理类科目(中级系统集成项目管理工程师,简称中项;高级信息系统项目管理师,简称高项)的案例卷里,有几类小问年年出现、答案唯一、可以练到基本不丢分。其中最典型的一类就是 计算题。高项案例分析一共三道大题,其中一道是计算题,关键路径法和挣值管理是这类题的主力考点,相关分值常在 15 分上下 4。
计算题里出场率最高的一种叫 关键路径法(Critical Path Method,缩写 CPM)。它在上午的选择题里也几乎年年出现 2。这篇把它从读图讲到结论,顺带说清它为什么是你最该先练熟的题型。
网络图:把“谁必须等谁”画出来
一个项目可以拆成若干 活动,也就是一件件要花时间做完的事。活动之间有先后关系:需求没做完,设计就开不了工——需求是设计的 紧前活动,设计是需求的 紧后活动。
把这些活动和它们之间的先后关系连成一张图,就是 网络图。软考卷面上很少直接给你画好的图,更常见的是给一张表:
| 活动 | 紧前活动 | 工期(天) |
|---|---|---|
| A | 无 | 3 |
| B | A | 4 |
| C | A | 2 |
| D | B | 3 |
| E | C | 4 |
| F | D、E | 2 |
读表只要盯一件事:每个活动的紧前都有谁。这张表就是整张网络图,后面所有计算都从它出发。
四个时间参数,全是“时刻”不是“第几天”
每个活动会算出一组四个数字:
- 最早开始时间 :等齐所有紧前活动之后,最早能在哪个时刻开工。
- 最早完成时间 。
- 最晚完成时间 :为了不拖累项目总工期,最迟必须在哪个时刻做完。
- 最晚开始时间 。
这四个数都是 时刻,不是“第几天”。A 从 0 时刻开始、到 3 时刻完成,下一个活动就接着从 3 时刻开始。日常口语会说“第 4 天一早”,公式里写 3。这点后面还会专门说,先记住它是时刻。
顺推取大:从前往后走一遍
第一遍叫 顺推,从起点往终点走,算 和 。规则两条:起点活动的 记 0;一个活动有多个紧前时, 取所有紧前 里 最大 的那个。
套到例子上:
- A 没有紧前:,。
- B 的紧前是 A:,。
- C 的紧前是 A:,。
- D 的紧前是 B:,。
- E 的紧前是 C:,。
- F 的紧前是 D 和 E:取 里更大的 10,,。
终点 F 的最早完成时间 12,就是项目的 最短总工期:12 天。
为什么取最大?因为紧前活动要 全部 做完当前活动才能开始,起算点只能是最晚收工的那个紧前。
逆推取小:从后往前再走一遍
第二遍叫 逆推,从终点往起点走,算 和 。起点的规则换了:终点活动的 直接等于它的 ,也就是总工期;一个活动有多个紧后时, 取所有紧后 里 最小 的那个。
- F 是终点:,。
- D 的紧后只有 F:,。
- E 的紧后只有 F:,。
- B 的紧后只有 D:,。
- C 的紧后只有 E:,。
- A 的紧后有 B 和 C:取 里更小的 3,,。
取最小的道理和顺推镜像对称:一个活动后面挂着好几个紧后,为了谁都不耽误,它必须在 最早要开工的那个紧后 之前做完——所以看的是最小的那个 。
总时差与自由时差:两种“还能拖多久”
两遍算完,六个时间参数就齐了。这时算两个时差:
两个名字很像,差别在“不影响谁”:
- 总时差问的是:拖多久才不影响 项目总工期。
- 自由时差问的是:拖多久才不影响 紧后活动的最早开始。
把所有数字填成一张表:
| 活动 | 工期 | ES | EF | LS | LF | 总时差 | 自由时差 |
|---|---|---|---|---|---|---|---|
| A | 3 | 0 | 3 | 0 | 3 | 0 | 0 |
| B | 4 | 3 | 7 | 3 | 7 | 0 | 0 |
| C | 2 | 3 | 5 | 4 | 6 | 1 | 0 |
| D | 3 | 7 | 10 | 7 | 10 | 0 | 0 |
| E | 4 | 5 | 9 | 6 | 10 | 1 | 1 |
| F | 2 | 10 | 12 | 10 | 12 | 0 | 0 |
C 和 E 的对比最能说明问题。两个活动的总时差都是 1 天:各拖 1 天,都不会让总工期超过 12 天。但 C 的自由时差是 0——C 只要拖上 1 天,紧后活动 E 的最早开始就被从第 5 天顶到第 6 天,E 的完成时间跟着从 9 变成 10。只不过 D 也是在 10 收工,F 要等的是 D 和 E 里更晚的那个,所以总工期仍然不动。E 的自由时差是 1,道理就在这:E 拖 1 天, 从 9 变 10,还是没超过 D 的 10,F 依旧在 10 开工。
这里还藏着一条永远成立的规律:自由时差 ≤ 总时差。因为自由时差同时受“紧后活动”和“总工期”两重约束,约束越多,能拖的时间只会越短。E 是 1 对 1,C 是 0 对 1,都符合。
关键路径:总时差为 0 的那条链
总时差为 0 的活动串起来,就是 关键路径:A → B → D → F,长度 ,正好等于总工期。
关键路径可以一句话说清:它是从起点到终点 最长 的那条链,而项目不可能比最长的链更早完工,所以这条链的长度就是总工期,链上任何活动拖一天,总工期就跟着多一天。你也能靠枚举所有路径来核对(本例另一条 A → C → E → F 是 ,短于 12),但活动一多,路径数量会爆炸,用总时差为 0 判断更稳。
为什么这是最该先练稳的分
它是下午卷里少有的“有标准答案”的部分。 上一篇说过主观题踩点给分、允许答案不完整,但计算题不同:数值和结论是客观的,对就是对。作答时通常还要求把计算过程写出来 1——公式一条、代入一条、结果一条、结论一条,各自都是得分点。你会算,就能一分不落地收下。
题型高度固定。 中项和高项案例里的进度类计算,问来问去就那几件事。2023 年下半年中项的一道案例计算题同时问了四件:关键路径与工期是什么、这张进度图叫什么、任务 A、D、F 的总时差和自由时差各是多少、任务 C 拖延 1 周对项目进度有没有影响 5。用的全是这一篇里的方法。
算出来的数能自己校验。 自由时差不会大于总时差;关键路径的长度一定等于你算出的总工期。这两条对不上,就说明中间某步错了,不用等对答案才知道。
最容易错的一处:时刻,不是天数
最后说一个高频失分点。 直接等于紧前活动的 ,千万不要加 1。
A 从 0 做到 3,B 紧接其后从 3 开始——这是“0 到 3 三个单位时间”和“3 到 7 四个单位时间”首尾相接的写法。日常你会说“A 干了三天,第四天 B 开工”,但卷面上的时间参数按时刻算,写成 3 3。一旦脑子里按自然天数去数,后面每个活动的 、 都会整体偏移,连带关键路径和时差全错。
这里还有一条边界:这一整套计算成立的前提,是每个活动的工期已经估好、依赖关系已经定死。工期本身是估出来的数,所以 CPM 给出的“最短总工期”按的是当前估算;方案一变、工期一调,关键路径可能整条换掉。