- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图大连理工大学刘馨月图的基本概念图的存储图的遍历最小生成树最短路径关键路径主要内容最短路径兰州太原北京济南徐州郑州西安旅客希望停靠站越少越好则应选择济南北京太原兰州旅客考虑的是旅程越短越好济南徐州郑州西安兰州最短路径单源最短路径算法任意点对之间的最短路径算法最短路径单源最短路径给定一个带权图其中每条边上的权是一个非负实数另外给定中的一个顶点充当源点现在要计算从源点到所有其他各顶点的最短路径这个问题通常称为单源最短路径问题单源最短路径单源最短路径算法是由提出的一种按路径长度递增的次序产生到各顶点最
图 大连理工大学 刘 馨 月 图的基本概念 图的存储 图的遍历 最小生成树 最短路径 关键路径 主要内容 最短路径 兰州 太原 北京 济南 徐州 郑州 西安 旅客希望停靠站越少越好,则应选择 济南——北京——太原——兰州 旅客考虑的是旅程越短越好, 1120 920 720 210 540 340 640 190 济南——徐州——郑州——西安——兰州 最短路径 单源最短路径(Dijstra算法) 任意点对之间的最短路径(Floyd算法) 最短路径 单源最短路径 给定一个带权图G = V,E,其中每条边(vi,vj)上的权W[vi,vj]是一个非负实数。另外,给定V中的一个顶点s充当源点。 现在要计算从源点s到所有其他各顶点的最短路径,这个问题通常称为单源最短路径(single-source shortest paths)问题。 单源最短路径 单源最短路径 Dijkstra算法:是由E.W.Dijkstra提出的一种按路径长度递增的次序产生到各顶点最短路径的贪心算法。 E.W.Dijkstra [Dijkstra中的j不发音, d??kstra]: 1930年5月11日出身于the Netherlands Rotterdam. 1972年获得图灵奖(对开发ALGOL做出了重要贡献) 提出不要使用goto语句 去世于2002年8月6日于Nuenen, the Netherlands. 单源最短路径 Dijkstra算法 如果v0到vj的最短路径为: v0 ?vx1 ? vx2 ? vxn ? vi ? vj 则 v0 ?vx1 ? vx2 ? vxn ? vi是v0到vi的最短路径。 按长度顺序产生最短路径时,下一条最短路径总是由一条已产生的最短路径加上一条边形成。 Dijkstra算法 Dijkstra算法基本思想 集合S表示最短距离已经确定的顶点集。 其余的顶点放在另一个集合V-S中。 数组D来记录当前所找到的从源点s到每个顶点的最短特殊路径长度。 从尚未确定最短路径长度的集合V-S中取出一个最短特殊路径长度最小的顶点u,将u加入集合S,同时修改数组D中由s可达的最短路径长度。 Dijkstra算法 Dijkstra算法示例 例, v5 v0 v1 v4 v3 60 100 5 v2 10 30 20 10 50 V0 V1 V2 V3 V4 V5 V2 v2 V4 v4 Dijkstra算法 Dijkstra算法基本步骤 D的初始状态为:如果从源点s到顶点v有弧则D[v]记为弧的权值;否则将D[v]置为无穷大。 每次从尚未确定最短路径长度的集合V-S中取出一个最短特殊路径长度最小的顶点u,将u加入集合S,同时修改数组D中由s可达的最短路径长度:若加进u做中间顶点,使得vi的最短特殊路径长度变短,则修改vi的距离值(即当D[u] + W[u, vi] D[vi]时,令D[vi] = D[u] + W[u, vi])。 然后重复上述操作,一旦S包含了所有V中的顶点,D中各顶点的距离值就记录了从源点s到该顶点的最短路径长度。 Dijkstra算法 例, v5 v0 v1 v4 v3 60 100 5 v2 10 30 20 10 50 带权邻接矩阵 ∞ ∞ 10 ∞ 30 100 0 1 2 3 4 5 ∞ ∞ 5 ∞ ∞ ∞ ∞ ∞ ∞ 50 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 10 ∞ ∞ ∞ 20 ∞ 60 ∞ ∞ ∞ ∞ ∞ ∞ 0 1 2 3 4 5 {v2} ∞ 10 ∞ 30 100 v0v2 v2 10 ∞ 60 30 100 v0v4 v4 30 {v2 , v4} ∞ 50 90 v0v4v3 v3 50 {v2 , v4 , v3} ∞ 60 v0v4v3v5 v5 60 {v2 , v4 , v3 , v5} ∞ v1 ∞ v1 v2 v3 v4 v5 最短路径 新顶点 S 顶点 路径长度 每次修改都用的是最新加入集合 S 的顶点 Dijkstra算法实例 Dijkstra算法 Dijkstra算法实现 其中的Dist类可以如下定义: Class Dist{ int length; //与源s的距离 int pre; //前面的顶点 }; 而minVertex()函数可用最小堆(Minheap)等方式实现。 Dijkstra算法实现 Dijkstra算法实现 void Dijkstra(Graph G,int s, Dist* D) { D=n
您可能关注的文档
最近下载
- 光伏电站的运行与维护规范.pdf
- 危化企业加油加气站双重预防机制手册.doc VIP
- 《首批重点监管的危险化学品名录》.pdf VIP
- 设计的创造性思维和工程思维 课件 高中通用技术粤科版 必修 技术与设计 .ppt VIP
- 兄弟 HL-4150CDN 4570CDW 4150 4570 彩色激光打印机中文维修手册.pdf VIP
- 医护人员职业安全与防护.pptx VIP
- 常用量具、检具测量基础知识试题(附答案).docx VIP
- 建设工程造价鉴定规范.pdf VIP
- 2025年中国石化校园招聘确认笔试参考题库附带答案详解.docx
- 现代家政学概论-ppt6.1第一节服装搭配.pptx VIP
文档评论(0)