工程中想要知道完成工程至少需要多少时间以及影响工程进度的关键子工程,通过AOE网来解决。其中边表示活动,顶点表示事件。
如下图:
其中入度为0的点v0称为源点,出度为0的点v5称为汇点。当v1事件发生时,a0活动已经结束,当v0事件发生时,a0活动可以开始。
事件:
任何一个顶点事件,都存在最早开始时间与不影响整个工期的最晚开始时间,最早开始时间用ve[i]来表示,最晚开始时间用vl[i]来表示。(early 和 late)
最早开始时间:方向为从源点-> 汇点
源点的最早开始时间为0,即ve[0]=0。其余顶点的最早开始时间ve[j]=max{ve[i]+arc[i][j]},即 j 顶点的最早开始时间为:任一顶点 i 的 ve[i] 加上从 i 到 j 的权值,取其中的最大值。
最晚开始时间:方向为从汇点-> 源点
汇点的最晚开始时间等于其最早开始时间,vl[5]=ve[5]。其余顶点的最晚开始时间vl[i]=min{vl[j]-arc[i][j]},即 i 顶点的最晚开始时间为:任一顶点 j 的 vl[j] 减去从 i 到 j 的权值,取其中的最小值。
上图顶点时间的开始时间如下表:
顶点(事件) | v0 | v1 | v2 | v3 | v4 | v5 |
---|---|---|---|---|---|---|
ve | 0 | 3 | 2 | 6 | 6 | 8 |
vl | 0 | 4 | 2 | 6 | 7 | 8 |
其中ve等于vl的顶点称为关键顶点,由它们组成路径称为关键路径,上图的关键路径为v0-v2-v3-v5。完成该工程至少需要的时间为8,影响工程进度的关键子工程为关键路径。
活动:
类似的,活动的最早开始时间为e[k],最晚开始时间为l[k]。计算方法为:
活动的最早开始时间为弧尾所指向事件的最早开始时间
最晚开始时间为弧头所指向事件的最晚开始时间减去活动所需花费的时间
如下表:
边(活动) | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 |
---|---|---|---|---|---|---|---|---|
e | 0 | 0 | 3 | 3 | 2 | 2 | 6 | 6 |
l | 1 | 0 | 4 | 4 | 2 | 5 | 6 | 7 |
选取最早开始时间等于最晚开始时间的活动,它们所连接的路径为关键路径,该图的关键路径为:a1-a4-a6。它与通过事件所计算出的关键路径等效。