- 1、本文档共98页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[2018年最新整理]孙丽云数据结构第7章图(第18-21讲)
7.6 最短路径 本章小结 1、图中的基本术语; 2、图的邻接矩阵和邻接表存储; 3、图的遍历; 4、图的生成树与最小生成树; 5、拓扑排序; 6、关键路径。 求最短路径的迪杰斯特拉算法: 一般情况下, Dist[k] = 源点到顶点 k 的弧上的权值 或者 = 源点到其它顶点的路径长度 + 其它顶点到顶点 k 的弧上的权值。 设置辅助数组Dist,其中每个分量Dist[k] 表示 当前所求得的从源点到其余各顶点 k 的最短路径。 1)在所有从源点出发的弧中选取一条权值最小的弧,即为第一条最短路径。 2)修改其它各顶点的Dist[k]值。 假设求得最短路径的顶点为u, 若 Dist[u]+G.arcs[u][k]Dist[k] 则将 Dist[k] 改为 Dist[u]+G.arcs[u][k]。 V0和k之间存在弧 V0和k之间不存在弧 其中的最小值即为最短路径的长度。 v0 v1 v4 v3 v2 v5 100 30 10 60 10 5 50 20 举例:求下图中从v0到其余各顶点的最短路径 i=5 i=4 i=3 i=2 i=1 vj v5 从v0到各终点的D值和最短路径的求解过程 v1 终点 S v4 v3 v2 60 (v0,v2,v3) 30 (v0,v4) 10 (v0,v2) 50 (v0,v4,v3) ∞ ∞ ∞ ∞ ∞ 无 ∞ 100 (v0,v5) v2 30 (v0,v4) 10 (v0,v2) v5 v4 v3 100 (v0,v5) 30 (v0,v4) {v0,v2} {v0,v2,v4} {v0,v2,v4,v3} {v0,v2,v4,v3,v5} 90 (v0,v4,v5) 50 (v0,v4,v3) 60 (v0,v4,v3,v5) 60 (v0,v4,v3,v5) v0 v1 v4 v3 v2 v5 100 30 10 60 10 5 50 20 V0 V4 V3 V2 V1 4 10 20 8 3 25 30 5 12 例:求从V0结点到其它各结点的最短路径。 求从0结点到其它各结点的最短路径。 0 4 3 2 1 5 3 4 2 5 2 3 1 3 3 1 作业1 若出现相同的路径长度,该选哪个?参照课本P186代码,思考! 求每一对顶点之间的最短路径 弗洛伊德算法的基本思想是: 从 vi 到 vj 的所有可能存在的路径中,选出一条长度最短的路径。 若vi,vj存在,则存在路径{vi,vj} // 路径中不含其它顶点 若vi,v1,v1,vj存在,则存在路径{vi,v1,vj} // 路径中所含顶点序号不大于1 若{vi,…,v2}, {v2,…,vj}存在, 则存在一条路径{vi, …, v2, …vj} // 路径中所含顶点序号不大于2 … 依次类推,则 vi 至 vj 的最短路径应是上述这些路径中,路径长度最小者。 具体做法为: 第一步,让所有边上加入中间顶点0,取A[i][j]与A[i][0]+A[0][j]中较小的值作A[i][j]的值,完成后得到A(0), 第二步,让所有边上加入中间顶点1,取A[i][j]与A[i][1]+A[1][j]中较小的值,完成后得到A(1)…,如此进行下去,当第n步完成后,得到A(n-1),A(n-1)即为我们所求结果,A(n-1)[i][j]表示顶点i到顶点j的最短距离。 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 0 1 2 P(2) P(1) P(0) P(-1) P 0 D(1) D(2) D(-1) 2 1 D(0) D A C B 2 6 4 11 3 0 4 0 0 ∞ 2 3 6 11 0 4 11 0 0 0 0 0 0 0 0 6 2 7 3 4 4 6 6 6 2 2 3 3 5 7 7 AB AC BA BC CA AB AC BA BC CA AB AC BA BC CA CAB CAB AB ABC BA BC CA CAB ABC BCA 0 3 2 1 4 3 1 7 2 9 6 8 4 4 例:利用Floyd算法求下图中各对顶点之间的最短路径。 0 P (2) 0 D(2) 1 1 2 2 3 3 3 1 2 3 1 2 32 31 23 21 20 13 12 10 02 01 0 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0 P (3) P (1) P (0) P(-1)
您可能关注的文档
- [2018年最新整理]如何在已有的单元格中批量加入一段固定字符.doc
- [2018年最新整理]如何在幻灯片中插入图片.pptx
- [2018年最新整理]如何在线填写并打印申请表(适用于再次申请的学生).ppt
- [2018年最新整理]如何培养健康的心理.ppt
- [2018年最新整理]如何在线填写并打印申请表(适用于首次申请的学生).ppt
- [2018年最新整理]如何处理下属违反规章制度.ppt
- [2018年最新整理]如何填写统计101报表.ppt
- [2018年最新整理]如何处理物业管理服务中的常见投诉.ppt
- [2018年最新整理]如何处理照片照片技术.ppt
- [2018年最新整理]如何处理男生女生关系班会课件.ppt
- 职业技术学院2024级工业机器人技术(安装与维护)专业人才培养方案.docx
- 职业技术学院2024级应用化工技术专业人才培养方案.pdf
- 职业技术学院2024级软件技术(前端开发)专业人才培养方案.pdf
- 职业技术学院2024软件技术专业人才培养方案.docx
- 职业技术学院2024级信息安全技术应用(安全运维)专业人才培养方案.docx
- 职业技术学院2024级新能源汽车检测与维修技术(车辆鉴定与评估)专业人才培养方案.pdf
- 职业技术学院2024级石油炼制技术专业人才培养方案.pdf
- 职业技术学院2024级环境监测技术专业人才培养方案.docx
- 职业技术学院2024级汽车制造与试验技术专业人才培养方案.pdf
- 职业技术学院2024级信息安全技术应用专业人才培养方案.pdf
文档评论(0)