软考进度管理三张图:甘特图、PERT图与项目活动图关键路径实战

发布时间:2026/11/3 23:12:11
软考进度管理三张图:甘特图、PERT图与项目活动图关键路径实战

进度管理这块内容,我在备考和带项目的这些年里来来回回翻过很多遍,越翻越觉得有意思:软考教材把甘特图、PERT图、项目活动图(也就是我们常说的活动网络图)摆在同一个章节里讲,看上去像三个平行选项,实际用起来根本不是一回事。甘特图画得好不好,决定你能不能在一屋子人面前把工期讲明白;PERT图算得准不准,决定你敢不敢对上面拍胸脯说“这个版本八成能按时发”;而项目活动图上的关键路径,才是下午案例题里真正会让人手心出汗的地方——一条路径找错,后面时差、压缩、工期索赔全盘皆输。这篇东西我想把这三张图从“长什么样”一直讲到“关键路径怎么一步步算出来”,中间穿插我自己踩过的坑和考场上的提速办法,无论你是刚翻开教材的新考生,还是带过几个项目但一直靠感觉排期的人,应该都能拿走点能直接用的东西。

1. 把三张图摆到桌面上:它们各自解决什么问题

先说个前提,很多人学这三张图的时候容易陷入一个误区,觉得它们是“同一个东西的三种画法”,谁顺手用谁。实际上它们的抽象层次完全不同:甘特图是时间维度的可视化,PERT图是不确定性的量化工具,项目活动图是逻辑关系的拓扑表达。搞清楚这个分层,后面所有的选型和计算才有落脚点。

1.1 甘特图:横条背后藏着的其实是资源问题

甘特图的画法很朴素:横轴是日历时间,纵轴是活动清单,每个活动画一根横条,条的长度就是工期,条的位置就是起止时间。它的最大优势是零门槛——你把图往会议室投影上一放,业务方、测试、运维、甚至老板,谁都看得懂“哪几天在干什么、哪几天撞车了”。

但我见过太多人把甘特图当成了“排期万能表”,画完就以为项目管住了。这里有个很关键的认知:甘特图本身不表达活动之间的依赖逻辑。你画了A条在1号到5号,B条在4号到9号,图上完全看不出B是不是必须等A做完。有些工具会用箭头连一下,那已经是在甘特图上叠了网络图的表达,属于“带逻辑关系的甘特图”,不是纯粹的横道图了。

所以在软考语境下,甘特图的定位应该记住三条:一是能直观反映进度和实际进展对比(画两条条,一条计划一条实际,偏差一目了然),二是不能直接体现活动间的依赖关系,三是无法直接看出关键路径和总时差。这三条几乎是选择题的固定考法。

真正让我对甘特图改观,是某次做一个多团队协作的项目。当时用网络图排的逻辑关系其实很清晰,但每次跨部门周会上,对方第一句话永远是“我们这部分到底什么时候开始”。后来我在网络图之外单独维护了一张甘特图,只做一件事:把所有活动和里程碑按周铺开,标出每个团队的介入时间段。会议时长直接砍掉一半。甘特图的价值不在于算,而在于沟通。

实操上我建议这样用:逻辑关系用网络图定,时间呈现用甘特图讲。两张图各司其职,别指望一张图干完所有事。画甘特图时还有个小细节,里程碑一定要单独标出来,用菱形或者加粗的零长度条,它跟普通活动的区别是“没有工期、只表示一个时间点”,这个点在软考里也经常被拿来出辨析题。

1.2 PERT图:把“大概要多久”变成“有八成把握多久”

PERT(计划评审技术)最容易被误解的地方,是很多人以为它只是“网络图的另一种叫法”。不是的。PERT真正的贡献是把工期的不确定性纳入了计算框架。

传统估算你只会说“这个活动大概5天”。PERT要求你给出三个数:乐观工期O(一切顺利)、最可能工期M(正常情况)、悲观工期P(各种倒霉事凑一起)。然后按加权平均算期望工期:

TE = (O + 4M + P) / 6

为什么是1:4:1的权重?因为这个公式源自贝塔分布的一个简化近似,它假设“最可能”这种情况出现的概率远高于两个极端,而两个极端出现的可能性大致对称。你可以把它理解成:三个人分别给你报最快、最正常、最慢,你取一个偏向中间值的加权结果。

