数据结构(16)
目录
有向无环图及其应用
二、AOE网
1、AOE 网的核心定义与要素
2、AOE 网的关键概念(时间参数)
(1)事件的最早发生时间(ve(i))
(2)事件的最迟发生时间(vl(i))
(3)活动的最早开始时间(e(k))
(4)活动的最迟开始时间(l(k))
3、AOE 网的核心应用:关键路径(Critical Path)
4、示例说明(项目开发 AOE 网)
5、AOE 网与 AOV 网的对比
有向无环图及其应用
二、AOE网
AOE 网(Activity On Edge Network,边表示活动的网)是一种带权有向无环图(DAG),专门用于描述 “包含时间维度的复杂活动流程”—— 图中的边代表具体活动(并附带活动的持续时间),顶点代表 “事件”(即活动的开始或结束节点)。它在 AOV 网的基础上增加了 “时间信息”,可用于分析项目的最短完成时间、关键路径等关键问题,是项目管理和流程优化的核心工具。
1、AOE 网的核心定义与要素
AOE 网的核心是用 “边承载活动时间”“顶点标记事件节点”,需满足以下要素:
(1)顶点(事件,Event):表示一个 “状态节点”,标志着所有 “进入该顶点的边(活动)” 已完成,所有 “从该顶点出发的边(活动)” 可以开始。
① 示例:在项目流程中,顶点可能代表 “需求分析完成”“开发阶段开始” 等标志性事件。
② 特殊顶点:
a. 源点(Start Vertex):入度为 0 的顶点,代表整个项目的 “开始事件”(所有活动的起点)。
b. 汇点(End Vertex):出度为 0 的顶点,代表整个项目的 “结束事件”(所有活动的终点)。
(2)有向边(活动,Activity):每条边对应一个具体活动,边的权重表示该活动的持续时间(如天数、小时)。若存在边 <Vi,Vj>,则表示 “活动需在事件 Vi 发生后开始,在事件 Vj 发生时结束”,即活动的开始依赖于 Vi 对应的前置活动完成。
(3)无环性(Acyclic):与 AOV 网一样,AOE 网必须是无环图。若存在环,则活动间存在 “循环依赖 + 时间累积”,导致项目无法结束(总时间无限),因此环是 AOE 网的 “非法结构”。
2、AOE 网的关键概念(时间参数)
为分析项目的时间特性,AOE 网定义了 4 个核心时间参数(以顶点 Vi 和边 <Vi,Vj> 为例):
(1)事件的最早发生时间(ve(i))
① 定义:顶点 Vi 所代表的事件最早可能发生的时间(即所有到达 Vi 的活动都完成的最早时间)。
② 计算规则:
a. 源点的最早发生时间 源点(项目从时间 0 开始)。
b. 对于其他顶点 Vi,ve(i)=max{ve(j)+weight(<Vj,Vi>)}(取所有前置活动完成时间的最大值,因需等最后一个前置活动完成)。
(2)事件的最迟发生时间(vl(i))
① 定义:顶点 Vi 所代表的事件最迟必须发生的时间(若超过此时间,会延误整个项目的完成时间)。
② 计算规则:
a. 汇点的最迟发生时间 汇点汇点(汇点的最早和最迟时间一致,即项目的最短完成时间)。
b. 对于其他顶点 Vi,vl(i)=min{vl(j)−weight(<Vi,Vj>)}(取所有后续活动最迟开始时间的最小值,确保不延误后续活动)。
(3)活动的最早开始时间(e(k))
① 定义:边 <Vi,Vj> 代表的活动 k最早可能开始的时间(即其起点事件 Vi 的最早发生时间)。
② 计算规则:e(k)=ve(i)。
(4)活动的最迟开始时间(l(k))
① 定义:边 <Vi,Vj> 代表的活动 k最迟必须开始的时间(若超过此时间,会延误后续事件的发生)。
② 计算规则:l(k)=vl(j)−weight(<Vi,Vj>)(即终点事件 Vj 的最迟发生时间减去活动的持续时间)。
③ 关键推导:活动的时间余量(l(k)−e(k))
- 若 l(k)−e(k)=0:活动 k 无时间余量,必须按时开始和完成,否则会延误整个项目 —— 这类活动属于 “关键活动”。
 - 若 l(k)−e(k)>0:活动 k 有缓冲时间,可在 [e(k),l(k)] 区间内开始,不影响项目总时间。
 
3、AOE 网的核心应用:关键路径(Critical Path)
关键路径是 AOE 网中从源点到汇点的最长路径,具有以下特性:
- 路径上的所有活动都是 “关键活动”(l(k)−e(k)=0)。
 - 关键路径的总长度(所有活动的权重之和)等于项目的最短完成时间(汇点的 ve 或 vl 值)。
 - 若关键路径上的任何活动延误,整个项目的完成时间会相应延误;非关键路径上的活动延误只要不超过其时间余量,不影响总时间。
 
4、示例说明(项目开发 AOE 网)
以 “软件项目开发” 为例,AOE 网结构如下:
- 顶点(事件):V0(项目开始)、V1(需求分析完成)、V2(设计完成)、V3(开发完成)、V4(测试完成)、V5(项目结束)。
 - 边(活动及持续时间):<V0,V1>:需求分析(5 天)、<V1,V2>:设计(3 天)、<V2,V3>:编码(8 天)、<V3,V4>:单元测试(2 天)、<V4,V5>:系统测试(4 天)、<V2,V4>:并行测试准备(3 天)。
 
对应的 AOE 网结构及时间参数计算:
-  
计算最早发生时间 ve:
- ve(0)=0
 - ve(1)=ve(0)+5=5
 - ve(2)=ve(1)+3=8
 - ve(3)=ve(2)+8=16
 - ve(4)=max{ve(3)+2,ve(2)+3}=max{18,11}=18
 - ve(5)=ve(4)+4=22(项目最短完成时间为 22 天)。
 
 -  
计算最迟发生时间 vl:
- vl(5)=ve(5)=22
 - vl(4)=vl(5)−4=18
 - vl(3)=vl(4)−2=16
 - vl(2)=min{vl(3)−8,vl(4)−3}=min{8,15}=8
 - vl(1)=vl(2)−3=5
 - vl(0)=vl(1)−5=0。
 
 -  
关键活动与关键路径:
- 所有活动的 e(k)=l(k)(如 <V0,V1>:e=0,l=0;<V1,V2>:e=5,l=5 等)。
 - 关键路径:V0→V1→V2→V3→V4→V5,总长度 22 天。
 
 
5、AOE 网与 AOV 网的对比
| 对比维度 | AOE 网(Activity On Edge) | AOV 网(Activity On Vertex) | 
|---|---|---|
| 活动的载体 | 边(Edge),权重表示活动持续时间 | 顶点(Vertex) | 
| 顶点的含义 | 事件(活动的开始 / 结束节点) | 活动本身 | 
| 边的含义 | 活动及持续时间,体现依赖关系 | 仅体现活动的先后依赖关系 | 
| 核心应用 | 计算项目最短完成时间、关键路径 | 确定活动的执行顺序(拓扑排序) | 
| 时间信息 | 包含(边的权重) | 不包含 | 
