已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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网(ActivityOnEdgeNetwork):即边表示活动的网。AOE网是一个带权的有向无环图。其中:顶点表示事件(Event)弧表示活动(Activity)权值表示活动持续的时间通常可用AOE网来估算工程的完成时间。,上图AOE-网中:共有11项活动:a1,a2,a3,a11;共有9个事件:v1,v2,v3,v9,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。,v9表示整个工程的结束,v5表示a4和a5已经完成,a7和a8可以开始,与每个活动相联系的数是执行该活动所需的时间,v1表示整个工程的开始,由于整个工程只有一个开始点和一个完成点,在正常的情况(无环)下,网中只有一个入度为零的点(称作源点)和一个出度为零的点(称作汇点),汇点,源点,依据AOE-网可以研究什么问题?,(1)完成整项工程至少需要多少时间?(2)哪些活动是影响工程进度的关键?,完成工程的最短时间是从源点到汇点的最长路径的长度。路径长度最长的路径叫做关键路径。从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天完成,都不会影响整个工程的完成。,活动的最迟开始时间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(源点)=0;ve(j)=Maxve(i)+dut(),公式意义:从指向顶点Vj的弧的活动中取最晚完成的一个活动的完成时间作为Vj的最早发生时间vej,(2)向源点递推由上一步的递推,最后总可求出汇点的最早发生时间ven。因汇点就是结束点,最迟发生时间与最早发生时间相同,即vln=ven。从汇点最迟发生现时间vln开始,利用下面公式:vl(汇点)=ve(汇点);vl(i)=Minvl(j)dut(),公式意义:由从Vi顶点指出的弧所代表的活动中取需最早开始的一个开始时间作为Vi的最迟发生时间。,由此得到下述求关键路径的算法:1)输入e条弧,建立AOE网的存储结构。2)从源点v0出发,令ve00按拓扑有序求其余各顶点的最早发生时vei(1in-1)。如果得到的拓扑有序序列中顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止;否则执行步骤(3)。3)从汇点vn出发,令vln-1=ven-1,按逆拓扑有序求其余各顶点的最迟发生时间vli(n-2i0);4)根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。若某条弧满足条件e(s)=l(s),则为关键活动。,如上所述,计算顶点的ve值是在拓扑排序的过程中进行的,需对拓扑排序的算法作如下修改:1)在拓扑排序之前设初值,令ve(i)=0(0)ve(j),则ve(j)=ve(i)+dut();3)为了能按逆拓扑有序序列的顺序计算各顶点的vl值,需记下在拓扑排序的过程中求得的拓扑有序序列,则需要在拓扑排序算法中,增设一个栈以记录拓扑有序序列,则在计算求得各顶点的ve值之后,从栈顶至栈底便为逆拓扑有序序列。,总之,关键路径的求解操作包括:1)计算vej和vlj向汇点递推ve(源点)=0;ve(j)=Maxve(i)+dut()向源点递推vl(汇点)=ve(汇点);vl(i)=Minvl(j)dut(),2)判断l(i)=e(i)的活动(关键活动),求最早发生时间ve的算法,StatusTopologicalOrder(ALGraphG,Stackfor(p=G.verticesj.firstarc;p;p=p-nextarc)k=padjvex;/对i号顶点的每个邻接点的入度减lif(-indegreek=0)Push(S,k);/若入度减为0,入栈if(vej+*(p-info)vek)vek=vej+*(p-info);/for*(p-info)=dut()/whileif(countnextarc)k=p-adjvex;dut=*(pinfo);/dutif(vlk-dutnextarc)k=p-adjvex;dut=*(pinfo);ee=vej;el=vlk-dut;tag=(ee=e1)?*:;printf(j,k,dut,ee,el,tag);/输出关键活动/CriticalPath,例:求下图AOE网的关键路径,e(s)ve(i)l(s)vl(j)-dut(),ve(源点)=0;ve(j)=Maxve(i)+dut(),vl(汇点)=ve(汇点);vl(i)=Minvl(j)dut(),拓扑序列:V1、V3、V2、V5、V4、V6,练习:求下图AOE网的关键路径,总结:有向无环图是描述一项工程或系统的进行过程的有效工具。AOV网(顶点表示活动的有向网)与拓扑排序解决工程或系统能否顺利进行;AOE网(边表示活动的有向网)和关键路径问题估算整个工程完成所必须的最短时间,求解哪些活动为关键活动。,第7章图7.1图的定义和术语7.2图的存储结构7.3图的遍历7.4图的连通性问题7.5有向无环图及其应用7.6最短路径,7.6最短路径,所谓最短路径问题是指:如果从图中某一顶点(称为源点)出发到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边的权值总和达到最小。1.单源点最短路径2.所有顶点对之间的最短路径,7.6.1单源点最短路径,给定带权有向图G和源点v,求从v到G中其余各顶点的最短路径。,V5,V0,V2,V4,V1,V3,100,30,10,60,10,20,50,5,V0,V2,V4,V3,V5,V0,始点终点Di最短路径,V1V2V3V4V5,1030100,1030100,106030100,106030100,105030100,(V0,V2)(V0,V4)(V0,V5),(V0,V2)(V0,V4)(V0,V5),(V0,V2)(V0,V2,V3)(V0,V4)(V0,V5),(V0,V2)(V0,V2,V3)(V0,V4)(V0,V5),(V0,V2)(V0,V4,V3)(V0,V4)(V0,V5),10503090,(V0,V2)(V0,V4,V3)(V0,V4)(V0,V4,V5),10503090,(V0,V2)(V0,V4,V3)(V0,V4)(V0,V4,V5),10503060,(V0,V2)(V0,V4,V3)(V0,V4)(V0,V4,V3,V5),10503060,(V0,V2)(V0,V4,V3)(V0,V4)(V0,V4,V3,V5),如何在计算机中求得最短路径?,Dijkstra提出了一个按路径“长度”递增的次序,逐步得到由给定源点到图的其余各点间的最短路径的算法:假设我们以邻接矩阵cost表示所研究的有向网。迪杰斯特拉算法需要一个顶点集合,初始时集合内只有一个源点V0,以后陆续将已求得最短路径的顶点加入到集合中,到全部顶点都进入集合了,过程就结束了。集合可用一维数组来表示,设此数组为S,凡在集合S以外的顶点,其相应的数组元素Si为0,否则为1。,另需一个一维数组D,每个顶点对应数组的一个单元,记录从源点到其他各顶点当前的最短路径长度,其初值为Di=costV0i,i=1n。数组D中的数据随着算法的逐步进行要不断地修改定义了S集合和D数组并对其初始化后,迪杰斯特拉算法在进行中,都是从S之外的顶点集合中选出一个顶点w,使Dw的值最小。于是从源点到达w只通过S中的顶点,把w加入集合S中,并调整D中记录的从源点到集合中每个顶点v的距离:取Dv和Dw+costwv中值较小的作为新的Dv重复上述,直到S中包含V中其余各顶点的最短路径。,V0V1V2V3V4V5V01030100V15V250V310V42060V5,V0,V2,V4,V3,V5,V1,V0,V2,V4,V3,V5,V0,V2,V4,V3,V0,V2,V4,V0,V2,S=V0,V1,V5,V3,V4,V2,Vj,V5,V4,V3,V2,V1,i=5,i=4,i=3,i=2,i=1,D终点,7.6最短路径,7.6.1单源点最短路径7.6.2所有顶点对之间的最短路径,问题描述:已知一个各边权值均大于0的带权有向图,对每对顶点vivj,要求求出每一对顶点之间的最短路径和最短路径长度。解决方案:1.每次以一个顶点为源点,重复执行迪杰斯特拉算法n次。这样,便可求得每一对顶点之间的最短路径。总的执行时间为O(n3)。2.形式更直接的弗洛伊德(Floyd)算法。时间复杂度也为O(n3)。,弗洛伊德算法思想:假设求从顶点Vi到Vj的最短路径。如果从Vi到Vj有弧,则从Vi到Vj存在一条长度为arcsij的路径,该路径不一定是最短路径,尚需进行n次试探。首先考虑路径(Vi,V0,Vj)是否存在(即判别(Vi,V0)、(V0,Vj)是否存在)。如存在,则比较(Vi,Vj)和(Vi,V0,Vj)的路径长度,取长度较短者为从Vi到Vj的中间顶点的序号不大于0的最短路径。假如在路径上再增加一个顶点V1,依次类推。可同时求得各对顶点间的最短路径。,定义一个n阶方阵序列D(-1),D(0),D(1),D(2),D(k),D(n-1)其中:D(-1)ij=arcsijD(k)ij=MinD(k-1)ij,D(k-1)ik+D(k-1)kj0kn-1可见,D(1)ij就是从vi到vj的中间顶点的序号不大于1的最短路径的长度;D(k)ij就是从vi到vj的中间顶点的序号不大于k的最短路径的长度;D(n-1)ij就是从vi到vj的最短路径的长度。,各顶点间的最短路径及其路径长度,最短路径弗洛伊德举例,2,1,0,2,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025航空客运行业市场现状供需分析及投资潜力评估规划研究报告
- 五年级音乐课教案教学方案
- 2025航空制造行业市场供需关系分析及产业投资评估发展规划设计文书
- 2025航空供应链管理及市场竞争格局分析评估规划分析研究报告
- 2025航海渔业市场需求深度剖析及产业升级与市场规模预测研究报告
- 2025航天遥感数据加工技术市场现状分析及企业投资价值评估研究报告
- 完美版小学英语模板教案
- 滑膜关节相关医学知识宣讲培训教案
- 新四年级语文设计教案
- 七年级语文下《伟大的悲剧》教案
- 美国文化课件
- 《高等数学E》课程教学大纲及课程介绍
- 第十章 问题解决与创造性
- 团体心理咨询的基础
- 比较文学概论马工程课件 第6章
- GB/T 11352-2009一般工程用铸造碳钢件
- 主板规格书-薄板itx-m19ver1.1说明书
- 授信报告范本 中信
- 同方易教操作指南
- (完整)污水处理厂施工组织设计
- T-CABEE 003-2019 近零能耗建筑测评标准
评论
0/150
提交评论