




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用动态规划法和贪心法解决背包问题 算法与语言 用动态规划法和贪心法解决背包问题 唐 敏,刘冠蓉,邓国强 (武汉理工大学计算机科学与技术学院,湖北武汉; 武汉理工大学理学院,湖北武汉) 摘要:背包问题和背包问题是一类经典的困难问题。采用动态规划法和贪心法对该问题进行求 解,分析和比较这两种算法在求解同一问题时的差异。 关键词:背包问题;背包问题;动态规划法;贪心法: : :() 背包问题与背包问题 背包问题 给定个重量为(,)价值为(,)的物品和一个承重量为的背包,求这些物品中最有价值的一个子集,并且要能够装到背包中。 在选择装入背包的物品时,对每种物品只有两种选择,即装入背包或不装入背包。不能将物品装入背包多次,也不能只装入部分的物品。在这里假设所有的重量和背包的承重量都是正整数。 选择物品装入背包时,可以选择物品的一部分,而不一定要全部装入背包。 ,所以不论生成独立子集的效率有多高, 穷举查找都会导致一个-()的算法。即对于任何输入都非常缺乏效率的算法。这就是所谓的困难问题,目前没有已知的,效率可以用多项式来表示的算法。 表穷举过程和实例的解子 集 总重量 总价值 背包问题的形式化描述 给定,要求找出元向量(,), 使得%,而且%达 到最大。 背包问题的一个小规模的实 例 表 物品 重量 价值 , 大价值为美元。 不可行 背包问题的形式化描述 给定,要求找出元向量(,), 承重量 美元美元美元美元 使得%,而且&达 到最大。因此,背包问题是一个特殊的整数规划问题。 考虑下面数据给出的实例: 在背包问题中,采用穷举查找需要考虑给定的个物品集合的所有子集,为了找出可行的子集(也就是说,总重量不超过背包承重能力的子集)。要计算出每个子集的总重量,然后在它们中间找到价值最大的子集。 因为一个元素集合的子集数量是 & ( *)*+ 不可行不可行不可行 & , 背包问题最优解为物品,物品,物品,最 与背包问题类似,所不同的是在 作者简介:唐敏(),女,广西桂林人,武汉理工大学助教、硕士,研究方向为智能计算;刘冠蓉,男,武汉理工大学教授,主要研究领域为智能计算、数 据挖掘;邓国强(),男,武汉理工大学助教、硕士,研究方向为演化计算。 月号 算法与语言 动态规划法 表动态规划算法解背包问题实例次大,且能够装入背包,此时背包已满。这时得到的总价值为,它是一个次优解。因此,按物品效益值的非递增次序装包不一定能得到最优解。 为什么每一步使目标函数值获得当前最大增值的贪心策略却没有获得最优解呢?原因在于:虽然每一步获得了效益值的极大增长,但背包容量消耗太快。 ()以容量为度量标准。物品(承重 动态规划法的基本思想 动态规划法是一种强有力的算法设计技术,它被广泛用于求解组合最优化问题。这种技术采用自底向上的方式递推求值,将待求解的问题分解成若干个子问题,先求解子问题,并把子问题的解存储起来以便以后用来计算所需要求的解。 递推公式 为了设计一种动态规划算法,需要推导出一个递推关系,用较小实例的解的形式来表示背包问题的实例的解。 解决背包问题的递推式如下: 优子集的一部分。因为,物品是最优选择的一部分,这个最优子集用元素,来指定余下的组成部分。同样道理,因为,物品是最优解物品,物品,物品的最后一个部分。 该算法的时间效率和空间效率都属于!()。用来求最优解的具体组成的 () 时间效率属于()。 量,价值美元)承重量最小的首先装包,剩下个承重量,再装入物品(承重量,价值美元),此时剩下个承重量,装入物品(承重量,价值美元),背包已满,此时得到的总价值为美元。此时得到了该问题的最优解。 ()贪心法小结。从用贪心法解决背包问题可以看出,采用不同的贪心策略对求解问题的结果也有所不同。所以,当我们在使用贪心法时,必须证明该算法可以导致问题的最优解。 和在动态规划算法的情况中一样,贪心法通常用来求解最优化问题,即量的最大化或最小化。然而,贪心法不像动态规划算法,它通常包含一个用以寻找局部最优解的迭代过程。在某些实例中,这些局部最优解转变成了全局最优解,而在另外一些情况下,则无法找到最优解。 贪心法在少量计算的基础上作出了正确猜想,而不急于考虑以后的情况,这样,它一步步地来构筑解,每一步均是建立在局部最优解的基础之上,而每一步又都扩大了部分解的规模,做出的选择产生最大效益而又保持可行性。因为每一步的工作很少且基于少量信息,所得算法特别有效。 , ,如果 ,如果 定义初始条件:当时时,;当时, () 我们的目标是求,即一个给定 贪心法 贪心法的基本思想 贪心法总是作出在当前看来最好的选择,也就是说贪心法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。虽然贪心法不能对所有的问题都得到整体最优解,但对于许多问题它能产生整体最优解。在一些情况下,即使贪心法不能得到整体最优解,其最终结果却是最优解的很好近似。 贪心法是一种最直接的设计技术,它能应用于求解多种问题。这类问题的一般特征是有个输入以及一组约束条件,满足约束条件的任一输入的子集称为可行解,其可行解由这个输入的某个子集组成。显然,满足约束条件的子集可能不止一个,因此,可行解是不唯一的。为了衡量可行解的优劣,事先也给出一定的标准。 物品中能够放进承重量为的背包的子集的最大总价值,以及最优子集本身。 动态规划表的设计 当,时,为了计算第行第列的单元格,我们拿前一行同一列的单元格与加上前一行左边列的单元格的和作比较,计算出两者的较大值。这个表格可以一行一行地填,也可以一列一列地填。 表动态规划表 动态规划法和贪心法的分析 动态规划法的设计原理 考虑表给出的实例,表给出了用公式()()填写的动态规划表。 这些标准一般以函数的形式给出,这些函数称为目标函数。可使目标函数达到极值(极大或者极小)的可行解,称为最优解。对于其中的某些问题,可用贪心法求解。 动态规划是基于递归的技术,递归算法通常拥有十分简单的归纳证明。算法设计中一个十分重要的原理,称为最优化原理:给定一个最优的决策序列,每个子系列自身必须是最优的决策序列。 在动态规划算法中,每步所做出的选择往往依赖于相关子问题的解。因而,只有在解出相关子问题后,才能作出选择。 动态规划法通常以自底向上的方式 最优解和最优子集 因此,最大总价值为,美元。可以通过回溯这个表格单元的计算过程来求得最优子集的组成元素。因为, 用贪心法解背包问题(仍引用表 的实例) ()以目标函数为度量标准进行装包。物品(承重量,价值美元)效益最大的首先装包,剩下个承重量,再装入物品(承重量,价值美元)效益 ,物品以及填满背包余下个单位承重量的一个最优子集都包括 在最优解中。而后者是由元素,来表示的。因为,物品不是最 算法与语言 解各个子问题。质。问题的最优子结构性质是该问题可用入背包。依此策略一直进行下去,直到背贪心法的基本要素 动态规划算法或贪心法求解的关键特征。 包装满为止。 贪心选择性质 动态规划法与贪心法的差异 对于背包问题,贪心选择之所以所谓贪心选择性质是指所求问题的 动态规划法和贪心法都要求问题具不能得到最优解是因为在这种情况下,它整体最优解可以通过一系列局部最优的有最优子结构性质,这是两类算法的一个无法保证最终能将背包装满,部分闲置的选择,即贪心选择来达到。这是贪心法可共同点。但是,对于具有最优子结构的问背包空间使每单位背包空间的价值降低行的第一个基本要素,也是贪心法与动态题应该选用动态规划法还是贪心法求解?了。事实上,在考虑背包问题时,应比规划算法的主要区别。 是否能用动态规划算法求解的问题也能较选择该物品和不选择该物品所导致的贪心法所做出的贪心选择可以依赖用贪心法求解? 最终方案,然后再做出最好选择。由此就于以往所做过的选择,但决不依赖于将来背包问题与背包问题这两类问 导出许多互相重叠的子问题。这正是该问所做的选择,也不依赖于子问题的解。 题都具有最优子结构性质。对于背包题可用动态规划算法求解的另一重要特贪心法通常以自顶向下的方式进行,问题,设是能够装入容量为的背包征。实际上也是如此,动态规划算法的确以迭代的方式做出相继的贪心选择,每做价值的物品集合,则是个物可以有效地解背包问题。 出一次贪心选择就将所求问题简化为规品,可装入容量为动态规划法和贪心法的基本区别在模更小的子问题。 的背包的具有最大价值的物品集合。对于于,贪心法仅产生一个判定序列,而动态对于一个具体问题,要确定它是否具背包问题,类似地,若它的一个最优解包规划法可能产生许多判定序列,但是按照有贪心选择性质,必须证明每一步所作出含物品,则从该最优解中拿出所含的物最优原理,包含非局部最优的部分序列的的贪心选择最终导致问题的整体最优解。品的那部分重量,剩下的将是个结果肯定不可能是最优的,所以不予考首先考察问题的一个整体最优解,并证明原重物品,以及重为 虑。设计贪心法的困难部分就是要证明该可修改这个最优解,使其以贪心选择开的物品中可装入容量为的背包 算法确实是求解了它所需要解决的问题。 始。做出贪心选择后,原问题简化为规模且具有最大价值的物品。 参考文献: 更小的类似子问题。然后,用数学归纳法虽然这两个问题极为相似,但背包问证明,通过每一步做贪心选择,最终可得题可以用贪心法求解,而背包问题却王晓东算法设计与分析北京:清华大 到问题的整体最优解。其中,证明贪心选不能用贪心法求解。用贪心法解背包问题学出版社, 择后的问题简化为规模更小的类似子问的基本步骤是:首先计算每种物品单位重宋文,吴晟,杜亚军算法设计与分析 重庆:重庆大学出版社, 题的关键在于利用该问题的最优子结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南郑州市中华保险招聘考前自测高频考点模拟试题及1套完整答案详解
- 2025内蒙古考试录用特殊职位公务员及调剂考前自测高频考点模拟试题附答案详解(完整版)
- 2025江苏苏州市张家港市建安工程机械质量检测有限公司招聘5人考前自测高频考点模拟试题及答案详解(易错题)
- 2025湖南株洲市田心街道社区卫生服务中心招聘见习人员4人考前自测高频考点模拟试题及答案详解(有一套)
- 质量检验全面管理指南与表格包
- 成长路上勇敢面对挫折演讲稿(7篇)
- 2025杭州临安区教育局公开招聘中小学教师76人模拟试卷及答案详解(夺冠系列)
- 2025包头白云鄂博矿区就业困难人员公益性岗位招聘考前自测高频考点模拟试题及答案详解1套
- 2025届春季河南新乡市卫龙校园招聘考前自测高频考点模拟试题及完整答案详解1套
- 2025广东惠州大亚湾开发区招聘公办学校教师358人考前自测高频考点模拟试题有完整答案详解
- 贴片电阻的识别与检测
- 影视鉴赏-第一章-影视鉴赏的基本概念
- 医院院前急救病历 广州市急救中心
- 诊断学胸壁胸廓与乳房
- 输液室运用PDCA降低静脉输液患者外渗的发生率品管圈(QCC)活动成果
- 电气设备空载试运行及负荷试运行记录
- 全等三角形-倍长中线法
- 集约化猪场的规划设计
- 数星星的孩子习题精选及答案
- 螺旋千斤顶设计大作业
- 超声流量计技术规格书9
评论
0/150
提交评论