配套的还有标准差:

σ = (P - O) / 6

这个公式的直觉是,乐观和悲观之间的差距越大,说明这个活动的估算越不靠谱,波动越大。除以6是因为在正态分布假设下,区间跨度大致覆盖±3σ。

期望工期和标准差一旦算出来,就能回答一些非常有价值的问题。举个我自己项目里的真实场景,某次做数据迁移,估算乐观5天、最可能8天、悲观17天:

TE = (5 + 4×8 + 17) / 6 = (5 + 32 + 17) / 6 = 54 / 6 =9天σ = (17 - 5) / 6 = 12 / 6 =2天

这时候如果领导问“12天做完的把握有多大”,就可以算:z = (12 - 9) / 2 = 1.5,查标准正态分布表,Φ(1.5) ≈ 0.9332,也就是大约93.3%。

这个数字比“我尽量12天做完”有用一万倍。它把承诺变成了可讨论的概率,而不是拍脑袋。软考里这类题的计算量不大,但一定要记住三个常用区间:±1σ约68.27%,±2σ约95.46%,±3σ约99.73%。考场上如果记不住精确值,记“68、95、99”这三个数就够了。

需要提醒的是,PERT的三点估算有个隐含前提:活动和活动之间的工期是相互独立的。项目整体工期的方差,是各活动的方差之和再开方,也就是 σ总 = √(σ1² + σ2² + ...)。如果两个活动的风险来源高度相关(比如都要等同一个外部供应商),这个叠加就不准了。这一点教材不会强调,但实际用的时候要留个心眼。

1.3 项目活动图:软考下午题的真正主战场

“项目活动图”这个说法在不同教材里叫法不太统一,有的叫活动网络图,有的叫网络计划图。落到软考的知识体系里,它指的是用节点和箭线表达活动先后顺序的图形化工具,主要有两种画法:

  • 单代号网络图(也叫前导图、PDM、AON,Activity-on-Node):节点表示活动,箭线表示逻辑关系。这是软考最常考的画法,也是计算关键路径最顺手的画法。
  • 双代号网络图(也叫箭线图、ADM、AOA,Activity-on-Arrow):箭线表示活动,节点表示事件(里程碑式的时点)。这种画法会出现“虚活动”这个特殊角色,是难点也是考点。

两者最核心的区别在于:单代号里活动是“点”,双代号里活动是“线”。单代号的连线可以有FS(完成-开始)、SS(开始-开始)、FF(完成-完成)、SF(开始-完成)四种依赖关系,还能带提前量(lead)和滞后量(lag);双代号只有“前一个活动完成后一个才能开始”这一种逻辑,表达能力弱一些,但历史上有它的工程背景。

项目活动图真正值钱的地方,在于它是关键路径法(CPM)的唯一载体。你想知道哪个活动一点都不能拖、哪个活动拖三天也没事、项目最短多少天能干完,这些答案只能从网络图上算出来,甘特图和PERT图都替代不了。软考下午的案例分析题,进度部分十有八九是在网络图上做文章:给你一张表,让你画图、算工期、找关键路径、算时差、判断某个活动延误对总工期的影响。

这里补一个容易被忽略的点:网络图上的工期不等于日历天数。教材里的计算默认“活动一旦开始就连续进行、中间不中断、资源随时可用”,也就是理想状态。真到项目里,你得考虑周末、节假日、审批等待、资源冲突。所以我的习惯是,网络图算出来的是“逻辑最短工期”,然后再叠一层日历和资源约束,得到“可承诺工期”。这两个数都要有,前者用来做技术判断,后者用来对外沟通。

1.4 一张表看清三者的取舍

光靠文字描述容易糊,我整理了一张对照表,这张表基本覆盖了选择题里可能出现的所有辨析角度:

对比维度甘特图PERT图项目活动图(网络图)
核心表达活动在时间轴上的位置与长度活动工期的不确定性分布活动之间的逻辑依赖关系
能否体现依赖纯横道图不能,叠加箭头后可以能能
能否看出关键路径不能(需额外标注)能(期望工期下的关键路径)能,且这是它的核心用途
能否做概率估算不能能,可算按期完成概率不能,只给确定性结果
是否支持虚活动不涉及单代号形式不涉及双代号形式必须掌握
学习曲线极低中等(要会查正态分布表)较高(公式多、易算错)
典型使用场景汇报、沟通、进度对比高风险、强不确定性的研发型工作排逻辑、算工期、做工期压缩分析
软考出题频率高(概念辨析、特征判断)中(三点估算计算题)极高(下午案例必考方向)

