版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本节主要内容: 1、最小生成树算法 2、最短路径 3、拓扑排序 4、关键路径19.5 最小生成树1.基本概念 一个有n个顶点的连通图的生成树是原图的极小连通子图,它包含原图中的所有n个顶点,并且有保持图连通的最少的边。 (1)若在生成树中删除一条边就会使该生成树因变成非连通图而不再满足生成树的定义;(2)若在生成树中增加一条边就会使该生成树中因存在回路而不再满足生成树的定义;(3)一个连通图的生成树可能有许多;(4)有n个顶点的无向连通图,无论它的生成树的形状如何,一定有且只有n-1条边。 21V2V3V4V5V6V1V2V3V4V5V6V1V2V3V4V5V6V(a)(b)(c)无向图和它的
2、不同的生成树 3 如果无向连通图是一个带权图,那么它的所有生成树中必有一棵边的权值总和最小的生成树,我们称这棵生成树为最小代价生成树,简称最小生成树。 构造有n个顶点的无向连通带权图的最小生成树必须满足以下三条:(1)构造的最小生成树必须包括n个顶点;(2)构造的最小生成树中有且只有n-1条边;(3)构造的最小生成树中不存在回路。 典型的构造方法有两种,一种称作普里姆(Prim)算法,另一种称作克鲁斯卡尔(Kruskal)算法。 42.普里姆算法 一、算法思想 假设G=(V,E)为一个带权图,其中V为带权图中顶点的集合,E为带权图中边的权值集合。设置两个新的集合U和T,其中U用于存放带权图G的
3、最小生成树的顶点的集合,T用于存放带权图G的最小生成树的权值的集合。 普里姆算法思想是:令集合U的初值为U=u0(即假设构造最小生成树时从顶点u0开始),集合T的初值为T=。从所有顶点uU和顶点vV-U的带权边中选出具有最小权值的边(u,v),将顶点v加入集合U中,将边(u,v) 加入集合T中。如此不断重复,当U=V时则最小生成树构造完毕。此时集合U中存放着最小生成树顶点的集合,集合T中存放着最小生成树边的权值集合。 56图9-10 普里姆算法构造最小生成树的过程 7图9-10 普里姆算法构造最小生成树的过程 8图9-10 普里姆算法构造最小生成树的过程 93.克鲁斯卡尔算法 克鲁斯卡尔算法是
4、一种按照带权图中边的权值的递增顺序构造最小生成树的方法。设无向连通带权图G=(V,E),其中V为顶点的集合,E为边的集合。 克鲁斯卡尔算法思想是:设带权图G的最小生成树T由顶点集合和边的集合构成,其初值为T=(V,),即初始时最小生成树T只由带权图G中的顶点集合组成,各顶点之间没有一条边。这样,最小生成树T中的各个顶点各自构成一个连通分量。然后,按照边的权值递增的顺序考察带权图G中的边集合E中的各条边,若被考察的边的两个顶点属于T的两个不同的连通分量,则将此边加入到最小生成树T,同时把两个连通分量连接为一个连通分量;若被考察的边的两个顶点属于T的同一个连通分量,则将此边舍去。如此下去,当T中的
5、连通分量个数为1时,T中的该连通分量即为带权图G的一棵最小生成树 10克鲁斯卡尔算法构造最小生成树的过程 11克鲁斯卡尔算法构造最小生成树的过程 12139.6 最短路径 1.基本概念 路径长度:一条路径上所经过的边的数目 带权路径长度:路径上所经过边的权值之和最短路径:(带权)路径长度(值)最小的那条路径图9-13 (a)有向带权图; (b)邻接矩阵 14152.从一个顶点到其余各顶点的最短路径 一、狄克斯特拉算法思想 按路径长度递增的顺序逐步产生最短路径。 狄克斯特拉算法的思想是:设置两个顶点的集合S和T,集合S中存放已找到最短路径的顶点,集合T中存放当前还未找到最短路径的顶点。初始状态时
6、,集合S中只包含源点,设为v0,然后从集合T中选择到源点v0路径长度最短的顶点u加入到集合S中,集合S中每加入一个新的顶点u都要修改源点v0到集合T中剩余顶点的当前最短路径长度值,集合T中各顶点的新的当前最短路径长度值,为原来的当前最短路径长度值与从源点过顶点u到达该顶点的路径长度中的较小者。此过程不断重复,直到集合T中的顶点全部加入到集合S中为止。 16EFDBCA51810715EFDBCA530(a)EFDBCA530715EFDBCA5301810715EFDBCA851810715EFDBCA8510715(b)(c)(d)(e)(f)狄克斯特拉算法求从顶点A到其余各顶点最短路径的过
7、程 173.每对顶点之间的最短路径 带权有向图,每对顶点之间的最短路径可通过调用狄克斯特拉算法实现。具体方法是:每次以不同的顶点作为源点,调用狄克斯特拉算法求出从该源点到其余顶点的最短路径。重复n次就可求出每对顶点之间的最短路径。由于狄克斯特拉算法的时间复杂度为O(n2),所以这种算法的时间复杂度为O(n3)。 弗洛伊德算法的思想是:设矩阵cost用来存放带权有向图G的权值,即矩阵元素costij中存放着下标为i的顶点到下标为j的顶点之间的权值,可以通过递推构造一个矩阵序列A0,A1,A2,AN来求每对顶点之间的最短路径。其中,Akij(0kn)表示从顶点vi到顶点vj的路径上所经过的顶点下标
8、不大于k的最短路径长度。初始时有,A0ij=costij。18有向无环图及其应用 1 有向无环图的概念 2 AOV网与拓扑排序 3 AOE图与关键路径191 有向无环图的概念 一个无环的有向图称做有向无环图(directed acycline praph)。简称DAG图。DAG图是一类较特殊的有向图,下图给出了有向树、DAG图和有向图的例子。20(1) 有向无环图是描述含有公共子式的表达式的有效工具: 例如下述表达式: (a+b)*(b*(c+d)+(c+d)*e)*(c+d)*e) 可以用第六章讨论的二叉树来表示,如下图所示。21 仔细观察该表达式,可发现有一些相同的子表达式,如(c+d)和
9、(c+d)*e等,在二叉树中,它们也重复出现。若利用有向无环图,则可实现对相同子式的共享,从而节省存储空间。例如下图所示为表示同一表达式的有向无环图。22(2)无环图是描述一项工程或系统的进行过程的有效工具: 除最简单的情况之外,几乎所有的工程(project)都可分为若干个称作活动(activity)的子工程,而这些子工程之间,通常受着一定条件的约束,如其中某些子工程的开始必须在另一些子工程完成之后。 对整个工程和系统,人们关心的是两个方面的问题:一是工程能否顺利进行:二是估算整个工程完成所必须的最短时间。我们也在这一节讨论这一问题。232 AOV网与拓扑排序1AOV网 (顶点表示活动的网)
10、(1) AOV概念:顶点表示活动,弧表示活动之间存在的制约关系网称为AOV。(2) 用AOV表示一个工程: 概念所有的工程或者某种流程可以分为若干个小的工程或阶段,这些小的工程或阶段就称为活动。若以图中的顶点来表示活动,有向边表示活动之间的优先关系,则这样活动在顶点上的有向图称为AOV网。在AOV网中,若从顶点i到顶点j之间存在一条有向路径,称顶点i是顶点j的前驱,或者称顶点j是顶点i 的后继。若是图中的弧,则称顶点i是顶点j的直接前驱,顶点j 是顶点i的直接后驱。249.7 拓扑排序 1偏序关系和全序关系 拓扑排序就是要由某个集合上的偏序关系得到该集合上的全序关系。 若集合X上的关系R是自反
11、的、反对称的和传递的,则称关系R是集合X上的偏序关系(或称半序关系)。 设关系R为定义在集合X上的二元关系,若对于每一个xX,都有(x,x)R,则称R是自反的。 设关系R为定义在集合X上的二元关系,如果对于任意的x,y,zX,若当(x,y)R且(y,z)R时,有(x,z)R,则称关系R是传递的。25偏序关系的实质 是在集合X的元素之间建立层次结构。这种层次结构是依赖于偏序关系的可比性建立起来的。但是,偏序关系不能保证集合X中的任意两个元素之间都能比较。而全序关系可以保证集合中的任意两个元素之间都可以比较。26 对于AOV网的拓扑排序就是将AOV网中的所有顶点排成一个线性序列。 拓扑排序实际上就
12、是要由某个集合上的一个偏序关系得到该集合上的一个全序关系。 27下图给出在一个AOV网上实施上述步骤的例子。28 例如:计算机专业的学生必须完成一系列规定的基础课和专业课才能毕业。29 4有向图的拓扑排序算法 有向图的拓扑排序算法: (1) 在有向图中选择一个没有前驱的顶点,并把它输出; (2) 从有向图中删去该顶点以及与它相关的有向边。 重复上述两个步骤,直到所有顶点都输出,或者剩余的顶点中找不到没有前驱的顶点。在前一种情况下,顶点的输出序列就是一个拓扑序列;后一种情况则说明有向图中存在回路,如果有向图中存在回路,则该有向图一定无法得到一个拓扑序列。30 上述算法仅能得到有向图的一个拓扑序列
13、。改进上述算法,可以得到有向图的所有拓扑序列。 如果一个有向图存在一个拓扑序列,通常表示该有向图对应的某个施工流程图的一种施工方案切实可行;而如果一个有向图不存在一个拓扑序列,则说明该有向图对应的某个施工流程图存在设计问题,不存在切实可行的任何一种施工方案。 31 例:对于如下图所示的AOV网,写出利用拓扑排序算法得到的一个拓扑序列。 解:根据拓扑排序算法,得到的一个拓扑序列为0,1,7,2,4,8,5,9,3,6。392475608132建筑工程拓扑排序问题 333 AOE图与关键路径1AOE网(边表示活动的网) (1) AOE网概念:若在带权的有向图中,以顶点表示事件,以有向边表示活动,边
14、上的权值表示活动的开销(如该活动持续的时间),则此带权的有向图称为AOE网。 (2)AOE网表示一项工程能表示出: 完成预定工程计划所需要进行的活动; 每个活动计划完成的时间; 要发生哪些事件以及这些事件与活动之间的关系;34(3) 通过AOE网可以求得: 估算工程完成的时间 确定哪些活动是影响工程进度的关键。 (4) AOE网的两个特点: 只有在某顶点所代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始。 只有在进入一某顶点的各有向边所代表的活动都已经结束,该顶点所代表的事件才能发生。35a9=6a6=4a2=7a1=5a3=3a4=6a5=3a7=5a8=4a10=5a11=8a
15、14=9a12=2a13=8a15=3 图9-19 AOE网v0v3v1v4v7v6v8v5v2v936基本概念:路径长度:AOE网的一条路径上所有活动的总和称为该路径的长度。关键路径:在AOE网中,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径。关键活动:关键路径上的活动称为关键活动。显然,完成整个工程的最短时间就是AOE网中关键路径的长度,也就是AOE网中各关键活动所持续时间的总和。 例:找出前图所示的AOE网中的关键路径。解:在AOE网中,从源点v0到汇点v9共有13条路径,分别计算这13条路径的长度,得到最大路径长度为31。最大路径长度对应的关键路径为(v0,v2,v3,
16、v4,v6,v9) 和(v0,v2,v3,v4,v7,v9)。373几个参数的定义活动的持续时间dut():对于有向边代表的活动,dut()是该有向边的权值。事件可能的最早开始时间e(k):对于顶点k代表的事件,e(k)是从源点到该顶点的最大路径长度。在一个有n+1个事件的AOE网中, 源点0的最早开始时间e(0)等于0。事件k(k=1,2,3,n)可能的最早开始时间e(k)可用递推公式表示为: e(k)=0 顶点k=0为源点Max e(j)+dut() | 为网中的有向边 其他顶点38活动可能的最早开始时间e(i):对于有向边ai代表的活动,e(i)是该活动的弧尾事件可能的最早发生时间。假设
17、活动ai代表的是有向边,即ai是关联事件j和事件k的的活动,则e(i) =e(j)。 活动允许的最晚开始时间l(i):对于有向边ai代表的活动,l(i)是该活动的弧头事件允许的最晚发生时间减去该活动持续的时间。l(i)是在不推迟整个工程完成的前提下,活动ai必须开始的时间。假设活动ai代表的是有向边,即ai是关联事件j和事件k的的活动,则l(i) = l(k) - dut()。 这样,每个活动允许的时间余量就是l(i) - e(i)。而关键活动就是l(i) - e(i) = 0的那些活动,即可能的最早开始时间e(i)等于允许的最晚开始时间l(i)的那些活动就是关键活动。394寻找关键活动的算法
18、 求AOE网中关键活动的算法步骤为: (1)建立包含n+1个顶点、e条有向边的AOE网。其中,顶点v0为源点,顶点vn为汇点; (2)根据有向图的拓扑排序算法,求出AOE网的拓扑序列。如果AOE网中存在环,拓扑序列不存在,则无法得到AOE网的关键活动,算法失败退出; (3)从源点v0开始,令源点v0的最早开始时间ve0=0,按拓扑序列求其余各顶点k(k=1,2,3,n)的最早开始时间vek; (4)从汇点vn开始,令汇点vn的最晚发生时间vln=ven,按逆拓扑序列求其余各顶点k(k=n-1,n-2,2,1,0)的最晚发生时间vlk; (5)计算每个活动的最早开始时间ek (k=1,2,3,e
19、); (6)计算每个活动的最晚开始时间lk (k=1,2,3,e); (7)找出所有ek= lk的活动k,这些活动即为AOE网的关键活动。40 下图给出了一个具有15个活动、11个事件的假想工程的AOE网。v1,v2, v11分别表示一个事件;,分别表示一个活动;用a1,a2, ,a15代表这些活动。其中,v1称为源点,是整个工程的开始点,其入度为0;v11为终点,是整个工程的结束点,其出度为0 。 对于AOE网,可采用与AOV网一样的邻接表存储方式。其中,邻接表中边结点的域为该边的权值,即该有向边代表的活动所持续的时间。415、求关键路径的过程 下面以前图所示的AOE网为例,求出上述参量,来
20、确定该网的关键活动和关键路径。 (1) 按照式6-1求事件的最早发生时间vek ve 1=0 ve 2=3 ve 3=4 ve 4=ve2+2=5 ve 5=maxve2+1,ve3+3=7 ve 6=ve3+5=9 ve 7=maxve4+6,ve5+8=15 ve 8=ve5+4=11 ve 9=maxve8+10,ve6+2=21 ve 10=maxve8+4,ve9+1=22 ve 11=maxve7+7,ve10+6=2842(2) 按照式6-2求事件的最迟发生时间vlk。 vl 11= ve 11=28 vl 10= vl 11-6=22 vl 9= vl 10-1=21 vl 8
21、=min vl 10-4, vl 9-10=11 vl 7= vl 11-7=21 vl 6= vl 9-2=19 vl 5=min vl 7-8,vl 8-4=7 vl 4= vl 7-6=15 vl 3=min vl 5-3, vl 6-5=4 vl 2=min vl 4-2, vl 5-1=6 vl 1=minvl 2-3, vl 3-4=043 (3) 按照 (6-3)式和(6-4)式求活动ai的最早开始时间ei和最晚开始时间li活动a1 e 1=ve 1=0 l 1=vl 2 -3 =3活动a2 e 2=ve 1=0 l 2=vl 3 - 4=0活动a3 e 3=ve 2=3 l 3
22、=vl 4 - 2=13活动a4 e 4=ve 2=3 l 4=vl 5 - 1=6活动a5 e 5=ve 3=4 l 5=vl 5 - 3=4活动a6 e 6=ve 3=4 l 6=vl 6 - 5=14活动a7 e 7=ve 4=5 l 7=vl 7 - 6=15活动a8 e 8=ve 5=7 l 8=vl 7 - 8=13活动a9 e 9=ve 5=7 l 9=vl 8 - 4=7活动a10 e 10=ve 6=9 l 10=vl 9 - 2=19活动a11 e 11=ve 7=15 l 11=vl 11 - 7=21活动a12 e 12=ve 8=11 l 12=vl 10 - 4=18活动a13 e 13=ve 8=11 l 13=vl 9 - 10=11活动a14 e 14=ve 9=21 l 14=vl 10 -1=21活动a15 e 15=ve 10=22 l 15=vl 11 -6 =2244(5) 求关键路径: 比较ei和li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 况姓的来源研究报告
- 关于新能源研究报告
- 关于爆竹的研究报告
- 环球影业营销策略研究报告
- 保险合同特征
- 保姆月嫂合同
- 建筑工专业研究报告
- 旅游路线设计研究报告
- 关于记忆的研究报告
- 国外牙医审美现状研究报告
- 醛-亚胺-壳聚糖水凝胶的构筑及性能研究进展
- 无人机行业信息安全培训
- 管理会计学 第10版 课件 第4章 经营预测
- HACCP计划年度评审报告
- 2023年华南师范大学教师招聘考试历年真题库
- 长春版小学一年级语文上册写字表虚宫格写法教学提纲教学课件
- 2023年新改版教科版五年级下册科学全册练习题(一课一练)
- 耳尖放血课件完整版
- GB/T 3292.1-2008纺织品纱线条干不匀试验方法第1部分:电容法
- GB/T 16177-2007公共航空运输服务质量
- GB/T 12149-2017工业循环冷却水和锅炉用水中硅的测定
评论
0/150
提交评论