数据结构第19讲关键路径与最短路径.ppt
《数据结构第19讲关键路径与最短路径.ppt》由会员分享,可在线阅读,更多相关《数据结构第19讲关键路径与最短路径.ppt(35页珍藏版)》请在三一办公上搜索。
1、第7章 图7.1 图的定义和术语7.2 图的存储结构7.3 图的遍历7.4 图的连通性问题7.5 有向无环图及其应用 7.5.1 拓扑排序 7.5.2 关键路径7.6 最短路径,7.5.2 关键路径,对整个工程和系统,人们关心的是两个方面的问题:1)工程能否顺利进行 对AOV网进行拓扑排序 2)估算整个工程完成所必须的最短时间 对AOE网求关键路径,AOE-网,AOE网(Activity On Edge Network):即边表示活动的网。AOE网是一个带权的有向无环图。其中:顶点表示事件(Event)弧表示活动(Activity)权值表示活动持续的时间 通常可用AOE网来估算工程的完成时间。
2、,上图AOE-网中:共有11项活动:a1,a2,a3,a11;共有9个事件:v1,v2,v3,v9,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。,v9表示整个工程的结束,v5表示a4和a5已经完成,a7和a8可以开始,与每个活动相联系的数是执行该活动所需的时间,v1表示整个工程的开始,由于整个工程只有一个开始点和一个完成点,在正常的情况(无环)下,网中只有一个入度为零的点(称作源点)和一个出度为零的点(称作汇点),汇点,源点,依据AOE-网可以研究什么问题?,(1)完成整项工程至少需要多少时间?(2)哪些活动是影响工程进度的关键?,完成工程的最短时间是从源点到汇点的最长路径的长
3、度。路径长度最长的路径叫做关键路径。从v1到v9的最长路径是(v1,v2,v5,v8,v9),路径长度是18。,假设开始点是v1,从v1到vi的最长路径长度叫做事件vi的最早发生时间。这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。用e(i)表示活动ai的最早开始时间。,V9的最早发生时间是18,事件vi的最早发生时间,l(i)e(i)两者之差意味着完成活动ai的时间余量。我们把l(i)e(i)的活动叫做关键活动。显然,关键路径上的所有活动都是关键活动,因此提前完成非关键活动并不能加快工程的进度。,a6的最早开始时间是5,最迟开始时间是8。如a6推迟3天开始或延迟3天完成,都不会影
4、响整个工程的完成。,活动的最迟开始时间l(i),这是在不推迟整个工程完成的前提下,活动ai最迟必须开始进行的时间。,由此可知:辨别关键活动就是找e(i)l(i)的活动。为求得AOE网中活动的e(i)和l(i),首先应求得事件的最早发生时间 ve(j)和 最迟发生时间vl(j)。若活动ai由弧表示,持续时间记为dut(),则有如下关系:活动i的最早开始时间等于事件j的最早发生时间 e(i)ve(i)活动i的最迟开始时间等于事件k的最迟时间减去活动i的持续时间 l(i)vl(j)-dut()求ve(j)和 vl(j)需分两步进行:,vej和vlj可以采用下面的递推公式计算:(1)向汇点递推 ve(
5、源点)=0;ve(j)=Max ve(i)+dut(),公式意义:从指向顶点Vj的弧的活动中取最晚完成的一个活动的完成时间作为Vj的最早发生时间vej,(2)向源点递推 由上一步的递推,最后总可求出汇点的最早发生时间ven。因汇点就是结束点,最迟发生时间与最早发生时间相同,即vln=ven。从汇点最迟发生现时间vln开始,利用下面公式:vl(汇点)=ve(汇点);vl(i)=Min vl(j)dut(),公式意义:由从Vi顶点指出的弧所代表的活动中取需最早开始的一个开始时间作为Vi的最迟发生时间。,由此得到下述求关键路径的算法:1)输入e条弧,建立AOE网的存储结构。2)从源点v0出发,令ve
6、00按拓扑有序求其余各顶点的最早发生时vei(1i n-1)。如果得到的拓扑有序序列中顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止;否则执行步骤(3)。3)从汇点vn出发,令vln-1=ven-1,按逆拓扑有序求其余各顶点的最迟发生时间vli(n-2 i 0);4)根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。若某条弧满足条件e(s)=l(s),则为关键活动。,如上所述,计算顶点的ve值是在拓扑排序的过程中进行的,需对拓扑排序的算法作如下修改:1)在拓扑排序之前设初值,令ve(i)=0(0)ve(j),则 ve(j)=ve(i)+du
7、t();3)为了能按逆拓扑有序序列的顺序计算各顶点的vl值,需记下在拓扑排序的过程中求得的拓扑有序序列,则需要在拓扑排序算法中,增设一个栈以记录拓扑有序序列,则在计算求得各顶点的 ve 值之后,从栈顶至栈底便为逆拓扑有序序列。,总之,关键路径的求解操作包括:1)计算 vej 和 vlj 向汇点递推 ve(源点)=0;ve(j)=Max ve(i)+dut()向源点递推 vl(汇点)=ve(汇点);vl(i)=Min vl(j)dut(),2)判断 l(i)=e(i)的活动(关键活动),求最早发生时间ve的算法,Status TopologicalOrder(ALGraph G,Stack fo
8、r(p=G.verticesj.firstarc;p;p=p-nextarc)k=padjvex;/对i号顶点的每个邻接点的入度减l if(-indegreek=0)Push(S,k);/若入度减为0,入栈 if(vej+*(p-info)vek)vek=vej+*(p-info);/for*(p-info)=dut()/while if(countG.vexnum)return ERROR;/该有向网有回路else return OK;/TopologicalOrder,求关键路径的算法,Status CriticalPath(ALGraph G)/G为有向网,输出G的各项关键活动 if(!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 19 关键 路径
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5986047.html