看这张表的时候,注意最后一行。很多人复习时把三个工具平均用力,结果把时间花在背甘特图的定义上,反而在关键路径计算上翻车。时间分配应该跟出题频率成正比:网络图占六成,PERT占三成,甘特图占一成足够。

2. 软考视角下的考点地图:哪些题会考、怎么考

知道三个工具是什么之后,下一步得搞清楚考试会怎么考。这块内容我按“过程定位、出题套路、画法约定、选型判断”四条线来梳理,基本能把进度管理这一章的骨架搭起来。

2.1 进度管理六个过程里,它们各自出现在哪一步

软考的进度管理是标准的六个过程:规划进度管理、定义活动、排列活动顺序、估算活动持续时间、制定进度计划、控制进度。三个工具在这六个过程里的落点是不一样的,这个对应关系搞混了,案例题里问“该阶段应使用什么工具”就会答偏。

排列活动顺序这一步的产出物就是项目进度网络图,用到的方法是前导图法(PDM)和箭线图法(ADM),还可能涉及确定依赖关系和提前量/滞后量。这里有个高频细节:提前量(lead)和滞后量(lag)。滞后量是“前一个活动完成后要等几天才能开始下一个”,比如混凝土浇筑完要养护3天;提前量是“后一个活动可以提前几天开始”,比如文档还没全部定稿,编辑就可以先介入前面几章。软考选择题里经常给一句描述让你判断这是lead还是lag,注意方向别搞反。

估算活动持续时间这一步才轮到三点估算登场。除了PERT,这一步还有类比估算、参数估算、储备分析、专家判断。储备分析要区分应急储备(应对已知-未知风险,包含在进度基准内)和管理储备(应对未知-未知风险,不包含在进度基准内,动用需要审批),这个点在案例题里出现过。

制定进度计划是主战场,关键路径法(CPM)、关键链法、资源优化技术(资源平衡与资源平滑)、进度压缩(赶工与快速跟进)、建模技术都在这一步。甘特图作为输出形式之一在这里出现,但真正干活的算法是CPM。

控制进度阶段关注的是进度偏差、挣值分析(SV、SPI)、迭代燃尽图这些。这里跟甘特图关系最紧密,因为实际进度对比通常就是用甘特图做可视化。

把这个映射关系记牢,有个直接好处:案例题里一旦问“项目经理目前处于哪个过程、应该做什么”,你可以从“他在画什么图”倒推。画网络图就是在排列活动顺序,画甘特图多半是在制定计划或汇报进度,做三点估算就是在估工期。

2.2 出题人的三种套路

我把见过的进度题归纳成三种类型,针对性准备效率最高。

第一种是概念辨析型,出现在上午选择题。典型问法:“关于甘特图的描述,正确的是”。选项会围绕“能否体现依赖关系”“能否显示关键路径”“是否适合大型复杂项目”做文章。这类题的应对办法是把上面那张对照表背下来,尤其是甘特图的三个“不能”。

第二种是参数计算型,上午下午都可能出现。给一张单代号网络图或者一张活动表,让你求总工期、关键路径、某活动的总时差/自由时差、某活动延误后工期变成多少。这类题是纯机械计算,唯一的要求是流程标准化,不能凭感觉。

第三种是综合应用型,下午案例题。前面给一大段项目背景,中间列活动表,然后连环问:画网络图、算工期、找关键路径、判断进度是否滞后、给出压缩方案、计算压缩成本。这种题的分值往往在15到20分,答错关键路径基本等于丢掉大半。

三种题型的准备重点完全不同:第一种靠记忆和对比,第二种靠手熟,第三种靠把前两种组合起来并加上一点“项目管理语言”的表达能力。我个人的经验是,第二种必须练到闭着眼睛也不会错,因为它是第三种的地基。

2.3 单代号与双代号的画法约定(含虚活动)

这块是很多人的知识盲区,尤其是双代号里的虚活动,画图时一不留神就画错。

