定义
- AOV-网 Activity On Vertex Network:用顶点表示活动,用弧表示活动间的优先关系的有向图,用来研究完成活动的先后次序,即进行拓扑排序
- AOE-网 Activity On Edge:顶点表示时间结点,弧表示活动,权表示活动持续的时间,用来估算工程的完成时间,即求关键路径的操作
拓扑排序
- 在有向图中选一个没有前驱的顶点并输出之
- 从图中删除该顶点和所有以它为尾的弧
- 重复上述两步直到全部顶点均已输出,或当前图中不存在无前驱的顶点(这种情况说明有环)为止
关键路径
- 每个事件表示在它之前的活动已经完成,在它之后的活动可以开始
- 整个工程只有一个入度为零的点(源点)和一个出度为零的点(汇点)
- 由于活动可以并行进行,完成工程最短时间是从源点到汇点的最长路径(关键路径)的长度
- e ( i ) e(i) e(i):活动 a i a_i ai的最早开始时间
- l ( i ) l(i) l(i):在不推迟整个工程完成的前提下,活动 a i a_i ai的最迟开始时间
- 关键活动: e ( i ) = l ( i ) e(i)=l(i) e(i)=l(i),关键路径的所有活动都是关键活动
- v e ( j ) ve(j) ve(j):时间结点最早发生时间
- v l ( j ) vl(j) vl(j):时间结点最迟发生时间
- 活动 a i a_i ai由弧 < j , k > <j,k> <j,k>表示,其持续时间记为 d u t ( < j , k > ) dut(<j,k>) dut(<j,k>)
- e ( i ) = v e ( j ) e(i)=ve(j) e(i)=ve(j)
- l ( i ) = v l ( k ) − d u t ( < j , k > ) l(i)=vl(k)-dut(<j,k>) l(i)=vl(k)−dut(<j,k>)
- v e ( j ) = M a x { v e ( i ) + d u t ( < i , j > ) } ve(j)=Max\{ve(i)+dut(<i,j>)\} ve(j)=Max{ve(i)+dut(<i,j>)}
- v l ( j ) = M i n { v l ( j ) − d u t ( < i , j > ) } vl(j)=Min\{vl(j)-dut(<i,j>)\} vl(j)=Min{vl(j)−dut(<i,j>)}