




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,1.问题的提出:已知一个各边权值均大于0的带权有向图,对每一对顶点 vi vj,要求求出vi 与vj之间的最短路径和最短路径长度。,2.解决办法 方法一:每次以一个顶点为源点,重复执行Dijkstra算法n次 T(n)=O(n) 方法二:弗洛伊德(Floyd)算法,1,10/21/2020,2,求最短路径步骤 初始时设置一个n阶方阵,令其对角线元素为0,若存在弧,则对应元素为权值;否则为 逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值 所有顶点试探完毕,算法结束,3. Floyd算法思想:逐个顶点试探法,2,10/21/2020,从图的带权邻接矩阵G.
2、arcs出发,假设求顶点Vi到Vj的最短路径。如果从Vi到Vj有弧,则从Vi到Vj存在一条长度为G.arcsij的路径,但该路径是否一定是最短路径,还需要进行n次试探。,1.第一次,判别( Vi, V0 )和( V0,Vj ),即判别(Vi, V0 , Vj)是否存在,若存在,则比较( Vi, Vj )和(Vi, V0 , Vj)的长度,取长度较短的为从Vi到Vj的中间顶点序号不大于0的最短路径。,3,10/21/2020,2. 第二次,再加一个顶点V1,如果(Vi, , V1) 和(V1, , Vj)分别是当前找到的中间顶点序号不大于0的最短路径,那么(Vi, , V1, , Vj )就有可
3、能是从Vi到Vj的中间顶点序号不大于1的最短路径。将它和已经得到的从Vi到Vj之间顶点序号不大于0的最短路径相比较,取较短者为从Vi到Vj的中间顶点序号不大于1的最短路径。,3. 第三次,再加一个顶点V2,继续进行试探。,4,10/21/2020,D(-1) =,D(-1)为有向网的邻接矩阵 第一步:以D(-1)为基础,以V0为中间顶点,求从Vi到Vj的最短路径。该路径或者为从Vi到Vj的边, 或者为(Vi,V0)+(V0,Vj) 。,D(0) ij =,minD(-1) ij, D(-1) i0+D(-1) 0j,D(0) ij 为从Vi到Vj的中间顶点序号不大于0的最短路径长度.,5,20
4、20/10/21,以D(0)为基础,以V1为中间顶点,求从Vi,到Vj的最短路径。该路径或者为从Vi到Vj的边, 或者为从Vi开始通过V0或V1到达Vj的最短路径 。,D(1) ij =,minD(0) ij, D(0) i1+D(0) 1j,6,2020/10/21,以D(1)为基础,以V2为中间顶点,求从Vi,到Vj的最短路径。或者为从Vi到Vj的边, 或者为从Vi开始通过V0,V1, V2到达Vj的最短路径 。,D(2) ij =,minD(1) ij, D(1) i2+D(1) 2j,7,2020/10/21,以D(2)为基础,以V3为中间顶点,求从Vi,到Vj的最短路径。或者为从Vi
5、到Vj的边, 或者为从Vi开始通过V0,V1, V2,V3到达Vj的最短路径 。,D(3) ij =,minD(2) ij, D(2) i3+D(2) 3j,D(3) ij 即为从Vi到Vj的最短路径长度.,8,2020/10/21,9,例题:,9,10/21/2020,10,10,10/21/2020,11,4. 论点:A(-1) ij是从顶点vi 到vj , 中间顶点是 v1的最短路径的长度,A(k) ij是从顶点vi 到vj , 中间顶点的序号不大于k的最短路径的长度, A(n-1)ij是从顶点vi 到vj 的最短路径长度。 证明:归纳证明,始归纳于s (上角标); (1) 归纳基础:当
6、s=-1 时, A(-1) ij= Edgeij, vi 到vj , 不经过任何顶点的边,是最短路径。 (2)归纳假设:当sk时, A(s) ij是从顶点vi 到vj , 中间顶点的序号不大于s的最短路径的长度; (3)当s=k时,,11,10/21/2020,12,i,j,k,A(k-1) ik,A(k-1) kj,A(k-1) ij,因为:A(k) ij = min A(k-1)ij, A(k-1)ik + A(k-1)kj 由归纳假设知: A(k-1)ij :是i到j的最短路径(标号不高于k-1); A(k-1)ik :是i到k的最短路径(标号不高于k-1); A(k-1)kj :是k到
7、j的最短路径(标号不高于k-1); 所以: A(k) ij 是i到j的最短路径(标号不高于k)。,12,10/21/2020,13,图用邻接矩阵存储 edge 存放最短路径长度 pathij是从Vi到Vj的最短路径上Vj前一顶点序号,5.算法实现,void floyd ( ) for ( int i = 0; i n; i+ ) /矩阵dist与path初始化 for ( int j = 0; j n; j+ ) /置A(-1) distij = Edgeij; pathij = -1; / 初始不经过任何顶点 for ( int k = 0; k n; k+ ) /产生dist(k)及path(k) for ( i = 0; i n; i+ ) for ( j = 0; j n; j+ ) if (distik + distkj distij ) distij = distik + distkj; pathij = k; /缩短路径, 绕过 k 到 j / floyd,13,10/21/2020,14,6.算法分析: 设最内层循环体为基本操作,算法有三层循环,每层循环n次,所以T(n)=O(n3),14,10/21/2020,15,15,10/21/2020,16,以 Path(3)为例,对最短路径的读法加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邮政快递设施建设工程
- 企业国防意识培训课件
- 金属结构厂房设计与施工一体化合同
- 个性化定制办公用品买卖合同
- 美国进口商定制出口销售合同范本
- 项目绩效目标修订方案
- 车辆抵押贷款还清后借用合同
- 金融科技创新财务代理与风险评估合同范本
- 建筑书架改造方案
- 污水行业面试题及答案
- 2025至2030内燃机市场发展趋势分析与未来投资战略咨询研究报告
- 2025年陕西延长石油招聘笔试备考题库(带答案详解)
- 机加工工艺培训
- 江苏扬州经济技术开发区区属国有企业招聘笔试真题2024
- CT增强扫描造影剂外渗的预防与处理
- 深静脉置管的维护与护理
- 孤独症业务管理制度
- 劳务服务购买协议书范本
- Alport综合征基因诊断
- 搜身带离技术课件
- 校准员试题及答案
评论
0/150
提交评论