# 关键路径法计算器（CPM 项目工期）

对 2–20 个活动（每行：名称、工期、紧前活动）做关键路径法分析：拓扑排序后正推得各活动最早开始/结束（ES/EF），逆推得最迟开始/结束（LS/LF）与总时差，零时差活动构成关键路径——工具列出所有关键路径而非仅第一条。未知紧前、重名、循环依赖按业务拒绝。经典例：A(4)、B(3, A)、C(2, A)、D(5, B)、E(4, C)、F(2, D E) → 项目工期 14，关键路径 A→B→D→F，C/E 时差各 2。

> 标准页面: https://elysiatools.com/zh/tools/critical-path-method

- **分类:** Math & Numbers

- **关键词:** 关键路径法, cpm, 项目排程, 关键路径, 总时差, 时差, 正推, 逆推, 项目管理, 运筹学

## 概述

关键路径法计算器（CPM）是一款针对 2 至 20 个项目活动进行进度排程与工期分析的实用工具。输入活动名称、工期及紧前活动后，工具通过拓扑排序与正推、逆推算法，精准计算各活动的最早开始/结束时间（ES/EF）、最迟开始/结束时间（LS/LF）以及总时差，并自动识别出所有的关键路径与项目总工期。

## 输入项

- **活动（每行：名称、工期、紧前活动）** (textarea): One activity per line: unique name (1–8 letters/digits), non-negative duration, then predecessor names separated by spaces ('-' if none).
- **小数位数** (number)

## 适用场景

- 在制定项目进度计划或 WBS 节点排期，需要精确估算总完工工期时。
- 评估活动延误对整体交付时间的影响，需要排查哪些任务具有可调配时差时。
- 运筹学或项目管理（PMP）学习与考试中，需要验证单代号网络图正逆推推导结果时。

## 工作原理

- 解析输入的活动列表，校验活动名称唯一性、紧前关系有效性并检测是否存在循环依赖。
- 执行拓扑排序并进行正推计算（Forward Pass），推导每个活动的最早开始时间（ES）与最早完成时间（EF），确定项目总工期。
- 从项目终点执行逆推计算（Backward Pass），得出每个活动的最迟开始时间（LS）、最迟完成时间（LF）及总时差（Total Float）。
- 标记所有总时差为零的活动，输出完整的时间参数明细表并列出网络中的全部关键路径。

## 使用案例

- 软件研发里程碑排期：分析前端、后端、测试等并行与依赖任务，找出决定上线日期的关键路径。
- 工程施工与采购调度：计算设备采购、地基施工与装修之间的时差，合理分配资源与缓冲时间。
- 项目管理教学与考试验证：快速验算 PMP 或运筹学课程中的网络图习题，对比 ES/EF/LS/LF 数据。

## 常见问题

### 紧前活动该如何填写？

若无紧前活动填写减号 `-`；若有单个或多个紧前活动，直接使用空格分隔名称，如 `D E`。

### 如果网络中存在多条关键路径，计算器会怎么处理？

计算器会遍历并输出所有总时差为零的关键路径序列，而不仅显示单条路径。

### 输入出现循环依赖或未知紧前活动会怎样？

工具会在计算前进行拓扑检查，若发现未知紧前活动、重复活动名或环路依赖，将直接提示错误并拒绝计算。

### 活动工期支持小数和负数吗？

支持输入非负数值（包括小数，可通过小数位数参数调节精度），不支持负数工期。

### 总时差（Float/Slack）为正代表什么含义？

正时差表示该活动可以在该时限范围内推迟开工或延长耗时，而不会延误整个项目的最终完工时间。

## 相关工具

- [基础计算器](https://elysiatools.com/zh/tools/basic-calculator): 执行基础算术计算，支持多种运算
- [求和计算器](https://elysiatools.com/zh/tools/sum-calculator): 计算数字的总和、部分和、累计和及统计信息
- [文氏图集合基数问题求解器](https://elysiatools.com/zh/tools/venn-diagram-problem-solver): 解 2 集合或 3 集合的容斥/文氏图基数题：输入 |A|、|B|（|C|）、两两（及三重）交的大小与全集 |U|，逐个填出互不相交的区域（仅 A、仅 B、仅 C、仅 A∩B、仅 A∩C、仅 B∩C、A∩B∩C、外部），并给出 |A∪B(∪C)| 与外部人数；交集大于集合、并集超过全集或区域为负会明确报错。经典例（3 集合）：|A|=40、|B|=35、|C|=45、|A∩B|=15、|A∩C|=18、|B∩C|=12、|A∩B∩C|=8、|U|=100 → 仅 A 15、仅 B 16、仅 C 23、外部 17。
- [主动土压力计算器（Rankine）](https://elysiatools.com/zh/tools/active-earth-pressure): 按 Rankine 法计算无粘性土对光滑竖直挡土墙的主动土压力。K_a = tan²(45°−φ/2)。可选均布超载 q。给出基底压力 p₀、总力 P 与合力作用点高度。
- [RLC 导纳计算器（Y = G + jB）](https://elysiatools.com/zh/tools/admittance-calculator): 计算 RLC 串联或并联电路的复导纳：Y=1/Z=G+jB，G=R/|Z|²，B=−X/|Z|²。输出电导、电纳、导纳模值与相位角。支持任意 R/L/C 子集组合。
- [反对数计算器](https://elysiatools.com/zh/tools/antilog-calculator): 计算任意有效底数的反对数，并可选通过再次取对数来验证结果
- [贝叶斯定理计算器](https://elysiatools.com/zh/tools/bayes-theorem-calculator): 根据先验、似然和假阳性率计算后验概率
- [Terzaghi 地基极限承载力计算器](https://elysiatools.com/zh/tools/bearing-capacity-calculator): 按 Terzaghi 公式计算浅基础极限地基承载力 q_ult = c·Nc·sc + q·Nq·sq + 0.5·γ·B·Nγ·sγ。自动求 Nc/Nq/Nγ 与形状系数，支持条形/方形/圆形基础。承载力单位 kPa。

## 示例

- [路径分析器样本](https://elysiatools.com/zh/samples/path-analyzer): 来自Windows、Linux和macOS的文件系统路径综合集合，用于路径分析和测试
- [导入路径示例](https://elysiatools.com/zh/samples/import-path-examples): JavaScript和TypeScript导入示例集合，展示各种导入模式和模块系统
- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