单代号网络图的规则相对简单:每个活动一个方框或圆圈,框里写活动名和工期;箭线从紧前活动指向紧后活动,表示“前者完成后后者才能开始”;有多个紧前活动的,多条箭线汇聚到同一个节点。图上可以标ES、EF、LS、LF、TF、FF六个参数,位置固定下来形成习惯,算起来会快很多。我的习惯是把方框切成上下两行、左右两列:左上ES,右上EF,左下LS,右下LF,方框上方标活动名和工期,下方标总时差。

双代号网络图的规则要复杂得多,核心是“箭线是活动、节点是事件”。这里有四条必须记住的约束:

  • 一条箭线加两端节点只能表示一个活动,两个活动不能共用同一对首尾节点;
  • 网络图中不能出现循环回路;
  • 不能出现没有箭头或没有箭尾的悬空箭线;
  • 除了起点节点和终点节点,其他节点都必须有进有出。

正因为“两个活动不能共用同一对首尾节点”这条约束,虚活动才有了存在的必要。举个典型的例子:活动A工期2天、活动B工期3天,两者都没有紧前活动;活动C的紧前是A和B;活动D的紧前只有A。

如果硬画,A和B都从节点1出发,那它们的终点节点如果都设为节点2,就违反规则了。正确的画法是:

  • 节点1 → 节点2,箭线表示活动A(2天)
  • 节点1 → 节点3,箭线表示活动B(3天)
  • 节点2 → 节点3,虚活动(0天,虚线)
  • 节点3 → 节点4,箭线表示活动C
  • 节点2 → 节点5,箭线表示活动D

这样,进入节点3的活动有B和虚活动,而虚活动来自节点2(A的终点),所以C的紧前活动自然变成了A和B;进入节点2的只有A,所以D的紧前只有A。虚活动在这里的作用是传递逻辑关系,不消耗时间和资源。

软考里关于虚活动的考点集中在三处:一是判断某张图是否需要加虚活动;二是加了虚活动之后关键路径会不会变;三是虚活动的工期恒为0、资源消耗恒为0,不能算进工期。我见过一道题,图上画了虚活动但没标0,很多人手一抖就给它安了个工期,结果整条路径算错。

2.4 选型判断:四问定工具

实际工作和答题时,怎么快速决定该用哪个工具?我总结了四个问题,按顺序问下来基本不会选错:

第一问:你现在要解决的是“讲清楚”还是“算清楚”?讲清楚就是给不同背景的人看进度,选甘特图;算清楚是要确定最短工期和关键路径,选项目活动图。这两个需求经常同时存在,那就两张图都做,别偷懒。

第二问:活动的工期你有多大把握?如果类似的事干过很多次、数据充分,直接给单一工期即可;如果是研发、探索、外部依赖多的场景,估算误差可能上下翻倍,这时候用PERT的三点估算更有价值,它至少能告诉你“这个承诺有多大风险”。

第三问:活动之间的依赖关系复杂吗?三个活动以内的简单串并联,脑子里过一遍就行;一旦活动超过十个、存在多条并行分支、还要考虑跨团队的交付节点,就必须画网络图。人的脑子处理不了超过七八个节点的依赖关系,硬扛必然出错。

第四问:题目/场景里有没有提到概率、置信度、按期完成的可能性?只要出现这类词,答案基本锁定PERT。反过来,如果强调“最短工期”“关键路径”“某活动延误影响”,那就是CPM的地盘。

这四个问题不是理论推演,是我在实际项目里反复用过的判断路径。有一次做外部系统对接,本来按单一工期排了计划,后来发现对方接口上线时间完全不可控,改成三点估算一算,悲观情况下要多出三周,立刻调整了承诺口径。工具选对了,风险就提前暴露了。

3. 关键路径计算实战:一道八活动的题从头算到尾

这部分是整篇的核心。我会用一道八个活动的例题,把正推、逆推、时差、关键路径判定、虚活动处理、PERT概率估算全部走一遍。建议你拿张纸跟着算,比看十遍公式管用。

3.1 先立规矩:六个时间参数的公式与含义

