动态规划解决具体01背包问题.docVIP

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

动态规划解决具体01背包问题   摘 要:背包问题是计算机算法中的一个经典难解问题,已归为NP-完备问题类,已有的算法有动态规划、回溯法和分枝-限界法。其中动态规划方法就是在要在所有容许选择的决策序列中选取一个会获得问题最优解决的决策序列,即最优决策序列。运用传统的动态规划的方法来解决学生生活中的具体的0/1背包问题。?   关键词:0/1背包问题;动态规划;最优决策序列?   中图分类号:TP   文献标识码:A   文章编号:1672-3198(2010)05-0301-01??      1 问题描述?   一个学生每月生活费总额为300元,每月的花费项目有伙食费200元、电话费30元、牛奶费40元、零食费30元、书报费30元、其他20元,其中伙食费产生的效益是25,电话费产生效益是3,牛奶费产生的效益是4,零食费产生的效益是2,书报费产生的效益是2.5,其他费用产生的效益是1。?   这个问题可以形式化的描述为一个0/1背包问题:?   设M为背包容量,其值为300,6个物品的重量成一向量(w?1, w?2, w?3, w?4, w?5, w?6)=(20,30,30,30,40,200),其价值成另一向量(p?1, p?2, p?3, p?4, p?5, p?6)=(1,2,2.5,3,4,25)。要找出另一个6元向量(x?1, x?2, x?3, x?4, x?5, x?6),x?i∈{(0,1)|1≤i≤6}, x?i=0表示不选该物品,x?i=1表示选该物品。?   由此,这个问题的要求为:?Max?∑n?w?ix?i??   且满足以下两个约束条件:?   (1)∑ni=1?w?ix?i?≤M?   (2)x?i∈{0,1}1 ≤i≤6?   也就是说对0/1背包问题,可以通过作出变量x?1,x?2,…,x?n的一个决策序列来得到它的解,而对变量x?i的决策就是决定它是取0值还是取1值。?   2 问题分析?   动态规划是指在多阶段决策过程的每一阶段,都可能有多种可供选择的决策,但必须从中选取一种决策,一旦各个阶段的决策选定之后,就构成了解决这一问题的一个决策序列。决策序列不同,所导致的问题的结果也不同。动态规划的目标就是要在所有容许选择的决策序列中选取一个会获得问题最优解决的决策序列,即最优决策序列。?   无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。用动态规划方法有可能解决该问题,而解决问题的关键在于获取各阶段间的递推关系式。?   前文提出的有效使用生???费的问题正是一个最优性原理成立的0/1背包问题。在获取这个问题的递推关系时将使用向后处理法来解决。?   对0/1背包问题,可以通过作出变量x?1,x?2,……,x?i的一个决策序列来得到它的解。而对变量X的决策就是决定它取0值还是取1值。假定决策这些X的次序为x?n,x??n-1?,……, x?1。在对x?n作出决策之后,问题处于下列两种状态之一:背包的剩余容量是M,没产生任何效益;剩余容量是M―w,效益值增长了p。显然,剩余下来对x??n-1?,x??n-2?,……, x?1的决策相对于决策x所产生的问题状态应该是最优的,否则x?n,x??n-1?,……, x?1 就不可能是最优决策序列。如果设f?i(x)是KNAP(1,j,X)最优解的值。那末f?n(M)就可表示为?   f?n(M)= ?max?{f??n-1?(M),f??n-1?(M-w?n)+p?n}(2.1)?   对任意的f?i()x,这里i0,则有?   f?i(x)=?max?{f??i-1?(x),f??i-1?(M-w?i)+p?i}(2.2)?   为了能由前向后递推而最后求解出f?n(M),需从f?0(x)开始。对于所有的X≥0,有f?0(x)=0,当X0时,有f?0(x)=-∞。根据(2.2),马上可以求解出0≤Xw1和X≥w1情况下f?1(x)的值。接着又可以由(2.2)不断递推求出f?2, f?3,……,f?n在X相应取值范围内的值。?   在具体算法中会运用序偶这个概念。(p?i,w?i)就称为一对序偶。设S??i-1?是f??i-1?的所有序偶的集合。S???i???1是f?i-1?(S - w?i)+ p?i的所有序偶的集合。把序偶(p?i,w?i)加到S??i-1? 中的每一对序偶上就得到S???i???1。?   S???i???1={(p,w)|(P-p?i, W-w?i)∈S??i-1?}?   在2.2式中,求f?i(x)就相当于在支配规则下将S??i-1?和S???i???1归并成S?n。如果S??i-1?和S???i???1之一有一

文档评论(0)

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

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

1亿VIP精品文档

相关文档