排序穷举搜索贪心课件法.pptxVIP

  1. 1、本文档共9页,可阅读全部内容。
  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文档。上传文档
查看更多

贪心法

概念若在求解一个问题时,能根据每次所得到的局部最优解,推导出全局最优或最优目标。那么,我们可以根据这个策略,每次得到局部最优解答,逐步而推导出问题解答。这种策略称为贪心法。

例1:计算数列和在N行M列的正整数矩阵中,要求从每行中选出1个数,使得选出的总共N个数的和最大。分析:要使总和最大,则每个数要尽可能大,自然应该选择每行中最大的那个数。练一练:编程求出从所给的数据矩阵每行取一个数能得到数和的最大值。文件格式如下:

第一行两个数N,M,以空格格开。以下N行,每行M个数,以空格格开。

例2:部分背包问题给定一个最大载重量为M公斤的卡车和N种食品,有食盐,白糖,大米等。已知第i种食品的最多拥有Wi公斤,其商品价值为Vi元/公斤,编程确定一个装货方案,使得装入卡车中的所有物品总价值最大。输入文件(truck.in)

第一行两个数M,N,为卡车载重和食品种数。第二行是N个数,第i个数表示第i种食品的单价第三行也是N个数,第i个数表示第i种食品的最大拥有量输出文件(truck.out)只有一行,为装入卡车的物品总价值。分析:要使得总价值最大,就应该首选那些单价较大的商品,即按商品价值Vi从大到小排序,直到满足卡车的最大载重(背包大小),当然还有一个条件就是每种食品最后只能拥有Wi公斤。

算法框架读入数据;按vi从大到小排序;i:=1;RepeatifM=0thenBreak;{卡车已装满}ifM=WithenBegin将第i种食品全部装入卡车;M:=M-Wi;EndelseBegin将M重量的食品i装入卡车;M:=0;End;i:=i+1;{选择下一种商品}Until(M=0)or(i=N);

0-1背包问题给定一个最大载重重量为M的卡车和N种动物。已知第i种动物的重量为Wi,其最大价值为Vi,M,Wi,Vi均为整数,编程确定一个装货方案,使得装入卡车的所有动物总价值最大。考虑这个问题与前面的部分背包问题有何不同?

方案一:选价值大的观察下面这一组数据:10532015151001010按照这个方案,只能得到价值为20,但是事实上还可以选择装入后两种动物得到价值30。

方案2:选择重量轻的观察下面一组数据:2525101020显然按照这种策略,只能装入第一种动物,价值为5,实际上真正的最佳方案结果是10。

方案3:选择价值重量比(Vi/Wi)最大的观察下面一组数据:100380100150405070按照这种策略,三种动物的Vi/Wi分别为2,2,2.14。当然,首先选150,此时卡车已不能装入其他动物,但是真正的最优解是180。

您可能关注的文档

文档评论(0)

153****4985 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档