关键路径法的计算对象是每个活动的六个时间参数,先把它们的关系理清楚:

  • ES(最早开始时间):在满足所有紧前活动的前提下,本活动最早能开始的时点。
  • EF(最早完成时间):EF = ES + 工期。
  • LF(最晚完成时间):在不影响项目总工期的前提下,本活动最晚必须完成的时点。
  • LS(最晚开始时间):LS = LF - 工期。
  • TF(总时差):TF = LS - ES = LF - EF。表示在不影响项目总工期的前提下,本活动可以拖延的时间量。
  • FF(自由时差):FF = 紧后活动的最小ES - 本活动的EF。表示在不影响任何紧后活动最早开始的前提下,本活动可以拖延的时间量。

有两个关系必须刻在脑子里:总时差为0的活动是关键活动,所有关键活动连起来就是关键路径;自由时差永远不会大于总时差。第二条经常被用来做验算——如果你算出某个活动的FF比TF还大,那一定是前面算错了。

还有一条容易混淆的判定规则:当有多个紧后活动时,FF取“紧后活动ES的最小值”减去本活动EF;而LF取“紧后活动LS的最小值”。前者用的是紧后的ES,后者用的是紧后的LS,方向不能弄混。

时点约定上,教材普遍采用“第0天开始”的记法,即项目从0时刻起步,活动A工期3天则ES=0、EF=3。也有用“第1天开始”的,两者算出来的工期一样,只是数字整体平移1。为了跟教材和真题保持一致,我下面全部用从0开始的口径。

3.2 正推:把ES和EF一次算干净

例题:某项目共8个活动,工期单位为天,依赖关系如下表:

活动紧前活动工期
A无3
BA4
CA5
DB2
EB、C6
FC3
GD、E、F4
HE2

正推的规则只有一条:一个活动的ES,等于它所有紧前活动EF的最大值;没有紧前活动的,ES为0。然后EF = ES + 工期。

一步步来:

  • A:无紧前,ES = 0,EF = 0 + 3 = 3
  • B:紧前只有A,EF_A = 3,ES = 3,EF = 3 + 4 = 7
  • C:紧前只有A,EF_A = 3,ES = 3,EF = 3 + 5 = 8
  • D:紧前只有B,EF_B = 7,ES = 7,EF = 7 + 2 = 9
  • E:紧前是B和C,EF_B = 7、EF_C = 8,取最大值8,ES = 8,EF = 8 + 6 = 14
  • F:紧前只有C,EF_C = 8,ES = 8,EF = 8 + 3 = 11
  • G:紧前是D、E、F,EF分别是9、14、11,取最大值14,ES = 14,EF = 14 + 4 = 18
  • H:紧前只有E,EF_E = 14,ES = 14,EF = 14 + 2 = 16

所有活动算完,项目总工期 = 所有活动EF的最大值 = 18天(活动G的EF)。

这里插一句实操提醒:正推最容易错的地方不是算术,而是漏看紧前活动。特别是像E这种有多个紧前的,如果只取了B的7而忘了C的8,后面全部跟着错。我的习惯是在草稿上把每个活动的紧前列表抄一遍,算的时候逐条打勾,宁可慢十秒,不要返工五分钟。

还有个小技巧:正推完成后顺手检查一遍,没有任何紧后活动的活动(这里是G和H),它的EF中最大值就是总工期。如果发现某个“末端活动”的EF大于你算出的总工期,说明总工期取错了。

3.3 逆推:LF和LS的回填

逆推从终点往回走,规则跟正推对称:一个活动的LF,等于它所有紧后活动LS的最小值;没有紧后活动的(末端活动),LF等于项目总工期18。然后LS = LF - 工期。

先给末端活动定基准:G和H都没有紧后活动,所以它们的LF都等于18。

  • G:LF = 18,LS = 18 - 4 = 14
  • H:LF = 18,LS = 18 - 2 = 16
  • E:紧后有G和H,LS_G = 14、LS_H = 16,取最小值14,LF = 14,LS = 14 - 6 = 8
  • F:紧后只有G,LS_G = 14,LF = 14,LS = 14 - 3 = 11
  • D:紧后只有G,LS_G = 14,LF = 14,LS = 14 - 2 = 12
  • C:紧后有E和F,LS_E = 8、LS_F = 11,取最小值8,LF = 8,LS = 8 - 5 = 3
  • B:紧后有D和E,LS_D = 12、LS_E = 8,取最小值8,LF = 8,LS = 8 - 4 = 4
  • A:紧后有B和C,LS_B = 4、LS_C = 3,取最小值3,LF = 3,LS = 3 - 3 = 0

