目录
2.5、一个活动ai的最迟开始时间l(i)和其最早开始时间e(i)的差额d(i) = l(i)-e(i)
1、AOE网
在带权有向图中,以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销(如完成活动所需的时间),称之为用边表示活动的网络,简称AOE网。AOE网和AOV网都是有向无环图,不同之处在于它们的边和顶点所代表的含义是不同的,AOE网中的边有权值;而AOV网中的边无权值,仅表示顶点之间的前后关系。
AOE网具有以下两个性质:
①只有某顶点所代表的事情发生后,从该顶点出发的各有向边所代表的活动才能开始
②只有在进入某顶点的各有向边所代表的活动都已结束时,该顶点所代表的事情才能发生。
在AOE网中仅有一个入度为0的顶点,称为开始顶点(源点),它表示整个工程的开始;网中也进存在一个出度为0的顶点,称为结束顶点(汇点),它表示整个工程的结束。
在AOE网中,有些活动是可以并行进行的。从源点到汇点的有向路径可能有多条,并且这些路径长度可能不同。完成不同路径上的活动所需的时间虽然不同,但是只有所有路径上的活动都已完成,整个工程才算结束。因此,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径,而把关键路径 上的活动称为关键活动。
完成整个工程的最短时间就是关键路径的长度,即关键路径上各活动花销的总和。这是因为关键活动影响了整个工程的时间,即若关键活动不能按时完成,则整个工程的完成时间就会延长。因此,只要找到了关键活动,就找到了关键路径,也就可以得到最短完成时间。
2、关键活动的参量定义
下面给出在寻找关键活动时所用到的几个参量的定义。
2.1、时间vk的最早发生时间ve(k)
它是指源点v1到顶点vk的最长路径长度。时间vk的最早发生时间决定了所有从vk开始的活动能够开工的最早时间。可用下面的递推公式来计算:
ve(源点)=0
ve(k) = Max{ve(j) + Weight(vj,vk)},vk为vj的任意后继,Weight(vj,vk)表示<vj,vk>上的权值
计算ve()值时,按从前往后的顺序进行,可以在拓扑排序的基础上计算:
①初始时,令ve[1...n]=0。
②输出一个入度为0的顶点vj时,计算它所有直接后继顶点vk的最早发生时间,若ve[j]+Weight(vj,vk)>ve[k],写更新ve[k]=ve[j]+Weight(vj,vk)。以此类推,直至输出全部顶点。
2.2、事件vk的最迟发生时间vl(k)
它是指在不推迟整个工程完成的前提下,即保证它的后继时间vj在其最迟发生时间vl(j)能够发生时,该时间最迟必须发生的时间。可用下面的递推公式来计算:
vl(汇点) = ve(汇点)
vl(k) = Min{vl(j) - Weight(vk,vj)},vk为vj的任意前驱
注意:在计算vl(k)时,按从后往前的顺序进行,可以在逆拓扑排序的基础上计算
计算vl()值时,按从后往前的顺序进行,在上述拓扑排序中,增设一个栈记录拓扑序列,拓扑排序结束后从栈顶到栈底为逆拓扑有序序列。过程如下:
①初始时,令vl[1...n] = ve[n]。
②栈顶顶点vj出栈,计算其所有直接前驱顶点vk的最迟发生时间,若vl[j]-Weight(vk,vj) < vl[k],则vl[k] = vl[j] - Weight(vk,vj),以此类推,直至输出全部栈中顶点。
上面的第二步总结起来其实有没有发现就是用最迟的那个入度路径时间去更新其余的入度路径时间。
2.3、活动ai的最早开始时间e(i)
它是指该活动弧的起点所表示的时间的最早发生时间。若边<vk,vj>表示活动ai,则有e(i) = ve(k)。
2.4、活动ai的最迟开始时间l(i)
它是指该活动弧的终点所表示事件的最迟发生时间余该活动所需时间之差。若边<vk,vj>表示活动ai,则有l(i) = vl(j) - Weight(vk,vj)。
2.5、一个活动ai的最迟开始时间l(i)和其最早开始时间e(i)的差额d(i) = l(i)-e(i)
它是指该活动完成的时间余量,即在不增加完成整个工程所需总时间的情况下,活动a可以拖延的时间。若一个活动的时间余量为零,则说明该活动必须如期完成,否则就会拖延整个工程的进度,所以称l(i)-e(i)=0即l(i)-e(i)的活动ai是关键活动。
3、求关键路径的算法
步骤如下:
1)从源点出发,令ve(源点) = 0,按拓扑有序求其余顶点的最早发生时间ve()。
2)从汇点出发,令vl(汇点)=ve(汇点),按逆拓扑有序求其余顶点的最迟发生时间vl()。
3)根据各顶点的ve()值求所有弧的最早开始时间e()。
4)根据各顶点的vl()值求所有弧的最迟开始时间l()。
5)求AOE网中所有活动的差额,找出所有d()=0的活动构成关键路径。
由上述结果可知,关键路径e()=l()的是活动2、5、7,则关键路径为{事件1,事件3,事件4,事件6}
4、关键路径的意义和注意事项
1)关键路径上的所有活动都是关键活动,它是决定整个工程的关键因素,因此可通过加快关键活动来缩短整个工程的工期。但也不能任意缩短关键活动,因为一旦缩短到一定的程度,该关键活动可能变成非关键活动。
2)网中的关键路径并不唯一,且对于有几条关键路径的网,只提高一条关键路径上的关键活动速度并不能缩短整个工程的工期,只有加快那些包括在关键路径上的关键活动才能达到缩短工期的目的。