算法第章贪心法.pptVIP

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法第章贪心法

* delay(f’,i)=s+tj+ti- di delya(f,j)?r delay(f, j)=s+ti+tj-dj (1) 交换 i, j 对其他客户的延迟时间没影响 (2) 交换后不增加 j 的延迟 (3) i 在 f’ 的延迟delay(f’,i)小于 j 在 f 的延迟 delay(f,j), 因此小于f 的最大延迟 r dj di ? L2i L1j f1(i)=s f1(j)=s+ti f1(j)+tj =s+ti+tj f2(j)=s f2(i)=s+tj f2(i)+ti=s+tj+ti j i i j 交换相邻逆序 (i, j)不影响最优性 * 讨论对于哪些输入贪心法能得到最优解:输入条件 讨论贪心法的解最坏情况下与最优解的误差(见第8章) 4.3 得不到最优解的处理方法 例4.4 找零钱问题 设有 n 种零钱, 重量分别为w1, w2, ... , wn, 价值分别为 v1=1, v2, ... , vn. 需要付的总钱数是 Y .不妨设币值和钱数都为 正整数. 问:如何付钱使得所付钱的总重最轻? 令选用第 i 种硬币的数目是 xi,i=1,2,…,n * 属于整数规划问题,动态规划算法可以得到最优解 设 Fk(y) 表示用前 k 种零钱,总钱数为 y 的最小重量 递推方程 动态规划算法 * 假设 使用前 k 种零钱,总钱数为 y 贪心法的总重为 Gk(y),则有如下递推方程 Greedy算法 * n=1, 2 贪心法得到最优解 n = 1 只有一种零钱,F1(y) = G1(y) , F2(y) = G2(y) n = 2, 使用价值大的钱越多(x2越大),得到的解越好 * 定理4.5 对每个正整数 k,假设对所有非负整数 y 有Gk(y)=Fk(y),那么 Gk+1(y)?Gk(y) ? Fk+1(y)=Gk+1(y) 条件(3)需 O(k) 时间验证 Gk+1(y)=Fk+1(y), 整个验证时间O(n2) n2得到最优解的判定条件 定理4.6 对每个正整数k,假设对所有非负整数 y 有Gk(y)=Fk(y) 且存在 p 和 ? 满足 vk+1=pvk-?, 其中0??vk,p为正整数, 则下面的命题等价: (1) Gk+1(y)=Fk+1(y) 对一切正整数y; (2) Gk+1(pvk)=Fk+1(pvk); (3) wk+1+Gk(?)?pwk. * 例4.5 v1=1, v2=5, v3=14, v4=18, wi=1, i=1, 2, 3, 4. 对一切 y 有G1(y)=F1(y), G2(y)=F2(y). 验证 G3(y) = F3(y) 实例 v4= pv3?? ? p=2, ?=10 w4+G3(?)=1+2=3 pw3=2×1=2 w4+G3(?) pw3 v3=pv2-? ? p=3, ?=1. w3+G2(?)=1+1 = 2 pw2=3×1=3 w3+G2(?)? p w2 结论:G3(y)=F3(y), 对于y=pv3=28,G4(y)F4(y) * 4.4 贪心法的典型应用 4.4.1 最优前缀码 二元前缀码 用0-1字符串作为代码表示字符,要求任何字符的代码都 不能作为其它字符代码的前缀 非前缀码的例子 a: 001, b: 00, c: 010, d: 01 解码的歧义,例如字符串 0100001 解码1: 01, 00, 001 d, b, a 解码2: 010, 00, 01 c, b, d 前缀码的二叉树及权值 前缀码: { 00000, 00001, 0001, 001, 01, 100, 101, 11} 频率: 00000: 5%, 000001: 5%, 0001: 10%, 001: 15%, 01: 25%, 100: 10%, 101: 10%, 11: 20% 平均的二进制位数 B=[(5+5)×5+10×4 +(15+10+10)×3 +(25+20)×2]/100

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档