AOE--Activity On Edge

0. AOE网:即边表示活动的网,是一个带权的有向无环图,其中顶点表示事件(Event),每个事件表示在它之前的活动已经完成,在它之后的活动可以开始,弧表示活动,权表示活动持续的事件。AOE网可用来估算工程的完成事件。由于整个工程只有一个开始点和一个完成点。故在正常情况下(无环),网中只有一个入度为0的点(源点)和一个出度为0的点(汇点)。

1. 关于AOE网有待研究的问题

  1. 完成整项工程至少需要多少时间?

  2. 哪些活动是影响工程进度的关键?

2. 由于在AOE网中,有些活动是可以并行的,所以完成工程的最短时间是从开始点到完成点的最长路径的长度。路径最长的路径叫做关键路径。

PS:假设开始点是v1,从v1到vi的最长路径长度叫做事件vi的最早发生时间。这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。用E(i)表示活动ai的最早开始时间,L(i)表示一个活动的最迟开始时间,这是在不推迟整个工程完成的前提下,活动ai最迟必须开始进行的时间。两者之差L(i) - E(i)为完成活动ai的时间余量。L(i) = E(i)的活动称为关键活动。提前完成非关键活动并不能加快工程的进度。

为了求得AOE网中的活动的E(i)和L(i),首先应求得事件的最早发生时间Ve(j)和最迟发生时间Vl(j)。如果活动ai由弧表示,其持续时间记为dut(),则有:E(i) = Ve(j),L(i) = Vl(k) - dut()。求Ve(j)和Vl(j)需要两步:

  1. 从Ve(0) = 0开始向后递推,其中T是所有以第j个顶点为尾的弧的集合。Ve(j) = Max{Ve(i) + dut()} 属于T, j = 1 , 2 .....

  2. 从Vl(n - 1) = Ve(n - 1)其向前递推,其中S是所有以第i个顶点为头的弧的集合。Vl(i) = Min{Vl(j) - dut()} 属于S。 i = n - 2, n - 3.....

image.png

''' 无情的wikiped摘抄员,不过我觉得有多个地方错了,所以我在这里改了。不过也可能是我理解错了。
'''

你可能感兴趣的:(AOE--Activity On Edge)