第9章 数据结构-图.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 数据结构-图

* 求最短路径的迪杰斯特拉算法 迪杰斯特拉(Dijkstra)算法:按升序依次求出从源点到各顶点的最短路径及长度。 基本思想:设S为已确定最短距离的顶点集,初始只有源点s,依次在尚未确定距离的顶点中选取最小最短距离的顶点k,加入到S中。将k作为新的中间点,继续确定下一个顶点。 1 2 5 4 3 10 100 50 20 60 30 10 ∞ 1 2 5 4 3 10 100 30 10 30 100 1 2 5 4 3 10 100 30 10 30 50 60 100 10 90 30 10 30 50 1 2 5 4 3 60 20 1 2 5 4 3 10 10 50 20 30 60 30 10 1 2 5 4 3 10 10 50 20 30 60 30 10 * 最短路径 图中从V0~V4共有四条路径:{0,4},{0,1,3,4},{0,1,2,4},{0,1,3,2,4},其带权路径长度分别为30,23,38,25,最短路径为{0,1,3,4} 2 3 1 4 0 3 30 5 25 8 10 12 4 20 * 求最短路径的 Dijkstra算法 设置辅助数组Dist,其中每个分量Dist[k] 表示当前所求得的从源点到其余各顶点k的最短路径。 一般情况下, Dist[k]=源点到顶点k的弧上的权值 或者 Dist[k]=源点到其它顶点的路径长度 +其它顶点到顶点k的弧上的权值。 * ① 初始化:S={v0}; D[j]=Edge[0][j], j=1, 2, …, n-1; //n为顶点个数 ② 求出k,使最短路径的长度: D[k]=min{D[i]},vi?V-S}; S=SU{k}; ③ 修改:D[i]=min{D[i],D[k]+Edge[k][i]}, 对于vi?V-S; ④ 判断:若S=V,则算法结束,否则转 ②。 1 0 4 3 2 10 100 30 50 20 60 10 D 1 2 3 4 10 60 30 100 D 1 2 3 4 10 50 30 90 D 1 2 3 4 10 ∞ 30 100 初始化: 加入V1后: 加入V3后: * 1 0 4 3 2 10 100 30 50 20 60 10 D 1 2 3 4 10 50 30 60 加入V2 最后加入V4 * Dijkstra算法的例子 path为路径,dist为v0到其余各顶点的路径长度。 最多考虑n-2个中间点,5个顶点计算3次。 2 3 1 4 0 3 30 5 25 8 10 12 4 20 0 3 15 11 23 v0,v1 v0,v1,v3,v2 v0,v1, v3 v0,v1,v3,v4 0 1 2 3 4 dist path 9.6 拓扑排序 计划、施工过程、生产流程、程序流程等都是“工程”。除了很小的工程外,一般都把工程分为若干个叫做“活动”的子工程。完成了这些活动,这个工程就可以完成了。 例如,计算机专业学生的学习就是一个工程,每一门课程的学习就是整个工程的一些活动。其中一些课程要求有先修课程,另一些则不要求。这样在有的课程之间有先后关系,有的课程可以并行地学习。 C1 高等数学 C2 程序设计基础 C3 离散数学 C1, C2 C4 数据结构 C3, C2 C5 高级语言程序设计 C2 C6 编译方法 C5, C4 C7 操作系统 C4, C9 C8

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档