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

相关推荐
potato_may4 小时前
链式二叉树 —— 用指针构建的树形世界
c语言·数据结构·算法·链表·二叉树
Mz12214 小时前
day07 和为 K 的子数组
数据结构
Albert Edison6 小时前
【项目设计】C++ 高并发内存池
数据结构·c++·单例模式·哈希算法·高并发
小许学java9 小时前
数据结构-模拟实现顺序表和链表
java·数据结构·链表·arraylist·linkedlist·顺序表模拟实现·链表的模拟实现
稚辉君.MCA_P8_Java10 小时前
Gemini永久会员 C++返回最长有效子串长度
开发语言·数据结构·c++·后端·算法
dragoooon3411 小时前
[优选算法专题十.哈希表 ——NO.55~57 两数之和、判定是否互为字符重排、存在重复元素]
数据结构·散列表
稚辉君.MCA_P8_Java12 小时前
Gemini永久会员 go数组中最大异或值
数据结构·后端·算法·golang·哈希算法
会员果汁12 小时前
双向链式队列-C语言
c语言·数据结构
AI科技星13 小时前
张祥前统一场论:引力场与磁矢势的关联,反引力场生成及拉格朗日点解析(网友问题解答)
开发语言·数据结构·经验分享·线性代数·算法
C雨后彩虹13 小时前
最少交换次数
java·数据结构·算法·华为·面试