逆推完成后有个必然的验算结果:起点活动的LS应该等于0。这里A的LS确实是0,说明计算自洽。如果算出来不是0,百分之百是某一步取最小值取错了。

3.4 总时差、自由时差与关键路径的判定

有了六个参数,时差直接套公式:

  • 总时差 TF = LS - ES(或 LF - EF,两者等价)
  • 自由时差 FF = 紧后活动的最小ES - 本活动EF;末端活动的FF = 总工期 - EF

逐个算:

活动工期ESEFLSLFTFFF是否关键
A3030300是
B4374810否
C5383800是
D279121455否
E681481400是
F3811111433否
G41418141800是
H21416161822否

几个自由时差的算法单独说一下,免得看表的时候对不上:

  • B:紧后有D(ES=7)和E(ES=8),取最小7,7 - 7 = 0
  • D:紧后只有G(ES=14),14 - 9 = 5
  • F:紧后只有G(ES=14),14 - 11 = 3
  • H:末端活动,18 - 16 = 2

关键路径 = 总时差为0的活动串起来的路径 = A → C → E → G,工期 3 + 5 + 6 + 4 = 18天,跟正推结果一致。

这张表里藏着几个非常有价值的观察,值得单独拎出来说:

第一,B的总时差是1,但自由时差是0。这意味着什么?B拖延1天不会影响总工期(因为总时差还有1),但它一拖延,紧后活动D的最早开始时间立刻从第7天变成第8天。换句话说,B的“缓冲”是借来的,它自己没余量,只是后面的路径有富余。这类活动在实际项目里非常危险,因为甘特图上看着“还有1天余量”,实际一拖就把下游全推后了。

第二,D的总时差有5天,但它的紧前B只有1天。如果D自己拖了5天,虽然不影响总工期,但它和B之间的时间窗口会被压得很紧,一旦B也出问题,两个偏差叠加就超了。这就是为什么总时差不能简单理解为“可以随便拖”。

第三,总时差为0的活动构成关键路径,但关键路径不一定只有一条。这道题恰好只有一条,如果某个活动的紧前有多条路径的EF都等于最大值,那就会出现多条关键路径,工期压力成倍增加。软考里专门有这种“多关键路径”的题,算完一定要检查有没有并列。

3.5 双代号图里虚活动怎么算

用同一道题改造成双代号形式不现实,我用一个更小的例子把虚活动的计算讲透。

场景:活动A工期2天、活动B工期3天,都无紧前;活动C的紧前是A和B;活动D的紧前只有A。画法按2.3节的方案:

  • 节点1 →→ 节点2:A(2天)
  • 节点1 →→ 节点3:B(3天)
  • 节点2 →→ 节点3:虚活动(0天,虚线)
  • 节点3 →→ 节点4:C(工期设为4天)
  • 节点2 →→ 节点5:D(工期设为2天)

计算时把虚活动当成工期为0、不消耗资源的普通活动处理,正推逆推照做:

正推:

  • 节点1的早时间 ET(1) = 0
  • 节点2:ET(2) = ET(1) + 2 = 2
  • 节点3:进入节点3的有B(从节点1,3天)和虚活动(从节点2,0天),ET(3) = max(0+3, 2+0) = 3
  • 节点4:ET(4) = ET(3) + 4 = 7
  • 节点5:ET(5) = ET(2) + 2 = 4

项目工期取所有终点节点(这里节点4和节点5)的最大值,即 max(7, 4) = 7天。

逆推:

  • LT(4) = 7,LT(5) = 7
  • 节点3:LT(3) = LT(4) - 4 = 3
  • 节点2:节点2出发的箭线有虚活动(到节点3)和D(到节点5),LT(2) = min(LT(3) - 0, LT(5) - 2) = min(3, 5) = 3
  • 节点1:节点1出发的箭线有A(到节点2)和B(到节点3),LT(1) = min(LT(2) - 2, LT(3) - 3) = min(1, 0) = 0

