1. 什么是关键路径?
官方定义 :在项目网络图中,从起点到终点的最长路径,它决定了项目的最短总工期。关键路径上的任何一个活动延误,都会直接导致整个项目延期。
通俗类比:装修一套房子,有很多并行的工作:
- 拆墙→水电→瓦工→木工→油漆(这是一条主线)
- 同时可以做:定制家具、买家电、做窗帘
关键路径就是那条最长、最不能耽误的主线。哪怕定制家具晚了 10 天,只要主线没耽误,房子还是能按时入住;但如果瓦工晚了 10 天,整个装修工期就一定会延长 10 天。
2. 什么是松弛时间(浮动时间)?
官方定义 :在不影响整个项目总工期的前提下,一个活动可以延误的最大时间。
通俗类比:还是装修的例子:
- 定制家具需要 30 天,而主线从水电到油漆需要 45 天。那么定制家具就有15 天的松弛时间------ 它可以晚 15 天开始,或者中间耽误 15 天,都不会影响总工期。
- 而瓦工没有任何松弛时间,它晚 1 天,整个项目就晚 1 天。
✅ 核心结论:
- 关键路径上的所有活动,松弛时间 = 0
- 非关键路径上的活动,松弛时间 > 0
二、两个重要的松弛时间(考试必区分)
很多人搞不清这两个,我用表格一次性讲清楚:
表格
| 类型 | 定义 | 计算公式 | 核心含义 | 影响范围 |
|---|---|---|---|---|
| 总松弛时间 | 不影响整个项目总工期的前提下,活动可延误的最大时间 | LS-ES 或 LF-EF | 这个活动最多能拖多久,才会让整个项目延期 | 影响整个项目 |
| 自由松弛时间 | 不影响紧后活动最早开始时间的前提下,活动可延误的最大时间 | 紧后活动 ES - 本活动 EF | 这个活动最多能拖多久,才会影响到下一个活动 | 只影响紧后活动 |
举个例子:
- 活动 A:买水泥,最早完成时间是第 3 天
- 紧后活动 B:瓦工进场,最早开始时间是第 5 天
那么活动 A 的自由松弛时间 = 5-3=2 天。也就是说,买水泥可以晚 2 天完成(第 5 天完成),瓦工还是能按时进场。如果晚了 3 天(第 6 天完成),瓦工就只能第 6 天进场了。
三、手把手教你计算关键路径和松弛时间(考试必考步骤)
我们用一个软件项目的真实例子来计算,所有步骤都和考试完全一致。
项目背景:开发一个简单的登录功能
表格
| 活动 | 活动名称 | 持续时间(天) | 紧前活动 |
|---|---|---|---|
| A | 需求分析 | 3 | 无 |
| B | 数据库设计 | 2 | A |
| C | 前端页面开发 | 4 | A |
| D | 后端接口开发 | 5 | B |
| E | 前后端联调 | 2 | C、D |
| F | 测试上线 | 1 | E |
计算步骤(共 4 步)
第一步:绘制项目网络图(节点图)
我们用节点表示活动,箭线表示依赖关系:
plaintext
A(3) → B(2) → D(5) → E(2) → F(1)
↘
C(4) ↗
第二步:正推法(从左到右)计算最早开始 (ES) 和最早完成 (EF)
- 规则:最早开始时间 = 所有紧前活动最早完成时间的最大值
- 公式:EF = ES + 持续时间
计算过程:
- A:ES=0,EF=0+3=3
- B:ES=3(A 的 EF),EF=3+2=5
- C:ES=3(A 的 EF),EF=3+4=7
- D:ES=5(B 的 EF),EF=5+5=10
- E:ES=max (7,10)=10(C 和 D 的 EF 最大值),EF=10+2=12
- F:ES=12(E 的 EF),EF=12+1=13
✅ 项目最短总工期 = 13 天
第三步:逆推法(从右到左)计算最晚完成 (LF) 和最晚开始 (LS)
- 规则:最晚完成时间 = 所有紧后活动最晚开始时间的最小值
- 公式:LS = LF - 持续时间
计算过程:
- F:LF=13(总工期),LS=13-1=12
- E:LF=12(F 的 LS),LS=12-2=10
- D:LF=10(E 的 LS),LS=10-5=5
- C:LF=10(E 的 LS),LS=10-4=6
- B:LF=5(D 的 LS),LS=5-2=3
- A:LF=min (3,3)=3(B 和 C 的 LS 最小值),LS=3-3=0
第四步:计算总松弛时间,找出关键路径
- 公式:总松弛时间 = LS - ES = LF - EF
计算结果:
- A:0-0=0
- B:3-3=0
- C:6-3=3
- D:5-5=0
- E:10-10=0
- F:12-12=0
✅ 关键路径 :总松弛时间为 0 的活动组成的路径 → A→B→D→E→F ✅ 非关键活动:C,总松弛时间 = 3 天
四、关键路径和松弛时间的核心特点(考试高频考点)
关键路径的特点
- 决定项目总工期:关键路径的长度就是项目的最短总工期
- 没有松弛时间:关键路径上的任何活动延误,都会导致总工期延误
- 可能有多条:一个项目可以有 2 条或更多条关键路径,它们的长度相同
- 会动态变化:当某个非关键活动的延误超过了它的松弛时间,它就会变成关键活动,关键路径也会随之改变
松弛时间的特点
- 总松弛时间是整条路径共享的:如果一条非关键路径上有多个活动,它们共享同一个总松弛时间。比如路径 A→C→E 的总松弛时间是 3 天,如果 C 用了 2 天,那么 E 就只剩下 1 天的松弛时间了。
- 自由松弛时间是活动独有的:自由松弛时间用完了,才会影响到紧后活动,进而影响总松弛时间。
- 松弛时间为负:如果项目要求的工期比关键路径的长度短,就会出现负的松弛时间,这意味着项目需要赶工。
五、实际应用中的重要技巧
- 缩短项目工期的唯一方法:压缩关键路径上活动的持续时间。压缩非关键路径的活动,对总工期没有任何影响。
- 风险管控:多条关键路径的项目风险更高,因为任何一条关键路径延误都会导致项目延期。
- 资源优化:可以把非关键路径上的资源暂时调到关键路径上,来缩短总工期。比如把前端开发的一部分人调到后端开发,因为后端在关键路径上。
- 进度监控:重点监控关键路径上的活动,只要关键路径按计划进行,项目就不会延期。
试题分析

