收藏 分享(赏)

算法2013s-贪心算法I.ppt

上传人:kpmy5893 文档编号:7184307 上传时间:2019-05-09 格式:PPT 页数:31 大小:2.52MB
下载 相关 举报
算法2013s-贪心算法I.ppt_第1页
第1页 / 共31页
算法2013s-贪心算法I.ppt_第2页
第2页 / 共31页
算法2013s-贪心算法I.ppt_第3页
第3页 / 共31页
算法2013s-贪心算法I.ppt_第4页
第4页 / 共31页
算法2013s-贪心算法I.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、算法设计与分析,2019年5月9日,讲授内容:贪心算法I 教 师:胡学钢、吴共庆,纲要,图等表示 最小扩展树 最优子结构 贪婪选择 Prims 贪婪 MST算法,5/9/2019,算法设计与分析-贪心算法I,2,有向图 (digraph) G = (V, E) 是一个有序对的集合,包括 顶点V 的集合 (singular: vertex), 边的集合E V V .无向图G = (V, E) 中,边集合E包括无序 的顶点对.任何情况下 均有 |E| =O(V 2) . 另外,如果 G 是连通的, 那么 |E| |V| 1, 这意味着 lg |E| = (lgV).,图 (复习),5/9/2019

2、,算法设计与分析-贪心算法I,3,邻接矩阵表示法,一个图G = (V, E)的邻接矩阵, V = 1, 2, , n, 为矩阵 A1 . . n, 1 . . n,Ai, j =,1 if (i, j) E, 0 if (i, j) E.,5/9/2019,算法设计与分析-贪心算法I,4,顶点 v V 的邻接链表 Adjv是和顶点v相邻的顶点的链表。,Adj1 = 2, 3 Adj2 = 3 Adj3 = Adj4 = 3,对于无向图, |Adjv| = degree(v). 对于有向图, |Adjv| = out-degree(v).,握手定理:对于无向图vV = 2|E| 邻接表使用的存储

3、空间为 (V + E) 是一种 稀疏 表示 (对两种图均适用).,邻接链表表示法,5/9/2019,算法设计与分析-贪心算法I,5,输入: 一个连通的, 无向图 G = (V, E) 其加权函数 w : E . 为了简化,假设所有边的权各不相同. (CLRS 包括了通用的情况.),输出: 扩展树 T 连接所有顶点的树 其权最小:,最小扩展树,5/9/2019,算法设计与分析-贪心算法I,6,MST举例,5/9/2019,算法设计与分析-贪心算法I,7,MST T: (G的其他顶点没有画出),去掉边 (u, v) T. 然后,将T划分为两棵子树T1 和T2.,定理:子树 T1 是 G1 = (V

4、1, E1) 的MST, G1是由T1的顶点导出G的子图 。,V1 = T1的顶点,E1 = (x, y) E : x, y V1 . T2类似.,最优子结构,5/9/2019,算法设计与分析-贪心算法I,8,证明:粘贴拷贝:w(T) = w(u, v) + w(T1) + w(T2). 如果 T1 是 G1中比T1加权更小的扩展树,那么在G中T= (u, v)T1 T2 将是一棵比T加权更小的扩展树。,我们得到了重叠子问题了吗?是的. 很好,那么可以使用动态规划!是的,但是 MST 表现出更强特征,可以使用更加有效的算法。,证明最优子结构,5/9/2019,算法设计与分析-贪心算法I,9,定

5、理:令 T 为 G = (V, E) 的 MST, 并且令 A V。假设 (u, v) E是连接A和V A的最小加权边. 那么, (u, v) T.,贪婪选择特征 局部的最优选择 全局范围内也是最优的.,“贪婪”算法的特征,5/9/2019,算法设计与分析-贪心算法I,10,证明. 假设 (u, v) T. 粘贴和拷贝.,T:,(u, v) =连接A 和 V A的最小加权边, A V A,定理的证明,5/9/2019,算法设计与分析-贪心算法I,11,T:, A V A,考虑T中从u到v的唯一的简单路径.,证明. 假设 (u, v) T. 粘贴和拷贝.,(u, v) =连接A 和 V A的最小

6、加权边,证明. 假设 (u, v) T. 粘贴和拷贝.,(u, v) =连接A 和 V A的最小加权边,定理的证明,5/9/2019,算法设计与分析-贪心算法I,12,T:, A V A,将(u, v) 和这条路径上的第一条边交换,这个边连接A中的一个顶点,同时连接V A中的一个顶点。,考虑T中从u到v的唯一的简单路径.,证明. 假设 (u, v) T. 粘贴和拷贝.,(u, v) =连接A 和 V A的最小加权边,证明. 假设 (u, v) T. 粘贴和拷贝.,(u, v) =连接A 和 V A的最小加权边,定理的证明,5/9/2019,算法设计与分析-贪心算法I,13,T:, A V A,

7、将(u, v) 和这条路径上的第一条边交换,这个边连接A中的一个顶点,同时连接V A中的一个顶点。一个比T加权更小的扩展树产生了。,考虑T中从u到v的的一的简单路径.,证明. 假设 (u, v) T. 粘贴和拷贝.,(u, v) =连接A 和 V A的最小加权边,定理的证明,5/9/2019,算法设计与分析-贪心算法I,14,思路: 用优先队列 Q维护 V A。 将Q中的每个顶点按照其和A中的顶点连接的边的最小权进行排序。,Q V keyv for all v V keys 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q)for each

8、 v Adjudo if v Q and w(u, v) keyvthen keyv w(u, v) DECREASE-KEYv u 最后, (v, v) 组成了 MST.,Prim算法,5/9/2019,算法设计与分析-贪心算法I,15, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,16, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,17, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,18, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,19, A V A,Prim算

9、法举例,5/9/2019,算法设计与分析-贪心算法I,20, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,21, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,22, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,23, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,24, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,25, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,26, A V A,Prim算法举例,5/

10、9/2019,算法设计与分析-贪心算法I,27, A V A,Prim算法举例,5/9/2019,算法设计与分析-贪心算法I,28,(V) 总和,Q V keyv 对所有 v V keys 0 对某个任意的 s V,while Q ,|V| 次,degree(u) 次,do u EXTRACT-MIN(Q),for each v Adjudo if v Q and w(u, v) keyv,then,keyv w(u, v),v u,握手定理 隐含(E) 次 DECREASE-KEY.,时间 = (V)TEXTRACT-MIN + (E)TDECREASE-KEY,Prim算法分析,5/9/2019,算法设计与分析-贪心算法I,29,时间 = (V)TEXTRACT-MIN + (E)TDECREASE-KEY,Q TEXTRACT-MIN TDECREASE-KEY 总和,Prim 算法分析(续),5/9/2019,算法设计与分析-贪心算法I,30,Q/A?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报