- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章4.4 贪心方法学习要点理解贪心算法的基本思想、流程。着重讨论可以用贪心算法求解的问题的一般特征。掌握贪心算法的基本要素。 理解贪心算法与动态规划算法的差异通过应用范例学习贪心设计策略。 (1)活动安排问题; (2)背包问题及0/1背包问题; (3)最优装载问题; (4)多机调度问题; (5)带有期限的作业排序; (6)最优归并模式; (7)图论优化问题。找零钱问题 例1 有 5种硬币,面值:2角、1角、5分、2分和1分,要找出 3角6分钱。 方案一:拿出 1个2角、1个1角、1个5分和1个1分。 与其它找法相比,我们拿出的硬币的个数肯定是最少的。 我们使用了算法:首先选出一个面值不超过3角6分的最大硬币(2角),然后从3角6分中减去2角,剩下1角6分再选出一个不超过1角6分的最大硬币(另一个1角),如此做下去,直到找足3角6分。例2 3种硬币,面值:1角、9分、1分。找出 3角6分钱。 常识:4个9分最佳。例3:顶点可解释为城市,边上的代价可解释为两城市间的里程。在图中找一条经过所有结点一次的回路,并使里程的总和为最小。——货郎担问题。贪心法并不保证求得全局最优解。具体到每一步,贪心法作出的选择只是某种意义上的“局部最优选择”,最终结果一般不一定是最优的。 151原则:首先在图中选一条代价最小的边。为了选择下一条边,先要检查一下候选边与已选入的边之间是否满足以下两点: 1)不会有三条边(候选边及已入选边)与同一顶点相关联。 2)不会使入选边形成回路,除非入选边的个数已等于图中的顶点总数。 在满足以上两点的候选边中,挑选最短的边作为入选边。如此做下去,直到得到一个经过所有顶点的回路。7252332447114315234431最后求得的回路:1-2-5-3-4-1,代价是14 实际最小代价的回路:1-2-5-4-3-1,代价是10贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。对于某些问题,我们并不知道是否能用贪心法得出最优解。但一般使用贪心法会很快得到问题的“满意”解(即次优解)。如果一个问题的最优解只能用穷举法得到,那么用贪心法(或其它启发式方法)去寻找问题的次优解就是唯一可行的方法了。1. 一般方法(1) 问题的一般特征问题有n个输入,问题的解是由这n个输入的某个子集组成,这个子集必须满足某些事先给定的条件。n个输入一组约束条件: 子集必须满足的条件。可行解: 满足约束条件的子集。可行解有多个,不唯一。一个目标函数: 用来衡量可行解优劣的标准,一般以函数形式给出。最优解: 能够使目标函数取极值(极大或极小)的可行解。分类:根据描述问题约束条件和目标函数的数学模型的特性和问题的求解方法的不同,可分为:线性规划、整数规划、非线性规划、动态规划等。 ——最优化问题求解贪心方法:一种改进的分级的处理方法,可对满足上述特征的某些问题方便地求解。贪心方法的几个概念某一问题的n个输入A(1)A(2)…A(n-1)A(n)是A的一个子集满足一定的条件约束条件…Bk(1)Bk(2)…Bk(m)B1(1)B1(2)…B1(m)取极值该问题的一种解(可行解)最优解目标函数贪心法适合的问题:它有n个输入,而它的解就是由这n个输入,满足某些事先给定的约束条件的某个子集组成,而把满足约束条件的某个子集组成,而把满足约束条件的子集称为该问题的可行解。显然,可行解一般来说是不唯一的。那些使目标函数取得极值(极大或极小)的可行解,称为最优解。 贪心方法是求解这一类需求取最优解的问题的一种直接有效的方法。贪心方法是一种分级处理方法,它首先根据题意,选取一种量度标准。然后按这种量度标准对这n个输入排序,并按序一次输入一个量,如果这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。n个输入按某种量度标准排序贪心法的几个概念根据题意,选取一种量度标准,然后按量度标准对n个输入排序,按顺序一次输入一个量。如果这个输入和当前已构成在这种量度意义下的部分最优解加在一起不能产生一个可行解,则不把此输入加到这部分解中,这种能够得到某种量度意义下的最优解的分级处理方法就是贪心方法。 量度标准原问题的 n 个输入A’(j)A(1)A(2)…A(n)排序后的n个输入A’(1)A’(2)…A’(n)S(1)S(2)…量度标准意义下的部分最优解(2) 贪心算法的基本要素对于一个具体的问题,怎么知道是否可用贪心算法解此问题,以及能否得到问题的最优解呢?——这个问题很难给予肯定的回答。但是,从许多可以用贪心算法求解的问题中看到这类问题一般具有2个重要的性质:贪心选择性质和
原创力文档


文档评论(0)