动态的规划背包及最优二叉树 共39页.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
0/1背包 0-1背包问题 所谓0/1背包问题是指在物品不能分割,只能整件装入背包或 不装入的情况下,求一种最佳装载方案使得总收益最大 给定n种物品和一背包,物品编号从1到n。物品i的重量是w,其 价值为v,背包的容量为C。问应如何选择装入背包的物品,使 得装入背包中物品的总价值最大 0-1背包问题是一个特殊的整数规划问题。 max v, x Wx.≤C x1∈{0,1,1≤i≤n 2动态规划法求解 最优子结构 ●0/1背包的最优解具有最优子结构特性 ●设(x1,X2,….,xn),x∈{0,1}是0/1背包的最优解, 那么,(X1,X2,…,Xn=1)必然是0/1背包子问题的 最优解:背包载重CWXn,共有n-1件物品,第i 件物品的重量为W;,效益V,W0,V10, n。 0-1背包问题 设所给0-1背包问题的子问题 max Vk r xk≤J ,1}≤k≤n 的最优值为m(i,j,即m(,j是背包容量为,可选择物品为1, i时0-1背包问题的最优值。由0-1背包问题的最优子结 构性质,可以建立计算m(i,j的递归式如下。 aKD十.zk 假如有容量为9的背包,要装入4种体积为2,3,4和5的物品, 价值分别为3,4,5和7 要在不超出背包容量的前提下,用某种方法尽可能多地在背包内 装入物品,使总价值最大, 首先,准备一个标号为0到4共5行和标号从0起到9共10列的空的 矩形表,接着用值0初始化0列和0行的元素 列号 按如下办法直接填行1的值:m[1,j=3(第一种物品的价值),当 且仅当j≥2(第一种物品的体积)。 第二行中的每项n[2,j有两种可能性,第一种可能性是置 m[2,j=m[1,j这相当于把第一种物品放入背包,2号物品放不下;第 种可能性是置皿[2,j=[1,j-3]+4,它相当于加上第二种物品,使 它或者仅包含第二种物品,或者同时包含第一种和第二种物品。当然, 仅当j≥3时,才有可能加上第二种物品。继续这种方法,填入第3行 第4行,得到如图所示的表 林行列号 容量为9 01 9的背包 0 000 0 和的 123 4034 5037 0 0000 3333 303444 60378 7 80379 0371 0 578101112 图背包问题算法的一个例子每种物品只一件 4,第9列的第i项,也就是V[i,9,包含通过用前i个物品来装背包可 以得到的最大价值,这样在最后一列的最后一项找到最优解通过装物 品3和4达到。还存在着装物品1,2和3的另一个最优解,这个解对 表中的m3,9],它是在考虑第4种物品前的最优解。 ●作业 设有O/1背包问题n=3,(W1,W2W3)=(2,34), (v1,Vn,V2)=(1,2,4)和C=6。 Knapsack有两个较明显的缺点: 1.算法要求所给物品的重量w是整数 2.当背包睿量c很大时,算法需要的计 算时间比较多 算法改进 由m()的递归式容易证明,在一般情况下,对每一个确定的 i(1≤i≤n),函数m()是关于变量j的阶梯状单调不减函数。跳 跃点是这一类函数的描述特征。在一般情况下,函数m(由 其全部跳跃点唯一确定。如图所示 对每一个确定的(1≤i≤n),用一个表p[存储函数m(,j的全 部跳跃点。表p[]可依计算m(i,j的递归式递归地由表p[i+1] 计算,初始时p[n+1]={(0,O)} 个例子 3,c=6,W={4,3,2},V={5,2, m(4,x) m(4,x-2)+1 m(3,x) (0.0 m(2,x) m(3,x) m(3,x-3)+2 (2 (0,0) (2 (1,x) m(2,x) m(2,x-4)+5 (9) (5,3)

文档评论(0)

189****7685 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档