如上图,是一个AOE网,点表示状态,边表示活动及其所须要的时间。为了求出关键路径,咱们使用一下算法:算法
1.求出到达各个状态的最先时间(按最大计)
这个过程是要从源点开始向汇点顺推:
- V1是源点,其最先开始时间是0。
- V二、V三、V4最先时间分别是是六、四、5。
- 对于V5而言,V2到V5所花费时间是6+1=7,而V3到V5所花费时间是4+1=5。咱们要按最大计,也就是V5最先时间是max{7,5}=7,按最大计是由于只有活动a4和a5同时完成了,才能到达V5状态。V3到V5须要5分钟,可是此时a4活动还没有完成(7分钟),因此都不能算到达V5,故而要按最大计。
- V6只有从V4到达,因此V6的最先完成时间是(5+2=)7。
- 同理,V7最先完成时间是16。
- 对于V8而言,和V5处理方法一致。V8=max{V5+7,V6+4}={7+7,7+4}=14。
- V9可算出是18。
这样,咱们能够获得各个状态的最先时间的表:spa

最先时间表
2.求出到达各个状态的最晚时间(按最小计)
这个过程是要从汇点开始向源点逆推:
- V9完成时间为18,最V7最迟开始时间是(18-2=)16
逆推
由于活动a10所需时间2。若是V7开始时间比16晚,则V9完成时间就会比18晚,这显然不对。 - 同理,V8最迟开始时间为14。
- 对于V5而言,能够从V七、V8两个点开始向前推算,此时要按最小计,即V5(最晚)=min{V7-9,V8-7}=min{16-9,14-7}=7。
请注意!!,min{V7-9,V8-7}中,V七、V8取的都是前面算出的最迟开始时间(而不是最先开始时间)。
按最小计
按最小计,是由于若是按最大计去计算V5的最晚开始时间,那么加上a7和a8的活动时间后,V七、V8至少有一个会比以前逆推算得出的最晚时间还要晚,这就发生了错误。 - 同理,可计算出剩下的点
这样,咱们能够获得各个状态的最晚时间的表:blog

最晚时间表
事实上,源点和汇点的最晚时间和最先时间一定是相同的。io
3.求出关键路径
求出关键活动,则关键活动所在路径即为关键路径
对于a1:class

这代表,a1最先只能从0时刻开始,最晚也只能从(6-6=)0时刻开始,所以,a1是关键活动。方法
对于a2:im

a2最先要从0时刻开始,可是它最晚开始时间倒是(6-4=)2。也就是说,从0开始作,4时刻即完成;从2开始作,6时刻刚好完成。从而在[0,2]区间内任意时间开始作a2都能保证按时完成。( 请区别顶点的最先最晚和活动的最先最晚时间。图示中的最先最晚是顶点状态的时间,活动的最先最晚开始时间倒是基于此来计算的)。
因为a2的开始时间是不定的,因此它不能主导工程的进度,从而它不是关键活动。
通常的,img

活动用时X时间,它最先要从E1时刻开始(一开始就开始),最晚要从L2-X时刻开始(即刚好完成)。因此,若是它是关键活动,则必然有 E1=L2-X,不然它就不是关键活动。
值得注意的是,顶点的最先开始时间等于最晚开始时间 是 该顶点处于关键路径 的 不充分没必要要条件。di

上表中蓝色底纹表示的点即为处于关键路径的点。尽管它们的最先时间与最晚时间都相同,可是这与它们是否为关键路径的点 无关。由于这还取决于起始点的最先时间以及活动时间。
