- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪心方法的基本思想
贪心算法专题 在现实生活中,我们经常为下意识的做贪心的选择,例如在购买商品时候总是寻求物美价廉的物品,在质量相同情况下,价格低的为首选。 在众多的计算机题解策略中,贪心算法可以算得上是最接近人民日常思维的一中解题策略。 贪心算法是指从问题的初始化状态出发,通过若干次的贪心选择而得出最优解或较优解题方法。事实上,从“贪心”一词就可以看出,贪心算法总是作出在当前看来最优的选择,也就是说贪心算法并不是从整体上加以考虑,他所作出的选择只是在某种意义上的局部最优解。 贪心方法的基本思想 一、贪心是一种解题策略,也是一种解题思想 二、使用贪心方法需要注意局部最优与全局最优的关系,选择当前状态的局部最优并不一定能推导出问题的全局最优 三、利用贪心策略解题,需要解决两个问题: 1、该题是否适合于用贪心策略求解 2、如何选择贪心标准,以得到问题的最优/较优解 从问题的某一初始解出发;while 能朝给定总目标前进一步 do 求出可行解的一个解元素; 由所有解元素组合成问题的一个可行解; 引例: 在N行M列的正整数矩阵中,要求从每行中选出1个数,使得选出的总共N个数的和最大。 分析:要使总和最大,则每个数要尽可能大,自然应该选每行中最大的那个数。因此,我们设计出如下算法: 读入N, M,矩阵数据; Total := 0; for I := 1 to N do begin {对N行进行选择} 选择第I行最大的数,记为K; Total := Total + K; end; 输出最大总和Total; 贪心策略求解的问题具有的特点: 可通过局部的贪心选择来达到问题的全局最优解。运用贪心策略解题,一般来说需要一步步的进行多次的贪心选择。在经过一次贪心选择之后,原问题将变成一个相似的,但规模更小的问题,而后的每一步都是当前看似最佳的选择,且每一个选择都仅做一次。 原问题的最优解包含子问题的最优解,即问题具有最优子结构的性质。但并不是所有具有最优子结构的问题都可以用贪心策略求解。因为贪心往往是盲目的,需要使用更理性的方法——动态规划。 例1 部分背包问题 给定一个最大载重量为M的卡车和N种食品,有食盐,白糖,大米等。已知第i种食品的最多拥有Wi公斤,其商品价值为Vi元/公斤,编程确定一个装货方案,使得装入卡车中的所有物品总价值最大。 分析: 因为每一个物品都可以分割成单位块,单位块的利益越大显然总收益越大,所以它局部最优满足全局最优,可以用贪心法解答,方法如下:先将单位块收益按从大到小进行排列,然后用循环从单位块收益最大的取起,直到不能取为止便得到了最优解。 算 法 问题初始化; {读入数据} 按Vi从大到小将商品排序; I := 1; repeat if M = 0 then Break; {如果卡车满载则跳出循环} M := M - Wi; if M = 0 then 将第I种商品全部装入卡车 else 将(M + Wi)重量的物品I装入卡车; I := I + 1; {选择下一种商品} until (M = 0) OR (I = N) 0,1背包问题 给定一个最大载重量为M的卡车和N种动物。已知第i种动物的重量为Wi,其最大价值为Vi,设定M,Wi,Vi均为整数,编程确定一个装货方案,使得装入卡车中的所有动物总价值最大。 算法? 按贪心法,有反例. 设N=3,卡车最大载重量是100,三种动物A、B、C的重量分别是40,50,70,其对应的总价值分别是80、100、150。 例2 排队打水问题 有N个人排队到R个水龙头去打水,他们装满水桶的时间为T1,T2,…,Tn为整数且各不相等,应如何安排他们的打水顺序才能使他们花费的时间最少? 分 析 由于排队时,越靠前面的计算的次数越多,显然越小的排在越前面得出的结果越小(可以用数学方法简单证明,这里就不再赘述),所以这道题可以用贪心法解答,基本步骤: 将输入的时间按从小到大排序; 将排序后的时间按顺序依次放入每个水龙头的队列中; 统计,输出答案。 * 康杰中学 贪心 韩克武 1 实现该算法的过程: 在遇到具体问题时,许多选手往往分不清哪些题该用贪心策略求解,哪些题该用动态规划法求解。在此,我们对两种解题策略进行比较。 散装 试题描述 键盘输入一个高精度的正整数n(n=240位),去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。(试题背景 此题出自NOI94) 输入: n s 输出:
您可能关注的文档
最近下载
- 人教版二年级数学期末试卷.docx VIP
- 地铁疏散平台施工方案.docx VIP
- 2021中国智能家居生态发展白皮书.pptx VIP
- 中职人工智能技术应用专业人才培养模式的探索与实践报告.docx VIP
- 2025广西公需科目考试答案(3套,涵盖95_试题)一区两地一园一通道建设;人工智能时代的机遇与挑战.docx VIP
- 智能家居生态发展白皮书.pptx VIP
- 2018-2024年海峡杯数学竞赛真题及答案(三年级).pdf VIP
- 铁路线路防护栅栏(通线〔2023〕8001)下.docx VIP
- 范德堡法.doc VIP
- 2023-2024学年江苏省高中语文高三期末通关考试题详细答案和解析.docx VIP
文档评论(0)