AI 给了任务依赖图,怎样算出最早完工时间和关键路径
先按依赖拓扑顺序正向计算最早开始与结束,再从总工期倒推最晚时间;浮动量为零的任务构成关键链。本例A需2天,B需3天、C需4天且都依赖A,D需2天并等待B和C,最早完工是第8天。
把依赖与工期写成输入
附件tasks.csv用任务id、duration和predecessors三列表示完成后才能开始的关系。D不能在B结束时马上开始,因为C还没有结束;多前驱的最早开始取前驱结束时间的最大值。输入不含人员、节假日与资源限制,天在这里只是连续工期单位。不要让模型看到一个图后自行补上“同一人不能并行”等未提供假设,否则计算回答的已经是另一个问题。
正向计算最早时间
A从0到2,B从2到5,C从2到6,D从6到8。脚本每轮挑所有前驱已完成的任务,逐项保存ES和EF,不用任务名的字母顺序代替依赖顺序。找不到可推进任务时,可能有环也可能引用了不存在的前驱,应停止并检查输入,而不是把剩余任务随便追加到末尾。
反向找浮动量
以项目结束8为终点倒推,D最晚6开始,C最晚2开始,B最晚3开始,A仍需0开始。B有1天浮动,A、C、D浮动为零,构成这里的关键链。schedule.csv保留全部最早、最晚与浮动量,gantt.mmd提供可由Mermaid工具打开的示意。甘特图的展示轴只是本地连续工期映射,不能直接当作真实办公日历。
有环与资源冲突分开处理
失败命令让A依赖D,形成循环,程序无法给出有限的拓扑计划,明确报错。若同一位员工必须同时执行B和C,原来8天的下界未必可达;资源平衡是额外问题,不能用关键路径结果掩盖。实际任务还可能有不确定工期、审批等待与返工,本例没有模拟这些因素。先把最简依赖计划算清、用手工路径2+4+2交叉核对,再决定是否需要引入资源与日历约束。
任务表变化后重新计算整个网络,不只修改甘特图里的某一条。若C缩短到比B还短,关键链可能转移到B;这说明关键路径取决于当前工期与依赖,不是一串永远固定的任务。保留每次输入版本有助于解释计划为何改变。
下载与复现
下载完整样例包,解压到一个新文件夹;也可查看全部文件清单和主脚本。使用Python 3.10或更新版本,在解压目录运行。此脚本只使用标准库,无需安装额外包。
python -B run.py
python -B run.py --negative
先查看主要结果,再修改输入重跑;已有输入会保留,结果写回同目录。边界命令可能故意非零退出,也可能输出明确的不适用状态,按正文说明判断,不把所有非零退出都当成安装故障。
依据与延伸阅读
资料核对日期为2026年10月24日。一手资料1:有向无环图路径算法要求无环,依赖路径累积用于连续工期下界。
相关参考2:Mermaid甘特图采用明确任务与时间语法;本地示意不引入真实办公日历。
继续阅读:AI 画的架构图总跟真实系统对不上:文本生成图的排查与修法;让 AI 排了每周计划,怎样生成含跳过日期的 ICS 日历文件;AI 写的小工具接管道就解析失败,怎样把数据输出和进度提示分开。
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。