动态规划|01背包问题

动态规划

定义:什么是动态规划?动态规划是运筹学的一个分支,适合于解决具有最优性质的问题。动态规划与分治法类试,都是把原问题分解为一个个子问题通过解决子问题来寻求原问题的答案,那么为什么还要有动态规划这个东西呢?每一个东西都有它独特的一面,当分解的子问题相互之间有交集是,此时运用动态规划能够减少很多的运算。在我看来如果把分治法看作猿猴那么分治法无疑是已经进化成人了。
举例子
1.01背包问题
现在有四件物品其所占体积和他们的价值分别是(5,6)(2,3)(3,4)(4,5)在体积为10的背包中求当背包中的物品的价值为最高的一种情况。
解决问题的思路:
首先我们将原题翻译成为数学语言就是:Wi为第i个物品的体积,Vi为第i个物品的价值(i=1,2,3,4).所求的问题我们用一个函数表示m(i,j):他的意义是,前i个物品,在空间为j时所能求得的最大价值的情况。很显然m(i,j)是可以列举出来的。i为行,j为列,形成了一个数组。本问题下(i=1,2,3,4)(j=1,2,3,4,5,6,7,8,9,10);现在我们就要求m(4,10)的值为多少,转化为自然语言就是前4个物品在体积为10的情况下求得价值最高的情况,m(4,10)和m(3,10)的关系又是什么呢?其区别就在于第四个物品该怎么放分为两种情况:
1.第4个物品放进去了
2.第4个物品没有放进去
那么怎么决策呢?
本问题要求的是价值最高那么就好看了。我们只需要比较第四个物品放进去了之后的一种最优的情况,和第四个物品没有放进去的情况相比,哪一种是更优的情况就行了。那么第四个物品放进去了之后的一种最优的情况是什么呢?m(3,j-W4)+V4.那么第四个物品如果没有放进去又是什么情况呢,很显然还是m(3,j).现在笔者希望大家能体会数学语言:m(3,j-W4)+V4和自然语言:第四个物品放进去了之后的一种最优的情况,之间的转换过程,这一步也是寻求原问题和子问题的一种关系。到此重点就结束了,下面只要迭代就行了,迭代到最后,你就知道该从哪里写起了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值