数据分析与算法设计7-图最小生成树、最短路径_第1页
数据分析与算法设计7-图最小生成树、最短路径_第2页
数据分析与算法设计7-图最小生成树、最短路径_第3页
数据分析与算法设计7-图最小生成树、最短路径_第4页
数据分析与算法设计7-图最小生成树、最短路径_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据分析与算法设计7:图(最小生成树、最短路径)信电学院 王梁昊 副研究员(645840)浙江大学玉泉校区信电楼505室主要内容最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图传递闭包Warshall算法(动态规划,8.4.1)完全最短路径Floyd算法(动态规划,8.4.2)主要内容最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图传递闭包Warshall算法(动态规划,

2、8.4.1)完全最短路径Floyd算法(动态规划,8.4.2)最小生成树最小生成树(minimum spanning tree)Prim算法Prim算法Prim算法Prim算法的正确性证明归纳法反证法Prim算法的效率取决于表示图的数据结构、表示V-VT的优先队列的数据结构图:权重矩阵优先队列:无序数组运行时间属于 (|V|2)图:邻接链表优先队列:最小堆运行时间属于 (|V|-1+|E|)O(log|V|)O(|E|log|V|)P.22主要内容最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图

3、传递闭包Warshall算法(动态规划,8.4.1)完全最短路径Floyd算法(动态规划,8.4.2)Kruskal算法Kruskal算法Kruskal算法看上去似乎很简单,复杂度似乎低于Prim算法但每次迭代时,必须要检查新边加入后是否会形成回路Kruskal算法换一个角度解释Kruskal算法(从森林的角度):初始时,有|V|个树构成的森林;最终的森林由单独的树构成;每次迭代中新边的加入等价于从图中找到一条边,当顶点分别属于不同的树时,选取该边,使两棵树变为一棵更大的树。两个顶点是否属于同棵树?union-find(并查)算法不相交子集和并查算法不相交子集和并查算法实现这种数据结构的两种做

4、法快速查找(quick find)其查找操作的时间效率是最优的快速求并(quick union)其求并集操作的时间效率是最优的快速查找(quick find)makeset(x)(1) - (n)find(x)(1)union(x)(n2)? O(nlogn)快速求并(quick union)(1) - (n)makeset(x)find(x)(n)?O(logn)union(x)(1)主要内容最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图传递闭包Warshall算法(动态规划,8.4.1)完

5、全最短路径Floyd算法(动态规划,8.4.2)单源最短路径问题单源最短路径问题(single-source shortest- paths problem) 求源到所有其他顶点之间的一系列最短路径 注意:不是从一个起点出发访问所有其他顶点的单条最短路径(旅行商问题)Dijkstra算法不含负权重的图Dijkstra算法主要内容最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图传递闭包Warshall算法(动态规划,8.4.1)完全最短路径Floyd算法(动态规划,8.4.2)有向图的传递闭包深度

6、优先查找/广度优先查找Warshall算法Warshall算法通过一系列n阶布尔矩阵来构造传递闭包路径的每个中间顶点的编号不大于k任何中的元素都可以通过计算得到Warshall算法主要内容最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图传递闭包Warshall算法(动态规划,8.4.1)完全最短路径Floyd算法(动态规划,8.4.2)完全最短路径(all-pairs shortestpaths)完全最短路径问题加权连通图(无向或有向)找到从每个顶点到其他所有顶点之间的距离(最短路径的长度)距离矩阵(distance matrix)Floyd算法个通过一系列n阶矩阵计算距离矩阵路径的每个中间顶点的编号不大于k每一中的任何元素可以通过计算得到Floyd算法内容回顾最小生成树Prim算法(贪婪技术,9.1)最小生成树Kruskal算法(贪婪技术,9.2)单源最短路径Dijkstra算法(贪婪技术,9.3)有向图传递闭包Warshall算法(动态规划,8.4.1)完全最短路径Floyd算法(动态规划,8.4.2)Prim算法Kruska

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论