数据结构:用生活中的例子解释 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。

相关推荐
CSharp精选营5 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假8 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠9 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦16 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠17 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾17 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres82117 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q17 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒17 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
WL学习笔记17 天前
单项不带头不循环链表
数据结构·链表