- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第十讲
第十讲 贪心算法
一、 贪心初步
贪心法是一种解决最优问题的策略。它是从问题的初始解出发,
按照当前最佳的选择,把问题归纳为更小的相似的子问题,并使子问
题最优,再由子问题来推导出全局最优解。
使用贪心方法需要注意局部最优与全局最优的关系,选择当前状
态的局部最优并不一定能推导出问题的全局最优。
【引例】在一个 N×M 的方格阵中,每一格子赋予一个数值,规定每
次移动时只能向上或向右。现试找出一条路径,使其从左下角至右上
角所经过的数字之和最大。
我们以2×3 的矩阵为例:
若按贪心策略求解,所得路径为:1→3→4→6;
若按动态规划求解,所得路径为:1→2→10→6 。
动态规划算法会在2.3.4 详细介绍。
二、 贪心策略的特点
1. 贪心选择性质:算法中每一步选择都是当前看似最佳的选择,这种
选择依赖于已做出的选择,但不依赖于未做的选择。
第 1 页 ,共 24 页
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第十讲
2.最优子结构性质:算法中每一次都取得了最优解(即局部最优解),
要保证最后的结果最优,则必须满足全局最优解包含局部最优解。
但并不是所有具有最优子结构的问题都可以用贪心策略求解。因为贪
心往往是盲目的,需要使用更理性的方法——动态规划 (例如“0-1 背
包问题”与“部分背包问题” )同时有些具有最优子结构的问题只能用
贪心而不能用动态规划解。
问题1:部分背包问题
给定一个最大载重量为M 的卡车和N 种食品,有食盐,白糖,大米
等。已知第i 种食品的最多拥有Wi 公斤,其商品价值为Vi 元/公斤,
编程确定一个装货方案,使得装入卡车中的所有物品总价值最大。
【分析】因为每一个物品都可以分割成单位块,单位块的利益越大,
显然总收益越大,所以它局部最优满足全局最优,可以用贪心法解答。
方法如下:先将单位块收益按从大到小进行排列,然后用循环从单位
块收益最大的取起,直到不能取为止便得到了最优解。
问题2:0/1 背包问题
给定一个最大载重量为 M 的卡车和N 种动物。已知第 i 种动物的重
量为Wi ,其最大价值为Vi ,设定M,Wi ,Vi 均为整数,编程确定一
个装货方案,使得装入卡车中的所有动物总价值最大。
【分析】按贪心法:每次选价格最大的装载。很明显有反例:设N=3,
卡车最大载重量是 100,三种动物 A 、B、C 的重量分别是40,50,70,其
第 2 页 ,共 24 页
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第十讲
对应的总价值分别是80、100、150。
三、 贪心策略与其他算法的区别
1.贪心与递推:与递推不同的是,贪心法中推进的每一步不是依据某
一固定的递推式,而是当前看似最佳的贪心决策,不断的将问题归纳
为更加小的相似的子问题。所以归纳、分析、选择正确合适的贪心策
略,是正确解决贪心问题的关键。
2.贪心与动态规划:与动态规划不同的是,贪心是鼠目寸光;动态规
划是统揽全局。
四、 贪心策略的证明
贪心策略能否适用,关键看在贪心的策略下,局部的最优解能否得到
全局最优解。要看是否得到最优解,就要看贪心选择特征的证明了。
常用的证明法有反证法和构造法。
1.反证法:顾名思义,对于当前的贪心策略,否定当前的选择,看看
第 3 页 ,共 24 页
百度Pascal 吧公开培训教材-Pascal 培训课程算法讲义-第十讲
是否能得到最优解,如果不能得到,说明当前贪心策略是正确的;否
则,当前策略不正确,不可用。
2.构造法:对于题目给出的问题,用贪心策略时,把问题构造成已知
的算法或数据结构,以此证明贪心策略是正确的。
五、经典贪心模型
1)最优装载问题:给n 个物体,第i 个物体重量为wi ,选择尽可能
量多的物体,使总重量不超过C 。
2 )部分背包问题:有n 个物体,第i 个物体重量为wi ,价值为vi ,
在总重量不超过C 的情况下让总价值尽量高。
3 )乘船问题:有n 个人,第i 个人重量为wi ,每艘船的载重量为C,
最多乘2 人
您可能关注的文档
最近下载
- 地铁物业管理培训课件.pptx
- 工程数学(本)形成性考核作业4.doc
- GB T 34520.7-2017 连续碳化硅纤维测试方法 第7部分:高温强度保留率 标准.pdf
- 自编教材审核表(模板).pdf
- 一例慢性阻塞性肺疾病急性加重期合并II型呼吸衰竭患者的个案护理PPT.pptx
- [大庆]黑龙江大庆市民政局所属事业单位选调事业编制工作人员笔试上岸试题历年高频考点难、易错点附带答案详解.docx VIP
- ISO9001 14001 ISO45001检查表审核方法全套.docx VIP
- 增光膜规格说明书.pdf
- 人教版数学四年级第一单元教材解读及集体备课课件.pptx VIP
- 2024 离婚协议书 离婚协议(打印版).docx
文档评论(0)