资讯动态

关键路径法详解:从任务表到最短工期的手算全流程

发布时间:2026/10/13 22:33:11 来源:尧图企业网站定制
前阵子帮一个项目组做排期体检负责人指着一排任务很笃定地跟我说“这几项是最重要的必须死盯一旦延误整个项目就完了。”我把网络图画出来算了十分钟发现他说的重要任务根本不在关键路径上——某项他不太在意的室内管线预埋反而只要晚两天收尾验收就会整体后移。这个场景我见过太多次了。不懂关键路径的排期看起来每一项都有截止时间实际上全局是散的。这篇文章想把这套方法讲透关键路径到底是什么、为什么它能决定工程的最短工期、以及从一张任务表出发怎么一步步把它算出来。适合正在做项目计划的工程管理人员、备考运筹学或项目管理相关内容的同学以及所有需要向别人解释“为什么这个日期不能再提前”的从业者。1. 从排期表到网络图最短工期并不是任务工期的简单相加很多人第一次接触工程排期习惯用“线性加法”把每项任务的工期加起来得到总工期。这个做法只在一种情况下成立——所有任务必须严格一件接一件顺序完成。可实际工程几乎不会这样。真实项目里大量任务是并行的。比如主体结构施工的同时室内管线预埋已经在另一批作业面上展开外墙保温做完一部分内墙砌筑也同步推进。任务一旦并行总工期就不再是简单相加而是要看“哪条路线最终锁死了结束时间”。举个最简单的例子两条作业线并行一条需要30天另一条需要25天之后汇合到同一个验收节点那最短工期至少是30天不是55天也不是25天。这背后的关键逻辑是工程中的“汇合约束”一个后续活动能不能开始取决于它的所有紧前活动是否都完成。只要有一条前置链路还没走完后面就得等着。所以网络计划法的基本思路就是把所有活动按照这种逻辑关系画成一张有向网络图然后沿着箭头方向找到从起点到终点的最长路径——这条路径的长度就是该工程在逻辑约束下的理论最短工期。注意我特意强调“逻辑约束下的理论最短工期”。关键路径法通常说的CPM默认资源是充足的只要逻辑上允许并行就假设你有足够的人、设备、工作面去同时推进。现实中如果只有一个班组、一台设备那就是资源约束问题需要用资源平衡去处理算出的最短工期通常会比关键路径更长。这一点先记住后面还会提到。明白这个前提之后就可以开始动手算了。整篇文章会用一套完整的小型工程算例带着你从头算到尾你只需要一张纸、一支笔或者一个表格软件就能完全复现。2. 先把概念摆清楚活动、节点、时差和“最长的路”2.1 从紧前关系表到网络图工程计划怎么被“翻译”成图拿到一份任务清单第一件事不是算而是把逻辑关系理清楚。每一行至少要包含三项信息活动名称、持续时间、紧前活动。所谓紧前活动就是“本活动开始之前必须完成的活动”。举个例子。场地清理完成后才能做基础施工那场地清理就是基础施工的紧前活动。主体结构施工和室内管线预埋都依赖基础施工完成二者互不依赖那它们就可以并行。内部装修就比较特殊它既要等主体结构施工结束也要等管线预埋结束因为它得在结构成型且管线到位之后才能进场。把这些关系画出来就是一张有向网络图。图中的圆圈一般叫节点表示某个时间点或事件箭线表示活动箭线头部就是活动结束的位置。有的资料会用方框表示活动那叫单代号网络图但计算时间参数的逻辑一模一样不用纠结表现形式。2.2 四个时间参数ES、EF、LS、LF分别是什么关键路径计算绕不开四个时间参数这里先把它们的含义一次性说清楚ES最早开始时间在所有紧前活动都按最早时间完成的前提下本活动最早能开始的时间。EF最早完成时间活动按最早开始时间启动后最早能结束的时间等于 ES 加工期。LS最迟开始时间在不影响整个工程总工期的前提下本活动最晚必须开始的时间。LF最迟完成时间对应最迟开始时间加上工期也就是最晚必须完成的时间。工程里常用“第几天”这种相对时间表示而不是日历日期。比如某活动最早开始时间是第5天意思是项目从第0天启动第5天才能开始这项活动。用相对时间计算最干净避免了节假日、调休这些日历因素干扰。等模型跑通了再映射到具体日历上也不迟。2.3 总时差与自由时差一个管全局一个管局部有了ES、EF、LS、LF就能算出两个极其重要的“富余量”。总时差TF等于 LS 减 ES也等于 LF 减 EF。它表示某项活动在不影响总工期的前提下最多能晚多少天开始或结束。总时差为0的活动就是关键活动因为它没有一点机动时间一拖就拖总工期。自由时差FF则是另一回事它表示某项活动在不影响所有紧后活动最早开始时间的前提下能富余多少天。计算公式是紧后活动ES的最小值减去本活动的EF。自由时差是局部概念总时差是全局概念两者通常不相等。当活动拥有多个紧后活动且这些紧后活动的紧张程度不同时总时差和自由时差会出现明显的差异。判断一个活动是否关键看总时差不看自由时差。这是很多人容易混淆的地方。3. 手工算关键路径的全过程正算一遍反算一遍3.1 正向计算顺着箭头把“最早”日期推出来正向计算的任务是求出每项活动的ES和EF。过程很简单从起点活动开始一步步往后推起点活动的ES设为0。每项活动的EF ES 工期。某项活动的ES 其所有紧前活动EF的最大值。第三步的“取最大值”是整个正向计算的核心逻辑。为什么取最大因为工程上要求所有紧前活动全部完成本活动才能开始。你等的是最慢的那个紧前活动所以只能取所有紧前EF中最大的那一个。比如某活动的三个紧前活动分别在第30、35、42天完成那它最早也得第42天才能开工。这里最容易犯的错是把“取最大”记成“取平均”或者“取最小”。一旦取小算出来的工期会比实际短排期表看起来漂亮执行起来全线崩盘。3.2 反向计算从完工日倒推“最迟”日期正向计算结束你会得到整个网络的最早完工时间这个时间就是项目的理论最短工期。现在要把它作为反向计算的起点从最终节点的LF出发往前推出各项活动的LS和LF。反向计算的规则是这样的最终活动的LF 总工期。每项活动的LS LF - 工期。某项活动的LF 其所有紧后活动LS的最小值。反向计算同样有一个“取最小值”的关键动作。原因和正向对称一项活动要保证所有紧后活动都能按最迟开始时间启动自己就得分摊掉一部分时间。如果有三个紧后活动它们的最迟开始时间分别是第50、55、60天那本活动的LF必须取第50天这个最小值否则最早需要启动的那个紧后活动就会被拖住。3.3 总时差计算与关键路径判定四项时间参数全部算完之后逐项计算 TF LS - ES。把所有总时差为0的活动挑出来从起点到终点沿着网络连线走一遍形成的连续路径就是关键路径。关键路径可能不止一条。只要有多条路径上的活动总时差全部为0它们就都是关键路径意味着工程被多条作业链同时卡住。这时任何一条关键路径上的活动延误都会直接推迟总工期。正因为关键路径上的活动没有机动时间它才是整个工程计划里“最粗的那根神经”。判断一句“某项工作重不重要”不看你嘴上强调谁而是看它在不在关键路径上。4. 一个8项活动的小型算例从第一步填表到最后找出瓶颈链4.1 活动清单与逻辑关系设计我把开头提到的那个场景压缩成一个完整算例。某小型设施改造工程共8项活动工期单位为天逻辑关系如下表活动工作内容紧前活动工期天A场地清理与准备无5B基础结构施工A12C主体结构施工B18D外墙保温及装饰C10E室内管线预埋B7F内部精装修C、E12G设备安装与单机调试F6H竣工验收D、G3这个网络的核心逻辑是基础施工完成后主体结构和管线预埋并行内部装修必须等主体结构和管线预埋都完成后才能开始外墙保温只依赖主体结构与内部装修并行推进最后竣工验收要等外墙保温和设备安装都结束。4.2 正向标号把每个活动最早时间填进表格从A开始按紧前关系一步步推。A没有紧前活动所以ES0EF055。B的紧前是AES5EF51217。B之后分叉出C和E两者ES都等于17EF分别为35和24。F的紧前是C和E它的ES必须取C的EF35和E的EF24中的最大值即35EF351247。D的紧前是CES35EF45。G的紧前是FES47EF53。H的紧前是D和GES取D的EF45和G的EF53的最大值即53EF53356。活动紧前活动工期ESEF说明A无505起点活动BA12517CB181735EB71724与C并行DC103545FC、E123547取C和E的EF最大值35GF64753HD、G35356取D和G的EF最大值53整个网络的最早完工时间是第56天。如果一切按计划执行这就是该工程最短能压到的理论工期。4.3 反向标号从总工期往回推每个活动最迟时间现在把总工期56作为最终节点LF从H开始倒推。H的LF56LS56-353。G的紧后只有HLF53LS53-647。D的紧后也只有HLF53LS53-1043。F的紧后是GLF47LS47-1235。E的紧后是FLF35LS35-728。C的紧后有D和F两个LF必须取D的LS43和F的LS35中的最小值即35LS35-1817。B的紧后有C和ELF取C的LS17和E的LS28中的最小值即17LS17-125。A的紧后是BLF5LS0。活动后续活动工期LFLS说明H无35653终点活动GH65347DH105343FG124735EF73528CD、F183517取D和F的LS最小值35BC、E12175取C和E的LS最小值17AB5504.4 时差分析与关键路径确认四项时间参数齐了最后算总时差 TF LS - ES顺便可以算自由时差 FF 紧后活动ES最小值 - 本活动EF。活动ESEFLSLFTFFF是否关键A050500是B51751700是C1735173500是D3545435388否E172428351111否F3547354700是G4753475300是H5356535600是总时差为0的活动是A、B、C、F、G、H串起来就是关键路径A→B→C→F→G→H总工期51218126356天。再看两个非关键活动D有8天总时差E有11天总时差。什么意思D晚开工或晚完工最多8天不耽误56天交付E最多能富余11天。但E的11天不能随便挥霍因为一旦它晚超过11天内部装修F就会被推迟整个关键路径立刻变长。从直觉上理解D为什么有8天富余D所在支路D→H的累计时间是10313天而关键支路F→G→H的累计时间是126321天两条支路汇合到H时差出了8天正好等于D的总时差。E同理E支路从B之后算起到F的节点位置比C支路到同一位置早了11天。看关键路径单看“哪条链最长”还不够把网络图画清楚之后富余量是一眼能看出来的。5. 实战中容易踩的四个坑算错汇合点、误解时差、漏掉虚约束5.1 汇合点取值的记忆法和反向计算常见错误正向汇合取最大值反向汇合取最小值。这个规则我在带项目计划时反复强调因为十个人里有三四个会在反向计算时犯迷糊。正向计算好比多人合作搬运所有材料到齐才能开工所以你只能等最慢的那个供应商。反向计算则像多人分蛋糕每个后续活动都要分到足够的时间最先需要开始的那个活动是约束最紧的所以取最小值。一个常见的低级错误是反向计算时直接拿总工期减去各条链路的工期而非逐项活动推算LS后取最小值。比如本例中C的LF有人会直观觉得“C完成之后还有D和F两件事最迟不能耽误D”于是把C的LF算成D的LS43结果C的LS变成25总时差变成8天把非关键活动误判为关键。C真正受限的是FC的LF应该是F的LS35因为F是更紧迫的紧后活动。5.2 虚活动和逻辑约束为什么“看起来能提前”的地方实际不能提前画网络图时偶尔会碰到两个活动逻辑上需要“隔开”但直接画会让两个箭头指向同一个节点。这时候需要引入虚活动——它不消耗时间也不消耗资源只表示“前一个活动完成后后一个才能开始”。虚活动不是摆设它会直接影响关键路径计算。举个例子某工程有两栋设施的外墙装饰可以并行但现场只有一个脚手架平台A栋拆完平台才能给B栋用。如果画网络图时忽略这个共享资源约束直接用两条并行箭头计算结果会给出一个过于乐观的最短工期。这种共享资源本质上不是纯逻辑依赖关键路径法基础模型解决不了需要人工加入“等待”逻辑或者做资源平衡。另一个常见场景是“部分依赖”某项工作看似等一个前置条件就够了但另一个前置条件天然附带约束。画图时漏掉任何一个虚约束正向计算就会把ES推前算出的最短工期就会偏短。5.3 多条关键路径同时存在意味着什么如果一个网络里存在多条总时差都为0的路径说明总工期被多条作业链同时锁死。这种情况最坑人的地方在于你以为压缩其中一条关键路径上的活动就能缩短工期结果压缩完了发现另一条关键路径还顶着原来的长度总工期纹丝不动。比如两条并行路径都是25天汇合后进入最后5天的收尾工作总工期30天。你把其中一条压到15天总工期还是30天因为另一条仍然是25天。要想真正缩短总工期必须同时压缩所有关键路径上的关键活动直到某条路径退出关键地位。多条关键路径的项目从风险角度看也很特殊只要任意一个关键活动出问题工期就推迟。关键路径上的活动越多按期交付的压力点和不可控点就越多。做计划时我通常会把关键路径上的活动数量也当成一个风险指标看待。5.4 当“客户要求的完工日”早于计算值负总时差怎么理解有一种情况经常把初学者搞懵按正常逻辑推算某个活动的最迟开始时间居然早于最早开始时间总时差算出来是负数。这不是算错了而是设定了一个根本来不及的目标工期。比如本例中客户要求52天交付但网络计算的最早完工日是56天。从52天倒推H的LF52LS49G的LF49LS43F的LF43LS31C的LF要取D和F的LS最小值结果就是31C的LS变成13B的LS变成1A的LS变成负的4天。日程上出现负时间说明无论如何都要压缩至少4天的关键路径。项目管理软件里遇到负总时差不要隐藏它是项目不能按时交付的预警指标。处理办法只有三条路压缩关键活动工期、调整作业逻辑关系或者重新与需求方协商目标工期。抱着“计划先排上再说”的态度硬排后面执行时一定到处救火。6. 算完关键路径之后怎么用工期压缩与计划调整6.1 赶工不是哪里都赶看成本斜率一旦发现需要压缩工期第一步不是把每个活动都压一压而是找关键路径上的活动并且挑选压缩成本较低的来压。工程里通常用“赶工成本斜率”来衡量成本斜率 赶工成本 - 正常成本/正常工期 - 赶工工期。这个斜率表示每压缩一天需要多花多少钱。管理上有一个基本原则优先压缩关键路径上成本斜率最小的活动每压一次重新计算一次关键路径直到满足目标工期或达到活动压缩极限。这个原则背后的道理很朴素压缩非关键活动对总工期毫无贡献钱花了交付日期不变。我见过太多项目为了“显得重视”去给非关键活动加班最后发现关键的设备安装链路一天没动纯粹是浪费。6.2 快速跟进并行施工带来的收益与返工风险另一种压缩工期的方式是快速跟进把原本串行的活动改成部分并行。比如原计划主体结构全部完工后才开始管线预埋实际可以在主体结构完成一半时就让管线班组进场穿插作业。这样做确实能缩短工期但也带来了返工风险。作业面交错后道工序提前介入一旦前道工序的结果发生变化后道工序已经做完的部分就得拆改。判断是否值得快速跟进要同时权衡节省的时间和可能返工的成本。关键路径法本身无法替你回答这个问题但可以告诉你哪个环节的提前进场能真正影响总工期避免在不痛不痒的地方搞“假并行”。6.3 软件自动计算关键路径的时代为什么还要手算一遍现在项目管理软件都能自动生成关键路径时间参数、总时差一列就出来了。但我不建议直接迷信软件结果。软件算出来的关键路径取决于你录入的逻辑关系是否准确。一个最常见的坑是建立任务依赖时漏了一条软件就会把你的一条关键路径变成非关键路径工期瞬间缩短看着皆大欢喜实则是把风险藏了起来。另一个坑是软件里的“日历”设置。不同活动用了不同的工作日历有的按5天工作制有的按7天工作制有的还要扣除夏季高温停工。这些日历会直接影响ES、EF和总工期。手算一遍至少能帮你在相对时间维度上建立对网络的直觉知道自己期望的总工期大概是多少天。当软件的日历换算结果和直觉相差很大时你就会回头检查依赖关系和日历设置而不是稀里糊涂接受结果。6.4 计划是活的定期复查关键路径是否漂移关键路径不是算一次就永远不变的。工程进行到一半关键活动可能超期非关键活动的时差可能被消耗殆尽原本有富余时间的活动可能变成新的关键活动。这就是常说的“关键路径漂移”。我在项目执行阶段的习惯是每周或每双周基于实际进度重新计算一次网络时间参数把总时差已经很小比如只剩3天以内的活动全部标记出来当作准关键活动盯着。它们一旦再晚两天就会顶上关键路径的位置那时候再反应就慢了。针对关键路径最好再做一个简单的“敏感性记录”每次更新计划后对比最新关键路径和上个版本的关键路径是否一致。如果频繁漂移说明计划本身的逻辑或边界条件还不够稳定要么资源约束没有体现要么外部条件变化太大需要更认真的模型调整。最后分享一点个人习惯我手工计算网络计划这么多年最大的体会是关键路径法最值钱的不是那几条关键活动而是那些总时差很小、但还没到0的活动。它们像悬崖边的护栏一旦失守整个交付日期就悬了。每版计划出来我都会给总时差小于某一阈值的活动单独标色这样做风险分析的时候一眼就能看出哪些环节正在从“安全”滑向“关键”。如果你刚开始学这套方法建议不要急着打开软件先拿本文这个8活动算例自己动手在纸上正算一遍、反算一遍、填一遍时差表。整个过程不超过二十分钟但对网络计划的理解会比看十遍书都扎实。算过一两次之后你会发现“最短工期是多少”这个问题本质上是在问“整张网里哪条链最粗、最长、不给人留余地。”

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