- 关键路径 :从项目起点到终点的最长路径,决定了项目的最短总工期。关键路径上的里程碑(节点)和活动(边)的任何延迟都会直接导致总工期延长。
- 最早开始时间(ES):某个里程碑最早可以开始的时间,等于所有指向该里程碑的活动中,最晚完成的那个活动的结束时间(取最大值)。
- 最晚开始时间(LS):某个里程碑在不影响总工期的前提下,最晚可以开始的时间,等于所有从该里程碑出发的活动中,最早需要开始的那个活动的开始时间(取最小值)。
- 活动总时差 :某个活动在不影响总工期的前提下,最多可以延迟开始的时间,计算公式为:
活动总时差 = 活动最晚开始时间 - 活动最早开始时间。
二、步骤 1:计算所有里程碑的最早开始时间(ES)
从起点 A(START)开始,顺推计算,取所有前驱路径的最大值:
- A(起点):ES = 0
- B:仅由 A→B(3 天)到达,ES = 0+3 = 3
- C:仅由 A→C(4 天)到达,ES = 0+4 = 4
- D:仅由 A→D(5 天)到达,ES = 0+5 = 5
- E:仅由 B→E(5 天)到达,ES = 3+5 = 8
- F:由 B→F(6 天,3+6=9)和 C→F(3 天,4+3=7)到达,取最大值 9,ES = 9
- G:仅由 D→G(3 天)到达,ES = 5+3 = 8
- H:仅由 E→H(2 天)到达,ES = 8+2 = 10
- I:仅由 G→I(2 天)到达,ES = 8+2 = 10
- J:由 H→J(2 天,10+2=12)、F→J(5 天,9+5=14)和 I→J(4 天,10+4=14)到达,取最大值 14,ES = 14
- K:由 J→K(2 天,14+2=16)和 I→K(4 天,10+4=14)到达,取最大值 16,ES = 16
- L(终点):由 J→L(8 天,14+8=22)和 K→L(3 天,16+3=19)到达,取最大值 22,ES = 22
结论:项目总工期为 22 天。
三、步骤 2:计算所有里程碑的最晚开始时间(LS)
从终点 L(FINISH)开始,逆推计算,取所有后继路径的最小值:
- L(终点):LS = ES = 22(终点不能延迟)
- K:仅指向 K→L(3 天),LS = 22-3 = 19
- J:指向 J→L(8 天,22-8=14)和 J→K(2 天,19-2=17),取最小值 14,LS = 14
- I:指向 I→J(4 天,14-4=10)和 I→K(4 天,19-4=15),取最小值 10,LS = 10
- H:仅指向 H→J(2 天),LS = 14-2 = 12
- G:仅指向 G→I(2 天),LS = 10-2 = 8
- F:仅指向 F→J(5 天),LS = 14-5 = 9
- E:仅指向 E→H(2 天),LS = 12-2 = 10
- D:仅指向 D→G(3 天),LS = 8-3 = 5
- C:仅指向 C→F(3 天),LS = 9-3 = 6
- B:指向 B→E(5 天,10-5=5)和 B→F(6 天,9-6=3),取最小值 3,LS = 3
- A(起点):指向 A→B(3 天,3-3=0)、A→C(4 天,6-4=2)和 A→D(5 天,5-5=0),取最小值 0,LS = 0
四、步骤 3:确定关键路径与非关键里程碑
关键路径上的里程碑满足:最早开始时间 = 最晚开始时间(ES=LS)。
对比各节点的 ES 和 LS:
表格
| 里程碑 | ES | LS | 是否在关键路径上 |
|---|---|---|---|
| A | 0 | 0 | 是 |
| B | 3 | 3 | 是 |
| C | 4 | 6 | 否 |
| D | 5 | 5 | 是 |
| E | 8 | 10 | 否 |
| F | 9 | 9 | 是 |
| G | 8 | 8 | 是 |
| H | 10 | 12 | 否 |
| I | 10 | 10 | 是 |
| J | 14 | 14 | 是 |
| K | 16 | 19 | 否 |
| L | 22 | 22 | 是 |
关键路径(共 2 条,总工期均为 22 天):
- A → B → F → J → L(3+6+5+8=22 天)
- A → D → G → I → J → L(5+3+2+4+8=22 天)
不在关键路径上的里程碑:C、E、H、K(第 (15) 题答案为这四个中的一个,通常考试选项会设置为 C)。
五、步骤 4:计算活动 BE 的总时差(第 (16) 题)
活动 BE 是从里程碑 B 到 E 的活动,持续时间 5 天。
- 活动最早开始时间 = 前驱里程碑 B 的 ES = 3 天
- 活动最晚开始时间 = 后继里程碑 E 的 LS - 活动持续时间 = 10-5 = 5 天
- 活动总时差 = 最晚开始时间 - 最早开始时间 = 5-3 = 2 天
验证:如果 BE 晚 2 天开始(第 5 天开始),则 E 在第 10 天结束,E→H 在第 12 天结束,H→J 在第 14 天结束,刚好赶上 J 的最早开始时间(14 天),总工期仍为 22 天。如果晚 3 天开始,J 的最早开始时间将推迟到 15 天,总工期变为 23 天,影响项目交付。
六、最终答案
(15) C(或 E、H、K,根据选项选择) (16) 2