




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、专题3:最短路径,1,2,3,最短路径的定义,Dijkstra算法,Floyd算法,在非网图中,最短路径是指两顶点之间经历的边数最少的路径。,6.4 最短路径,最短路径,AE:1 ADE:2 ADCE:3 ABCE:3,最短路径,在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径。,AE:100 ADE:90 ADCE:60 ABCE:70,6.4 最短路径,问题描述:给定带权有向图G(V, E)和源点vV,求从v到G中其余各顶点的最短路径。,单源点最短路径问题,应用实例计算机网络传输的问题:怎样找到一种最经济的方式,从一台计算机向网上所有其它计算机发送一条消息。,迪杰斯特拉(Dij
2、kstra)提出了一个按路径长度递增的次序产生最短路径的算法Dijkstra算法。,6.4 最短路径,基本思想:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对viV-S,假设从源点v到vi的有向边为最短路径。以后每求得一条最短路径v, , vk,就将vk加入集合S中,并将路径v, , vk , vi与原来的假设相比较,取路径长度较小者为最短路径。重复上述过程,直到集合V中全部顶点加入到集合S中。,Dijkstra算法,6.4 最短路径,Dijkstra算法伪代码,6.4 最短路径,设源点v,w表示从顶点v到顶点vj的权值,dist(v, vj)表示从顶点v到顶点vj的最
3、短路径长度,Dijkstra算法的基本思想用伪代码描述如下:,1. 初始化:集合S = v;dist(v, vj) = w, (j=1.n); 2. 重复下述操作直到S = V 2.1 dist(v, vk) = mindist(v, vj), (j=1.n); 2.2 S = S + vk; 2.3 dist(v, vj)=mindist(v, vj), dist(v, vk) + w;,10,50,30,10,100,20,60,S=A AB:(A, B)10 AC:(A, C) AD: (A, D)30 AE: (A, E)100,Dijkstra算法,6.4 最短路径,10,50,30
4、,10,100,20,60,S=A, B AB:(A, B)10 AC:(A, B, C)60 AD: (A, D)30 AE: (A, E)100,Dijkstra算法,6.4 最短路径,10,50,30,10,100,20,60,S=A, B, D AB:(A, B)10 AC:(A, D, C)50 AD: (A, D)30 AE: (A, D, E)90,Dijkstra算法,6.4 最短路径,10,50,30,10,100,20,60,S=A, B, D, C AB:(A, B)10 AC:(A, D, C)50 AD: (A, D)30 AE: (A, D, C, E)60,Dij
5、kstra算法,6.4 最短路径,10,50,30,10,100,20,60,Dijkstra算法,S=A, B, D, C, E AB:(A, B)10 AC:(A, D, C)50 AD: (A, D)30 AE: (A, D, C, E)60,6.4 最短路径,图的存储结构:带权的邻接矩阵存储结构,数组distn:每个分量disti表示当前所找到的从始点v到终点vi的最短路径的长度。初态为:若从v到vi有弧,则disti为弧上权值;否则置disti为。,数组sn:存放源点和已经生成的终点,其初态为只有一个源点v。,数据结构 :,6.4 最短路径,1. 初始化数组dist和s; 2. wh
6、ile (s中的元素个数 distk + G.arcki) pathi = pathk + G.vertexi,Dijkstra算法C+描述,每一对顶点之间的最短路径,问题描述:给定带权有向图G(V, E),对任意顶点vi,vjV(ij),求顶点vi到顶点vj的最短路径。,解决办法1:每次以一个顶点为源点调用Dijkstra算法。显然,时间复杂度为O(n3)。 解决办法2:弗洛伊德提出的求每一对顶点之间的最短路径算法Floyd算法,其时间复杂度也是O(n3),但形式上要简单些。,6.4 最短路径,基本思想:对于从vi到vj的弧,进行n次试探:首先考虑路径vi,v0,vj是否存在,如果存在,则比
7、较vi,vj和vi,v0,vj的路径长度,取较短者为从vi到vj的中间顶点的序号不大于0的最短路径。在路径上再增加一个顶点v1,依此类推,在经过n次比较后,最后求得的必是从顶点vi到顶点vj的最短路径。,Floyd算法,6.4 最短路径,0 4 11 6 0 2 3 0,有向网图 邻接矩阵,Floyd算法,3,4,6,11,2,6.4 最短路径,Floyd算法,dist-1 =,0 4 11 6 0 2 3 0,path-1 =,ab ac ba bc ca,初始化,6.4 最短路径,Floyd算法,dist-1 =,0 4 11 6 0 2 3 0,path-1 =,ab ac ba bc
8、ca,第1次迭代,dist0 =,0 4 11 6 0 2 3 7 0,path0 =,ab ac ba bc ca cab,6.4 最短路径,Floyd算法,第2次迭代,dist0 =,0 4 11 6 0 2 3 7 0,path0 =,ab ac ba bc ca cab,dist1 =,0 4 6 6 0 2 3 7 0,path1 =,ab abc ba bc ca cab,6.4 最短路径,Floyd算法,3,4,6,11,2,第3次迭代,dist2 =,0 4 6 5 0 2 3 7 0,path2 =,ab abc bca bc ca cab,dist1 =,0 4 6 6 0
9、 2 3 7 0,path1 =,ab abc ba bc ca cab,6.4 最短路径,图的存储结构:带权的邻接矩阵存储结构 数组distnn:存放在迭代过程中求得的最短路径长度。迭代公式: 数组pathnn:存放从vi到vj的最短路径,初始为pathij=vivj。,数据结构,6.4 最短路径,void Floyd(MGraph G) for (i=0; iG.vertexNum; i+) for (j=0; jG.vertexNum; j+) distij=G.arcij; if (distij!=) pathij=G.vertexi+G.vertexj; else pathij=; for (k=0; kG.vertexNum; k+) for (i=0; iG.vertexNum; i+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肝癌的快速检测技术
- 鄂州市九下期中数学试卷
- 工厂着装培训课件
- 福建五年级数学试卷
- 2025年03月青岛市卫生健康系统公开招聘工作人员人数统计截至012日1630笔试历年专业考点(难、易错点)附带答案详解
- 2025年06月浙江金华永康市医疗急救指挥中心招聘编外人员2人笔试历年专业考点(难、易错点)附带答案详解
- 2025至2030宠物衣服产业行业市场占有率及投资前景评估规划报告
- 2025至2030超白涂料产业市场发展分析及发展趋势与投资价值报告
- 2025至2030餐饮行业市场深度研究与战略咨询分析报告
- 电脑怎么弄数学试卷
- 社区工作者招聘考试笔试题库大全(含答案详解)
- 码头承包经营合同
- DB37T2367-2022《回弹法检测砌筑砂浆抗压强度技术规程》
- 对生活饮用水的卫生监督
- 2022江苏省中央财政补贴型奶牛养殖保险条款
- 乐山市口腔医院门诊牙科诊所医疗机构企业地址名单目录
- WTO世界贸易组织概论期末复习题
- 外贸业务员KPI考核量表
- 智慧物业管理系统解决方案
- 幼儿园教育活动设计与指导幼儿园教育活动设计的基本模式
- 数字声音广播7-drm技术系统与二
评论
0/150
提交评论