- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计基础12_1_贪心法讲述
12.1.3贪心法解题的一般步骤 上面三个任务所用的算法由一个共同点,就是在求最优解的过程中,每一步都采用一种局部最优的策略,把问题范围和规模逐渐缩小,最后把每一步的结果合并起来得到一个全局的最优解。 在例12.1中,每次选取删除的数字都是第一个递减区间的首位数字,也就是当前的删除可以保证在当前删除位数要求下的最优解,同时使剩下的数字串逐渐接近最后要求的目标最优解。 12.1.3贪心法解题的一般步骤 在例12.2中,每一次选取的时间都是满足条件的最早结束事件,向问题的解答前进一步,同时给剩余事件的选取留下了最多的不重叠时间;最后得到的事件序列,就是每一次选取的事件集合。 在例12.3中,每一步都将覆盖最大间隔的线段断开,使得线段总长度减少,同时使线段数目更接近最大数目限制;最后得到的最小线段总长度,其实是计算过程唯一确定的一种线段覆盖方式得到的。 归纳以上三个任务的求解过程,可以总结出运用贪心法解题的一般步骤是: 从问题的某个初始解出发; 采用循环语句,当可以向求解目标前进一步时,根据局部最优策略,得到一个部分解,缩小问题的范围或规模; 将所有部分解综合起来,得到问题的最终解。 第12章 贪心法与动态规划 12.1 贪 心 法12.2 动 态 规 划 问题:假设有面值为5元、2元、1元、5角、2角、1角的货币,需要找给顾客4元6角现金,为使付出的货币的数量最少,应如何找零? 找零问题 解决方法: 首先选出1张面值不超过4元6角的最大面值的货币,即2元; 再选出1张面值不超过2元6角的最大面值的货币,即2元; 再选出1张面值不超过6角的最大面值的货币,即5角; 再选出1张面值不超过1角的最大面值的货币,即1角; 总共付出4张货币。 找零问题 这就是贪心选择! 找零问题中的贪心 在付款问题每一步的贪心选择中,在不超过应付款金额的条件下,只选择面值最大的货币,而不去考虑在后面看来这种选择是否合理,而且它还不会改变决定:一旦选出了一张货币,就永远选定。 付款问题的贪心选择策略是尽可能使付出的货币最快地满足支付要求,其目的是使付出的货币张数最慢地增加,这正体现了贪心法的设计思想。 贪心法的思想 在实际生活中,经常会遇到类似求一个问题的可行解和最优解的要求,这就是所谓的最优化问题。每个最优化问题都包含一组限制条件和一个优化函数,符合限制条件的问题求解方案称为可行解,使优化函数取得最佳值的可行解称为最优解。 贪心法的思想 贪心法是求解这类问题最优解的一种常用算法: 它从问题的某个初始解出发,采用逐步构造最优解的方法向给定的目标推进。 在每个局部阶段,都做出一个看上去最优的决策(即某种意义下的、或某个标准下的局部最优解),并期望通过每次所做的的局部最优选择产生出一个全局最优解。 做出贪心决策的依据称为贪心准则(策略),决策一旦做出,就不可再更改。 贪心与递推的不同之处:贪心推进的每一步不是依据某一固定的递推式,而是做一个当时看似最佳的贪心选择(操作),不断地将问题实例归纳为更小的相似问题。贪心准则是正确解决贪心问题的关键。 贪心法的基本思路: (1)建立数学模型来描述问题; (2)把求解的问题分成若干个子问题; (3)对每一子问题求解,得到子问题的局部最优解。 (4)把子问题的解局部最优解合成原来解问题的一个解。 【例12.1】删数问题 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。 比如:n=178543,s=4 则输出 13 ,表示正整数178543,删除4位数字后得到的最小值是 13。 (1)由于给定的正整数有效位数是100位,用一般的整数类型(包括长整数)无法表示,可以考虑用字符串来存储正整数。 (2)如何决定哪s位数字被删除呢?被删除的是否是最大的s个数字呢?为了尽可能逼近目标,采用贪心法来解决问题, 选取的贪心策略为: ①把对s个数字的删除,看成是一个逐步实现的过程,每一步删除一个数字,用s步完成对s个数字的删除。 ②每一步总是选择一个使剩下的数最小的数字完成删除,也就是按照从高位到低位的顺序进行搜索,如果各位数字式递增的,则删除最后一位数字;否则,删除第一个递减区间的首位数字。这样选择一位数字并删除后,便得到一个新的数字串。 ③以后每一步回到上一步完成删除之后的数字串的串首,按照上述规则再删除下一个数字。执行s次后,便删除了s位数字,剩余的数字串便是问题的解。 例如:n=178543,s=4时的删除过程为: 第一步:n=178543,第一个递减区间为8543,删除其首位数字8; 第二步:n=17543,第一个递减区间为7543,删除其首位数字7; 第三步:n=154
您可能关注的文档
- 第3章热力学第二、三定律第5节第二定律的本质和熵的统计意义详解.ppt
- 移动学习软件现状讲述.docx
- 第3章任务管理详解.ppt
- 移动式卸料机除尘系统设计及应用讲述.pptx
- 第3章生命活动的调节同步练习详解.doc
- 移动基站传输管线工程管理规范要求讲述.ppt
- 移动互联网发展讲述.pptx
- 移动和阅读竞品讲述.ppt
- 第9讲对象赋值静态成员友元类模板详解.ppt
- 移动智能巡检信息系统讲述.doc
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)