第五章GreedyAlgorithm--精品PPT课件研究报告.ppt

第五章GreedyAlgorithm--精品PPT课件研究报告.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
b y x c T’ 交换y和c 构造T?? b c x y T’’ 往证T??是最优化前缀树. B(T)-B(T?) = = f(x)dT(x) + f(b)dT(b) - f(x)dT’(x) - f(b)dT’(b) = f(x)dT(x) + f(b)dT(b) - f(x)dT(b) - f(b)dT(x) = (f(b)-f(x))(dT(b)-dT(x)). ∵ f(b)?f(x), dT(b)?dT(x) (因为b的深度最大) ∴ B(T)-B(T’)?0, B(T)?B(T’) 同理可证B(T’)?B(T’’). 于是B(T)?B(T’’). 由于T是最优化的,所以B(T)?B(T’’). 于是, B(T)=B(T’’),T’’是C的最优化前缀编码树. 在T’’中, x和y具有相同长度编码, 且仅最后一位不同. 基本思想 循环地选择具有最低频率的两个结点,生成一棵子树,直至形成树 初始: f:5, e:9, c:12, b:13, d:16, a:45 算法的设计 Greedy算法(使用堆操作实现) Huffman(C,F) 1.??? n??C?; 2.??? Q?C; /* 用BUILD-HEAP建立堆 */ 3.??? FOR i?1 To n-1 Do 4.??? z?Allocate-Node( ); 5.??? x?left[z]?Extract-MIN(Q); /* 堆操作*/ 6.??? y?right[z]?Extract-MIN(Q); /* 堆操作*/ 7.??? f(z)?f(x)+f(y); 8.??? Insert(Q, z); /* 堆操作*/ 9. Return 设Q由一个堆实现 第2步用堆排序的BUILD-HEAP实现: O(n) 每个堆操作要求O(logn),循环n-1次: O(nlogn) T(n)=0(n)+0(nlogn) =0(nlogn) 复杂性分析 定理. Huffman算法产生一个优化前缀编码树 证. 由于引理1、引理2成立,而且Huffman算 法按照引理2的Greedy选择性确定的规 则进行局部优化选择,所以Huffman算 法产生一个优化前缀编码树。 正确性证明 5.4 Minimal spanning tree problem 问题的定义 优化解结构分析 Greedy选择性 Kruskal算法 算法复杂性 算法正确性证明 问题的定义 生成树 设G=(V, E)是一个边加权无向连通图. G的生成 树是无向树S=(V, T), T?E, 以下用T表示S. 如果 W: E?{实数} 是G的权函数, T的权值定 义为W(T)=?(u,v)?TW(u,v). 最小生成树 G的最小生成树是W(T)最小的G之生成树. 问题的定义 输入: 无向连通图G=(V, E), 权函数W 输出: G的最小生成树 实例 B C A E D 70 60 80 50 90 75 300 200 B C A E D 70 50 90 300 B C A E D 70 80 50 300 B C A E D 70 60 80 50 算法思想 B C A E D 70 60 80 50 90 75 300 200 B C A E D 70 60 80 50 定理1. 设T是G的最小生成树. 如果T包含子树T1和 T2, T1是G的子连通图G1的生成树,T2是G 的子连通图G2的生成树,则T1是G1的最小 生成树,T2是G2的最小生成树. 证. 优化解的结构分析 u v T1 T2 T Greedy选择性 一般算法 初始: A为空集合 反复扩展边集合A, 直至A成为最小生成树 循环不变命题 每次循环算法要保持下边循环不变命题为真 “在每次循环前,A必是某个最小生成树的子集” 在每次循环中, 如果A?{(u, v)}是某个最小生成树 的子集,则称边(u, v)是安全边 一般算法的定义 Generic-MST(G, W) 1. A=?; /* 不变命题真 */ While A 不是生成树 Do /* 不变命题真 */ 寻找一个安全边(u, v); A=A?{ (u, v) }; Return A /*

文档评论(0)

186****7785 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档