[理学]计算理论与算法12年CH4贪心.ppt

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

1.7 对偶与范式 贪心法(贪婪法) 数钱 一出纳员支付一定数量的现金。假设他手 中有各种面值的纸币和硬币,要求他用最 少的货币数支付规定的现金。 例如,现有4种硬币:它们的面值分别为1 分、2分、5分和1角。要支付2角5分。 首先支付2个1角硬币,然后支付一个5分 硬币,这就是贪心策略。 贪心法不一定能产生正确的答案。 例如,若引进一个1角1分的硬币,设从如下集合{1,1,2,2,2,5,10,10,11,11}中数出25分,按贪心法,共4个硬币。但最优解仅为3个硬币。 这说明贪心法得到的解只是一个可行解。 货郎担(TSP)问题 设售货员要到五个城市去售货,最后再回到出发的城市。已知从一个城市到其他城市的费用,求总费用最少的路线 权为13 从不同结点出发: 1)结点a为起点: 2)结点b为起点: 3)结点c为起点: 4)结点d为起点: 而实际上图中最短哈密顿 回路的长度为12。 即abcda Huffman编码 某通讯系统只使用5种字符a、b、c、d、e,使用频率分别为0.1 , 0.14 , 0.2 , 0.26 , 0.3 ,利用二叉树设计不等长编码: 1)构造以 a、b、c、d、e为叶子的二叉树; 2)将该二叉树所有左分枝标记0,所有右 分枝标记1; 3)从根到叶子路径上标记作为叶子结点所 对应字符的编码; Huffman编码:贪心选择性质 《算法导论》P234以及教材P112 Huffman编码:贪心选择性质 背包问题 已知一个容量大小为M重量的背包和n种物品,物品i的重量为wi,假定物品i的一部分xi放入背包会得到vixi这么大的收益,这里,0≤xi≤1,vi0。采用怎样的装包方法才会使装入背包的物品总效益最大? 例:考虑以下情况下的背包问题 n=3, M=20 , (v1, v2, v3)=(25,24,15) (w1 , w2 , w3)=(18,15,10) n=3, M=20 , (v1, v2, v3) =(25,24,15) (w1 , w2 , w3)=(18,15,10) 1)按效益值非增次序将物品依次放入背包 (x1,x2,x3) Σwixi Σvixi 2)按物品重量的非降次序将物品依次放入背包 n=3, M=20 , (v1, v2, v3) =(25,24,15) (w1 , w2 , w3)=(18,15,10) 3)按vi/wi的非增次序将物品依次放入背包 (x1,x2,x3) Σwixi Σvixi void GreedyKnapsack(int n, float M, float v[], float w[], float x[]) { Sort(n, v, w); //使v1/w1≥v2/w2≥…≥vn/wn for(int i=1; i=n; i++) x[i]=0; float c=M; for(int i=1; i=n; i++) { if(w[i]c) break; x[i]=1; c-=w[i]; } if(i=n) x[i]=c/w[i]; } 算法的时间复杂性为 O(nlogn) 下面来证明使用此贪心算法所得到的贪 心解是一个最优解。证明的基本思想是: 把这个贪心解与任一个最优解相比较,如 果这两个解不同,就去找开始不同的第一 个xi,然后设法用贪心解的这个xi去代换最优解的那个xi,并证明在分量作了代换 之后其总效益与代换之前无任何损失。反复进行这种代换,直到新产生的最优解与贪心解完全一样,从而证明了贪心解是最优解。 定理:如果v1 /w1 ≥ v2/w2 ≥··· ≥ vn/wn , 则此算法对于给定的背包问题实例生成一 个最优解。 j是使xj ≠1的最小下标, k是使 yk ≠xk的最小下标。 j是使xj ≠1的最小下标, k是使 yk ≠xk的最小下标。 有限期的任务安排问题 用贪心法求解有限期的任务安排问题:假设只能在同一台机器上加工n个任务,每个任务i完成时间均是一个单位时间。又设每个任务i都有一个完成期限di0,当且仅当任务i在它的期限截止以前被完成时,任务i才能获得pi的效益,每个任务的期限从整个工序的开工开始计时,问应如何安排加工顺序,才能获得最大效益?n=6,(p1,p2,p3,p4,p5,p6)=(5,25,20,30,10,15),(d1,d2,d3,d4,d5,d6)=(1,5,2,3,3,2)

文档评论(0)

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

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

1亿VIP精品文档

相关文档