通过观看王卓老师的数据结构,进行如下总结(下面链接是关键路径章节的链接):
一、相关名词解释
AOE网:边带权的有向无环图,称之为用边表示活动的网络。
AOV网:边无权值的有向无环图,称之为用顶点表示活动的网络。
关键路径:从源点到汇点的所有路径中,具有最大路径长度的路径。
关键活动:关键路径上的活动。
关于求取关键路径的各个名词:
顶点表示事件(事件 j、k),边表示活动(活动 ai),边上的权值表示活动持续的时间(ai的值)
ve:顶点最早发生的时间
vl:顶点最晚发生的时间
e:边最早发生的时间
l:边最晚发生的时间
二、用具体的一个题进行解释各个值的求法
求关键路径的步骤:
1.求取各个顶点的最早发生时间和最晚发生时间
2.求取各条边的最早发生时间和最晚发生时间
3.求取边最晚发生时间-最早发生时间,其中等于0的就为关键活动
由上图就可以看出
事件有v1-v9 ,9个事件。活动有a1-a11,11个活动。
ve(事件最早发生时间):ve(j) = Max{ve(i) + W i,j },比如v2的最早发生时间,就是v1-v2的带权路径,就是a1的权值,即ve(2) = 6;
再看v5的最早发生时间,从中可以看到有两条路径到达v5,
v1-v2-v5 权值为 6+1 = 7; v1-v3-v5 权值为4+1 = 5;则取其中最大的那条路径,即ve(5)=7;
其他的路径同理进行推,其最早发生的时间就是权值最大的路径。
vl(事件的最晚发生时间):vl(i) = Min{ vl(j) - W i,j },此时最晚发生事件是从最后一个顶点往回减,即v9的最晚发生时间就是18,而v8的最晚发生时间就是 v9-v8的 v9减去v9到v8路径上的权值,即vl(9) =18-4=14;
再看v5的最晚发生时间,从中看到有两条路径通完v5,
v9-v8-v5 的权值就是 18-4-7=7;v9-v7-v5 的权值就是 18-2-9 = 7;则取其中最小的,因为是同样大小,所以vl(5) = 7;
其他路径同理进行推,其最晚发生的时间就是从顶点一路减回去,其中权值最小的就是最晚发生时间。
所以ve跟vl可以求出来,用下标来表示:
e(活动最早开始时间):如下图 ai 的最早开始时间就是 j 的最早开始时间即( ve(j) );
l(活动最晚开始时间):如下图 ai 的最晚开始时间就是 k 的最晚开始时间-ai即(vl(k) - Wj,k);
则可以用下表来表示关键路径的 e 跟 l 以及 l-e的值:
从上表中的 l-e 一栏就可以看出关键的活动为l - e = 0的活动,即a1,a4,a7,a8,a10,a11,其关键路径如下图所示:
注意:如果需要提高整工程的工期,则需要提高关键路径上的活动的速度,但不能只提高关键路径中一条关键路径上的某个活动(关键路径不止一条的情况下),需要提高所有关键路径所共有,或者分别提高各条关键路径的活动。但也不能任意缩短关键活动的工期,缩小到一定程度,关键活动就会变成非关键活动了。