数据结构:用生活中的例子解释 AOE 网中活动的最早和最迟开始时间的含义和计算方法

生活实例:装修房子中的活动安排

假设你要装修一套房子,主要流程如下:

  1. 拆旧(活动 A,3 天) → 拆旧完成(事件 X)
  2. 水电改造(活动 B,4 天) → 水电完成(事件 Y)
  3. 拆旧完成(事件 X) + 水电完成(事件 Y) → 开始砌墙(事件 Z)
  4. 砌墙(活动 C,5 天) → 砌墙完成(事件 W)
  5. 铺地板(活动 D,3 天) → 装修结束(终点事件)

活动的最早开始时间(Earliest Start Time, ES)

  • 活动 A(拆旧):无前置任务,直接开始 → ES=0 天
  • 活动 B(水电改造):必须等拆旧完成(事件 X 的最早时间 = 3 天) → ES=3 天
  • 活动 C(砌墙):需等拆旧完成(事件 X=3 天)和水电完成(事件 Y=3+4=7 天) → ES=max (3,7)=7 天
  • 活动 D(铺地板):必须等砌墙完成(事件 W=7+5=12 天) → ES=12 天

数学化解释

  1. ES 的定义:活动必须在所有前驱事件全部完成 后才能开始的最早时间。
    • 若前驱事件有多个,取最大的那个事件完成时间(因为必须等待最慢的那个)。
  2. ES 的计算方法**:**ES = max {前驱事件的最早发生时间(TE)}

总结

  • ES 的本质 :活动的 "起跑线",由所有前置任务的最长耗时路径决定。

  • ES 的意义:确保活动不会早于所有前置任务完成的时间开始。

  • 关键活动:ES=LS,无缓冲时间,一旦延迟直接影响总工期。

活动的最迟开始时间(LS)

继续用之前的装修例子,假设总工期必须严格控制在 15 天内,现在计算每个活动的最迟开始时间(LS)

  • 活动 D(铺地板):必须在总工期(15 天)前完成 → LS = 15 天 - 3 天 = 12 天(即第 12 天必须开始铺地板)。

  • 活动 C(砌墙):必须在铺地板的 LS(12 天)前完成 → LS = 12 天 - 5 天 = 7 天(即第 7 天必须开始砌墙)。

  • 活动 B(水电改造):必须在砌墙的 LS(7 天)前完成 → LS = 7 天 - 4 天 = 3 天(即第 3 天必须开始水电改造)。

  • 活动 A(拆旧):必须在水电改造的 LS(3 天)前完成 → LS = 3 天 - 3 天 = 0 天(即第 0 天必须开始拆旧)。

数学化解释

  1. LS 的定义:活动在不影响总工期的前提下,最晚可以开始的时间
    • 若后续活动有多个,取最小的那个 LS 值(因为必须保证所有后续活动都能按时开始)。
  2. LS 的计算方法**:**LS = 后续事件的最迟发生时间(TL) - 当前活动的持续时间
    • TL 的计算:从终点事件倒推,取所有后续活动 LS 的最小值。

对比关键活动与非关键活动

  • 关键活动(如活动 A/B/C/D):ES = LS → 松弛时间 = 0 天 → 必须严格按时开始。
  • 非关键活动(假设存在):LS > ES → 松弛时间 = LS - ES → 有缓冲空间。

总结

  • LS 的本质:活动的 "最后通牒时间",超过这个时间开始会导致总工期延误。

  • LS 的意义:帮助识别哪些活动可以适当延迟(非关键活动),哪些必须严格按时(关键活动)。

  • 计算逻辑:从终点倒推,确保每个活动的 LS 不影响后续活动的 LS。

相关推荐
田梓燊1 小时前
2026/4/11 leetcode 3741
数据结构·算法·leetcode
葳_人生_蕤1 小时前
hot100——栈和队列
数据结构
Meme Buoy4 小时前
18.补充数学1:生成树-最短路径-最大流量-线性规划
数据结构·算法
汀、人工智能4 小时前
[特殊字符] 第89课:岛屿数量
数据结构·算法·数据库架构·图论·bfs·岛屿数量
九英里路4 小时前
cpp容器——string模拟实现
java·前端·数据结构·c++·算法·容器·字符串
2401_892070984 小时前
顺序栈(动态数组实现) 超详细解析(C++ 语言 + 可直接运行)
数据结构·c++·顺序栈
漫霂5 小时前
二叉树的翻转
java·数据结构·算法
3秒一个大5 小时前
深入理解 JS 中的栈与堆:从内存模型到数据结构,再谈内存泄漏
前端·javascript·数据结构
旖-旎5 小时前
哈希表(存在重复元素)(3)
数据结构·c++·学习·算法·leetcode·散列表
计算机安禾5 小时前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code