pascal算法讲义第十讲.pdfVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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 人

文档评论(0)

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

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

1亿VIP精品文档

相关文档