chapter 6 贪心法.pptVIP

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

* HeJing(2011) School of Software School of Software, YunNan University 任课教师:何婧 Email: hejing@ Chapter 6 Outline 算法思路 背包问题 单源最短路径问题 最小耗费生成树 Huffman编码 算法思路 任何问题,通常都有n个输入和一些约束条件。任何满足这些约束条件的子集可称为一个可能解。最佳解是满足目标函数达到最大值或最小值的一个可能解,而目标函数是问题中给定的。 如果该问题具有最优子结构性质时,可以用动态规划法求解。但有时会有更简单,更有效的算法。 贪心法:总是做出在当前看来最好的选择,并不从整体最优去考虑,因此,在用贪心法可以求得问题的整体最优解时,贪心法比动态规划法效率更高,但同时也使得贪心法不一定能够求得问题的整体最优解。 算法思路 例1:假设有4种硬币,它们的面值分别是二角五分、一角、五分和一分。现在要找给顾客六角三分钱。求解给顾客最少硬币数的找法。 贪心法求解:2个二角五分;1个一角;3个一分。这是一个最优解。 例2:假设硬币面值改为一分、五分和一角一分,要找给顾客找一角五分钱。求解给顾客最少硬币数的找法。 贪心法求解:1个一角一分;4个一分。显然这不是一个整体最优解,最优解是3个五分。 6.1 背包问题 背包问题的来源: 设某港口有n种不同的货物送往某地,每种货物的总重量是已知的,各种不同货物的运价也是确定的。某支船队承运部分货物,船队的总吨位是确定的。每种货物允许分批发送。考虑这支船队应装运哪些货物才能使它一次获得的运费最多? 6.1 背包问题 背包问题的一般描述: 给定n种不同的物品和一个背包。物品i的重量是Wi,背包容量为M。物品i的利润为Pi,假定物品i的一部分xi(0≤xi≤1),被放进背包里,就会得到利润Pixi。因为背包的容量为M,要求被装进的物品的总重量不超过M(若只考虑物重而不考虑其形状和体积)。问应怎样选择物品的种类和数量,使背包装满,而获得最大的利润。 6.1 背包问题 背包类问题还可形式化描述为: 给定M0,Wi0,Pi0,1≤i≤n,使之满足: 使: 达到最大。 满足0≤xi≤1的任何向量(x1,x2,…xn)都是一个可能解。这样的解显然有无穷多个。而最佳解必须是使式(6.2)的值达到最大的一个可能解。 (6.1) (6.2) 6.1 背包问题 例:给定n=3,M=40,(W1,W2,W3)=(28,15,24), (P1,P2,P3)=(35,25,24) 。以下是此例的五个可能解: (x1, x2, x3) ∑Wixi ∑pixi (1) (1, 4/5, 0 ) 40 55 (2) (1/2, 1, 1/3) 37 50.5 (3) (1/28,1, 1 ) 40 50.25 (4) (5/7, 1, 5/24) 40 55 (5) (25/28,1, 0 ) 40 56.25 按pi递减顺序装包(效益增长最快) 按Wi非递减顺序装包(背包容量消耗最慢) 按Pi/Wi(单位重量效益)递减顺序装包 总结 6.1 背包问题 对于这个简单的实例,因为它的可能解有无穷多个,所以用组合的方法求最佳解是行不通的。 考虑,如果 成立,最佳解将取xi=1。 因此,不妨假定 成立。 这就不可能取一切xi=1。在此前提下,任何最佳 解都必须将背包装满。同时,由于pi0,使利润 增加。这样得到的解比原来的解要好。 6.1 背包问题 人们可能会想到的贪心的策略: (1)按pi递减顺序装包(效益增长最快) 每次选择利润Pi最大的物品装包,使得目标函数增加最快。当放不下时,才选择一个适当的xi1,使物品装满,可求出每一种货物装入背包的比例X (x1, x2, x3) x1=1,CU=M-28=40-28=12, x2=CU/W2=12/15=4/5,CU=0, x3=0 所以,X=(1,4/5,0), 给定n=3,M=40,(W1,W2,W3)=(28,15,24), (P1,P2,P3)=(35,25,24) 6.1 背包问题 (2)按Wi非递减顺序装包(背包容量消耗最慢) x2=1,CU=M-15=40-15=25, x3=1,CU=25-24=1 x1=1/28 所以,X=(1/28,1,1)。 给定n=3,M=40,(W1,W2,W3)=(28,15,24), (P1,P2,P3)=(35,25,24) 6.1 背包问题 (3)按Pi/Wi(单位重量效益)递减顺序装包 每次选择利润与重量比最大的物品先装包。 先算出每

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档