欢迎来到天天文库
浏览记录
ID:36843020
大小:254.75 KB
页数:26页
时间:2019-05-10
《《关键路径算法》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、关键路径与AOV-网相对应的是AOE-网(ActivityOnEdge)即边表示活动的网。AOE-网是一个带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表示活动持续的时间。通常,AOE-网可用来估算工程的完成时间。例如,图7.29是一个假想的有11项活动的AOE-网。其中有9个事件v1,v2,v3,…,v9,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。如v1表示整个工程开始,v9表示整个工程结束,v5表示a4和a5已经完成,a7和a8可以开始。与每个活动相联系的数是执行该活动所需的时间。比如,活动a1需要6天,a2需要4天等。和AOV-网
2、不同,对AOE-网有待研究的问题是:(1)完成整项工程至少需要多少时间?(2)哪些活动是影响工程进度的关键?由于在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度(这里所说的路径长度是指路径上各活动持续时间之和,不是路径上弧的数目)。路径长度最长的路径叫做关键路径(CriticalPath)。假设开始点是v1,从v1到vi的最长路径长度叫做事件vi的最早发生时间。这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。我们用e(i)表示活动ai的最早开始时间。还可以定义一个活动的最迟开始时间l(i),这是在不推迟整个工程完成的
3、前提下,活动ai最迟必须开始进行的时间。两者之差l(i)-e(i)意味着完成活动ai的时间余量。我们把l(i)=e(i)的活动叫做关键活动。显然,关键路径上的所有活动都是关键活动,因此提前完成非关键活动并不能加快工程的进度。因此,分析关键路径的目的是辨别哪些是关键活动,以便争取提高关键活动的工效,缩短整个工期。由上分析可知,辨别关键活动就是要找e(i)=l(i)的活动。为了求得AOE-网中活动的e(i)和l(i),首先求事件的最早发生时间ve(j)和最迟发生时间vl(j)。如果活动ai由弧表示,其持续时间记为dut(),则有如下关系:e(i)=ve(j)
4、(7-1)l(i)=vl(k)-dut()求ve(j)和vl(j)需分两步进行:(1)从ve(0)开始向前递推ve(j)=Max{ve(i)+dut()}i∈T,j=1,2,3,…,n-1(7-2)其中,T是所有以第j个顶点为尾的弧的结合。(2)从vl(n-1)=ve(n-1)起向后递推vl(i)=Min{vl(j)–dut()}j∈S,i=n-2,…,0(7-3)其中,S是所有以第i个顶点为头的弧的集合。这两个递推公式的计算必须分别在拓扑有序和逆拓扑有序的前提下进行。也就是说ve(j-1)必须在vj的所有前驱的最早发生时间
5、求得之后才能确定,而vl(j-1)则必须在vj的所有后继的最迟发生时间求得之后才能确定。因此,可以在拓扑排序的基础上计算ve(j-1)和vl(j-1)。由此得到求关键路径的算法:(1)输入e条弧,建立AOE-网的存储结构;(2)从源点v0出发,令ve[0]=0,按拓扑有序求其余各顶点的最早发生时间ve[i](1≤i≤n-1)。如果得到的拓扑有序序列中顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止;否则执行步骤(3)。(3)从汇点vn出发,令vl[n-1]=ve[n-1],按逆拓扑有序求其余各顶点的最迟发生时间vl[i](n—2≥i≥2);(4
6、)根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。若某条弧满足条件e(s)=l(s),则为关键活动。先将拓扑排序算法7.12改写成算法7.13,则算法7.14便为求关键路径的算法。/*图的关键路径问题的算法AOE.C*/#include#include#defineMAXVEX100#defineTRUE1#defineFALSE0typedefcharVertexType[MAXVEX];/*存放顶点信息的字符串*/typedeffloatAdjType;typedefstructArcNode{in
7、tadjvex;/*相邻顶点字段*/AdjTypeweight;structArcNode*nextarc;/*链字段*/}ArcNode;/*边表中的结点*/typedefstructVNode{VertexTypedata;/*顶点信息*/ArcNode*firstarc;/*边表头指针*/}VNode,AdjList[MAXVEX];/*顶点表中的结点*/typedefstruct{AdjListvertices;intvexnum,arcnum;/*图的顶点个数*/}ALGraph;/*求出图中所有顶点的入
此文档下载收益归作者所有