算法设计与分析耿国华第四章.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文档。上传文档
查看更多
算法设计与分析耿国华第四章

第四章 贪心算法 4.1 贪心算法基础 4.1.1 贪心算法的基本思想 贪心算法是从问题的某一个初始解出发,向给定的目标推进。但它与普通递推求解过程不同的是,其推动的每一步不是依据某一固定的递推式,而是做一个当时看似最佳的贪心选择,不断地将问题实例归纳为更小的相似的子问题,并期望通过所做的局部最优选择产生出一个全局最优解。 4.1.2 贪心算法的基本要素 一个贪心算法求解的问题必须具备以下两要素: 1. 贪心选择性质 所谓贪心选择性质是指应用同一规则,将原问题变为一个相似的、但规模更小的子问题、而后的每一步都是当前看似最佳的选择。这种选择依赖于已做出的选择,但不依赖于未做出的选择。 4.1.2 贪心算法的基本要素 表4-1 动态规划算法和贪心算法的区别 4.1.3 贪心算法适合的问题 贪心算法通常用来解决具有最大值或最小值的优化问题。它是从某一个初始状态出发,根据当前局部而非全局的最优决策,以满足约束方程为条件,以使得目标函数的值增加最快或最慢为准则,选择一个最快地达到要求的输入元素,以便尽快地构成问题的可行解。 4.1.4 贪心算法的基本步骤 步骤: (1) 选定合适的贪心选择的标准; (2) 证明在此标准下该问题具有贪心选择性质; (3) 证明该问题具有最优子结构性质; (4) 根据贪心选择的标准,写出贪心选择的算法,求得最优解。 4.1.5 贪心算法的例子 例4-1:n=3,M=20,p=(25,24,15),w= (18,15,10)。假设物品可分,故有可行解无数个,其中的四个可行解如表4-2所示。 表4-2 部分背包问题的四个可行解 4.1.5 贪心算法的例子 (1)”效益”优先,使每装入一件物品就使背包获得最大可能的效益值增量. 按物品收益从大到小排序0,1,2 解为: (x0,x1,x2)=(1, 2/15, 0) 收益: 25+24*2/15=28.2 此方法解非最优解。原因:只考虑当前收益最大,而背包可用容量消耗过快. (2)选重量作为量度,使背包容量尽可能慢地被消耗. 按物品重量从小到大排序:2,1,0; 解为: (x0,x1,x2)=(0, 2/3, 1) 收益: 15+24*2/3=31 此方法解非最优解。原因:虽然容量消 耗慢,但效益没有很快的增加. 4.1.5 贪心算法的例子 (3)选利润/重量为量度,使每一次装入的物品应使它占用的每一单位容量获得当前最大的单位效益。 按物品的pi/wi重量从大到小排序:1,2,0; 解为: (x0,x1,x2)=(0, 1, 1/2) 收益: 24+15/2=31.5 此方法解为最优解。可见,可以把pi/wi 作为背包问题的最优量度标准。 4.1.5 贪心算法的例子 ——设计与实现 算法4.1 用贪心算法求解部分背包问题 void GreedyKnapsack(float *p, float *w, float M, int n, float* x) {//前置条件:w[i]已按p[i]/w[i]的非增次序排列 float u=M; //u为背包剩余载重量,初始时为m for (int i=0; in; i++) x[i]=0; //对解向量x初始化 for (i=0; in; i++) //按最优量度标准选择解的分量 { if (w[i]u) break; x[i]=1.0; u=u?w[i]; } if (in) x[i]=u/w[i]; } 4.1.5 贪心算法的例子 ——算法分析 1)贪心选择性质

文档评论(0)

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

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

1亿VIP精品文档

相关文档