关键活动是那些“早时间等于晚时间”的节点对应的活动:节点1(0=0)、节点3(3=3)、节点4(7=7)都在关键路径上。对应到活动,就是B(节点1到节点3)和C(节点3到节点4),关键路径为 B → C,工期 3 + 4 = 7天。

注意A(节点1到节点2)的时差:ET(1)=0、LT(1)=0,ET(2)=2、LT(2)=3,所以A的总时差 = LT(2) - ET(1) - 工期 = 3 - 0 - 2 = 1天。虚活动的时差 = LT(3) - ET(2) - 0 = 3 - 2 - 0 = 1天。

这个例子说明了一个考试里反复出现的结论:虚活动本身不消耗时间,但它可能出现在关键路径上(如果它的时差为0),也可能不在。判断依据永远是时差,不是“它是虚的所以就无所谓”。我见过一道真题,虚活动恰好落在关键路径上,很多人想当然地在算总工期时把它跳过了,结果工期少算了。

3.6 PERT三点估算的期望值与概率

PERT的计算在网络图之外独立进行,但它算出来的期望工期可以直接替换网络图里活动的单一工期,从而得到“概率意义上的关键路径”。

单活动的公式前面已经给过,这里补充项目层面的用法。假设某项目关键路径上有三个活动,它们的标准差分别是 σ1 = 2、σ2 = 1.5、σ3 = 1:

σ总 = √(2² + 1.5² + 1²) = √(4 + 2.25 + 1) = √7.25 ≈2.69天

如果关键路径的期望工期之和是40天,问“45天内完工的概率”:

z = (45 - 40) / 2.69 ≈ 1.86

查表 Φ(1.86) ≈ 0.9686,也就是约96.9%。

反过来问“要以95%的把握完工,需要承诺多少天”:

95%对应的z值约为1.645,所需工期 = 40 + 1.645 × 2.69 ≈ 40 + 4.43 ≈44.4天,向上取整承诺45天。

这套算法在实际工作里的价值极高。以前做版本排期,我只会说“大概六周”,现在可以说“六周完成的概率约七成,要九成把握得给七周半”。一旦把话说成这样,资源申请的沟通成本立刻降下来——因为对方知道你在说什么。

考场上要注意两个坑:一是PERT算的是关键路径上的方差叠加,不是所有活动的方差叠加,非关键活动的波动只要不超过总时差就不影响总工期;二是z值算出负数时(比如问“38天内完成”,而期望是40天),要用 1 - Φ(|z|),别直接查正数表。

4. 常见问题与排查技巧实录

理论和例题讲完,最后这部分是我觉得最有用的——全是真刀真枪踩出来的经验。考场上的失分点、工作里的翻车点,往往就集中在那几个地方。

4.1 七个高频翻车点

第一个坑:把总时差和自由时差搞反。总时差是相对“项目总工期”的余量,自由时差是相对“紧后活动最早开始”的余量。判断口诀:总时差看LS-ES,自由时差看紧后ES减本活动EF。两者混淆在选择题里是送分题变送命题。

第二个坑:逆推时取了最大值。正推取最大(ES取紧前EF的最大值),逆推取最小(LF取紧后LS的最小值)。这个对称关系一定要记住,很多人逆推时习惯性继续取最大,整个后半段全废。

第三个坑:末端活动的LF取错。末端活动的LF必须统一取项目总工期,而不是取它自己的EF。比如3.4节里的H,EF是16,但LF是18,如果LF取了16,H就变成关键活动了,关键路径立刻多出一条。

第四个坑:忽略多条关键路径。算完发现某个活动的紧前有两条路径EF并列最大,那就有两条关键路径。这时候任何一条路径上的活动延误都会影响总工期,压缩工期也必须同时压缩两条路径,只压一条没用。案例题里问“压缩哪几个活动最有效”,答案往往涉及多条路径。

第五个坑:虚活动算了工期。虚活动工期恒为0,但在双代号图里它是真实存在的“逻辑传递通道”,算时差时要带上,算工期时按0算。这两件事不矛盾,关键是别把它漏掉也别给它加天数。

第六个坑:压缩工期时只看关键路径。压缩关键活动确实能缩短总工期,但压到一定程度,原来的非关键路径可能变成新的关键路径,总工期就不再下降了。所以每次压缩后都要重新计算关键路径,这是案例题的标准动作,很多人压完一次就收工,答案直接扣分。另外还要注意“压缩有极限”,活动不能压到低于它的最短工期。

