数据结构课件7图2章节幻灯片.PPT

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
迪杰斯特拉(Dijkstra)算法思想 按路径长度递增次序产生最短路径算法: 把V分成两组: (1)S:已求出最短路径的顶点的集合 (2)V-S=T:尚未确定最短路径的顶点集合 将T中顶点按最短路径递增的次序加入到S中, 保证:(1)从源点V0到S中各顶点的最短路径长度都不大于 从V0到T中任何顶点的最短路径长度 (2)每个顶点对应一个距离值 S中顶点:从V0到此顶点的最短路径长度 T中顶点:从V0到此顶点的只包括S中顶点作中间 顶点的最短路径长度 依据:可以证明V0到T中最近顶点Vk的最短路径,或是从V0到Vk的 直接路径的权值,或是从V0经S中顶点到Vk的路径权值之和 (反证法可证) 求最短路径步骤 初始时令 S={V0},T={其余顶点},T中顶点对应的距离值 若存在V0,Vi,为V0,Vi弧上的权值 若不存在V0,Vi,为? 从T中选取一个其距离值为最小的顶点W,加入S 对T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值比不加W的路径要短,则修改此距离值 重复上述步骤,直到S中包含所有顶点,即S=V为止 13 V0,V1 8 V0,V2 ? 30 V0,V4 ? 32 V0,V6 V2:8 V0,V2 13 V0,V1 ------- 13 V0,V2,V3 30 V0,V4 ? 32 V0,V6 V1:13 V0,V1 ------- ------- 13 V0,V2,V3 30 V0,V4 22 V0,V1,V5 20 V0,V1,V6 V3:13 V0,V2,V3 ------- ------- ------- 19 V0,V2,V3,V4 22 V0,V1,V5 20 V0,V1,V6 V4:19 V0,V2,V3,V4 终点 从V0到各终点的最短路径及其长度 V1 V2 V3 V4 V5 V6 Vj -------- -------- -------- -------- 21 V0,V2,V3,V4,V5 20 V0,V1,V6 V6:20 V0, V1,V6 5 1 6 4 3 2 0 8 5 6 2 30 13 7 17 32 9 算法实现(P189,算法7.15) 图用带权邻接矩阵存储 数组D[ ]存放当前找到的从源点V0到每个终点的最短路径长度,其初态为图中直接路径权值 数组P[ ][ ]表示从V0到各终点的最短路径,第一维表示某个终点,第二维表示V0到各终点的最短路径所经过的顶点(True为最短路径的顶点,否则为False) 数组final[ ]表示各顶点的最短路径是否已经求出,True为已求出,否则为False。 算法分析:T(n)=O(n2) 每一对顶点之间的最短路径 方法一:每次以一个顶点为源点,重复执行Dijkstra算法n次—— T(n)=O(n3) 方法二:弗洛伊德(Floyd)算法 算法思想:逐个顶点试探法 求最短路径步骤 初始时设置一个n阶方阵,令其对角线元素为0,若存在弧Vi,Vj,则对应元素为权值;否则为? 逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值 所有顶点试探完毕,算法结束 例 A C B 2 6 4 3 11 0 4 11 6 0 2 3 ? 0 初始: 路径: AB AC BA BC CA 0 4 6 6 0 2 3 7 0 加入V2: 路径: AB ABC BA BC CA CAB 0 4 11 6 0 2 3 7 0 加入V1: 路径: AB AC BA BC CA CAB 0 4 6 5 0 2 3 7 0 加入V3: 路径: AB ABC BCA BC CA CAB 算法实现(P191,算法7.16) 图用带权邻接矩阵存储 数组D[ ][ ]存放当前找到的从各对终点的最短路径长度,其初态为图中直接路径权值 数组P[ ][ ][ ]表示各对终点的最短路径,第一、二维表示某一对顶点,第三维表示这对终点的最短路径所经过的顶点(True为最短路径的顶点,否则为False) 算法分析:

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档