算法之动态规划问题.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.6 0/1背包问题 4.6.1 0/1背包问题的描述 4.6.2 0/1背包问题的性质 4.6.3 0/1背包问题的动态规划解法示例 4.6.4 0/1背包问题的动态规划解法的步骤 4.6.5 动态规划解决0/1背包问题的复杂度分析 4.6.6 问题与思考 4.6.1 0/1背包问题的描述 背包问题:给定n种物品和一个背包,物品i的重量是wi, 其价值为vi, 背包的容量为C。如何选择装入背包的物品,使得背包中物品总价值最大? 连续背包问题:每一个物品是可以分割的,分割后保持其价/重比 0-1背包问题:如果背包问题的每一种物品都不能分割:要么装入,要么不装入,不能装入一部分,又该如何选择物品,使得装入背包后总价值最大? 4.6.2 0/1背包问题的性质 假设物品共有n个,背包的承重总量为m,第i个物品的重量是wi,价值是pi。 用Ti(j)表示前i个物品有选择地放入载重量为j的背包中的最大价值。有如下递推关系: 当第i个物品的重量大于背包重量时,可以不考虑这个物品;相反,可以分为第i个物品放入背包和不放入背包两种情况:不能放入时,变为前(i-1)个物品的背包问题;能放入时,变为前(i-1)个物品的、背包承重量减少wi的背包问题 4.6.3 0/1背包问题的动态规划解法示例 T(i,j) 0 1 2 3 4 5 6 7 8 0 0 0 0 0 0 0 0 0 0 1 0 0 0 4 4 4 4 4 4 2 0 3 3 4 7 7 7 7 7 3 0 3 3 5 8 8 9 12 12 4 0 3 3 6 8 8 11 11 12 4个物品,重量3, 1, 3, 2价值是4, 3, 5, 3,背包总量8 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +5 +5 +5 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 从表的最后1行得2种方案:分别是(1,2,3), (1,3,4) 4.6.4 0/1背包问题的动态规划解法的步骤 按照物品数量n把问题划分为n+1个阶段 每个阶段按照背包重量分为m+1种情况 每种情况按照递推公式以O(1)的时间计算得到结果,且每个阶段的计算仅仅与前一阶段有关系 计算至最后一个阶段的最后一个元素,就是问题的最大值;通过回溯可以发现0-1背包问题的各个阶段的选择 4.6.5 动态规划解决0/1背包问题的复杂度分析 假设物品的总数为为n;背包的总容量为m 问题可以分解为n+1个阶段,每个阶段要进行m+1个O(1)的计算和比较操作 动态规划解决0-1背包问题的时间复杂度是O(mn) 动态规划解决背包问题的空间复杂度是O(mn)。如果只计算最优值,则空间复杂度是O(m) 4.6.6 问题与思考 这个背包问题是不是普通的0-1背包问题?它做了哪些限制? 关于物品重量和背包承重量的要求是什么? 对普通的情况如何进行近似计算? 4.7 村庄和邮局问题 4.7.1 村庄和邮局问题的描述 4.7.2 问题分析 4.7.3 村庄和邮局问题的动态规划解法示例 4.7.4 村庄和邮局问题的动态规划解法的步骤 4.7.5 动态规划解决村庄和邮局问题的复杂度分析 4.7.1 村庄和邮局问题的描述 n个村庄在一条直线上,要选择m个村庄设置邮局,使得:所有村庄到离它最近的邮局的距离之和最小 4.7.2 问题分析 如果这n个村庄只设置一个邮局,那么其解如何?-- 事实上,这个子问题可以用O(n)的时间复杂度,通过递推解决;也可以用O(1)的时间直接求其中数即可。 如果u个连续的村庄设置w2个邮局并呈现最优解,对于w的一个正整数分割(w1+w2),一定存在着一种村庄的分割:(0, u), (1, u-1), ……, (u-1, 1), (u, 0),使得设置好的w个村庄恰好是左右两边的最优解 1 2 3 4 5 6 对于上图的6村庄2邮局问题,假设图中给出的2个邮局是原问题的最优解。要把邮局分成1+1两部分,那么在邮局两部分中间划分村庄,使得:左边的村庄必须靠近左边的邮局,右边的村庄必须靠近右边的邮局。这个划分下,左右两边的邮局必然是左右两边的最优解 假设不是,那么至少有一边可以有更优解。假设左边有更优解,使得左边个村庄到最近邮局的距离之和可以更小。这个更优的左边解可以“争取”过来右边的村庄,使得右边的距离之和可能更小。综合起来,我们得到了一个更优的全局解,矛盾。 4.7.3 村庄和邮局问题的动态规划解法示例 村庄坐标:0,6,8,12,14,20。选3个邮局 在前1个村庄中选择1个邮局的解是{0},对应距离0; 在前2个村庄中选择1个邮局的解是{0},对应距离6; …… 在前i个村庄中选择1个邮局的解分别是:{0},{0} , {1} ,{1} ,{2} , {2} ,对应的距离和是0

文档评论(0)

peain + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档