第七个坑:把日历天当工期。网络图默认连续作业,不考虑周末和节假日。案例题里如果给了“每周工作5天”这类条件,就要做换算。这个坑我在实际项目里栽过:网络图算出20天,按自然日理解就是三周,实际按工作日算是四周,承诺直接错了。

4.2 问题速查表

把上面这些整理成一张表,考前扫一眼比翻书快:

现象可能原因排查动作
起点活动的LS不等于0逆推某步取了最大值,或末端LF取错从末端重新逆推一遍,逐节点核对取最小
算出多条关键路径但题目说只有一条某活动的紧前EF取错重算该活动的正推,检查是否漏了紧前
自由时差大于总时差公式用反或紧后ES取错用“FF ≤ TF”做校验,反查紧后活动
总工期比手算的短漏了某个末端活动或漏了虚活动列出所有无紧后活动的活动,取EF最大值
加了虚活动后关键路径变了虚活动时差为0,进入了关键路径按正常活动算虚活动时差,确认是否关键
压缩后工期不再下降出现了新的关键路径重新跑一遍全图正推逆推,找并列最大路径
PERT概率算出负数概率z值为负未做转换用 1 - Φ(

4.3 考场提速与工程落地的经验

先说考场。关键路径计算题的时间压力很大,我的做法是固定一套书写模板:先在草稿纸上画一张两行八列的表格,第一行写活动名,第二行写工期,然后左边一列写紧前关系;正推时在活动名下方写ES和EF,逆推时在另一侧写LS和LF。位置固定下来,眼睛不用来回找,速度能快三分之一。

另一个提速点是先用眼睛扫一遍可能的路径,再动笔算。像3.2节那道题,从A出发能走的路径有A-B-D-G(3+4+2+4=13)、A-B-E-G(3+4+6+4=17)、A-B-E-H(3+4+6+2=15)、A-C-E-G(3+5+6+4=18)、A-C-E-H(3+5+6+2=16)、A-C-F-G(3+5+3+4=15)。把这些路径长度列出来,最长的18就是总工期,对应的A-C-E-G就是关键路径。这个方法在小图上比正推逆推快得多,而且不容易算错,可以当作验算手段。但活动一多路径数量会爆炸,那时候还是老老实实正推逆推。

再说工程落地。教材里的关键路径法是确定性的,现实项目里工期是概率性的,所以我习惯做两件事:

一是给关键路径上的每个活动单独标风险等级,关键路径上任何一个活动出问题,整个项目就出问题,所以这些活动的资源优先级、监控频率、汇报层级都应该跟非关键活动不一样。我在实际项目里会把关键路径活动标红,每天站会必过一遍。

二是定期重算关键路径。项目进行到中段,原来的非关键路径很可能因为某个活动延误而变成新的关键路径。我吃过这个亏:前期一直盯着某条路径,结果另一条路径悄悄涨上来,等发现的时候已经来不及了。后来改成每周重算一次,成本不高,收益很大。

关于甘特图,我还有一个私人心得:给甘特图加一条“今天”的竖线。这条线一画,左边是已经发生的,右边是还没发生的,任何人扫一眼就能判断“我们现在是快了还是慢了”。这个细节小到不值一提,但在跨部门汇报时特别管用,比讲十分钟偏差分析有效。

最后说一句 PERT 的实际用法。三点估算最容易被滥用的地方,是把O、M、P三个数随便填。如果三个数没有真实依据,算出来的期望值和标准差就是精致的废话。我的做法是:O和P必须来自“具体的人+具体的场景”,比如O是“接口一次调通”,P是“对方延期两周且要返工”,M是“按历史平均”。有场景支撑的三点,才有决策价值;没有场景的三点,不如直接报一个数然后加20%缓冲。

我个人在这些年的体会是,进度管理这几个工具的价值不在“算得多准”,而在“让讨论有共同语言”。甘特图让不同角色能在同一张图上对话,网络图让“为什么不能提前”这件事变得可解释,PERT让“有多大把握”从感觉变成数字。真到了项目里,最难的从来不是算关键路径,而是让所有人相信这条路径、并且愿意为它让路。工具只是把这件事摆到台面上的手段,摆得清楚,事就好办一半。