寒假训练2018.2.8训练日志------dp学习(三)小心得

dp学习小心得:

         最近一直有个疑惑,dp为什么什么能求的最优解,它和贪心有什么不同之处。我们知道贪心是通过局部的最优解从而实现全局的最优解,但有时候局部的最优解并不一定是全局的最优解,比如我们常说的01背包问题。那为什么dp就不会出现这样的问题呢。从dp定义中我们可以看出,dp求解的每一步实际上求解的都是全局最优解(个人感觉状态的选择在这里显得格外重要),这样也就要求我们要遍历所有的状态(因此for中是0——m或m——0),分别把各种状态下的全局最优解均求解出来,这到底是什么意思呢,为什么可以这么说。

         先举个例子,还是01背包问题,现在有3个物品,编号为①、②、③,想要得到最大价值。若按照贪心的话,可能会出现这样的情况:假设①和②在诸多因素下不能共存(比如总体积限制),我们在①和②中选择了价值较大的①,选择③时发现①体积太大,③放不下,所以现在背包中只有①,但我们发现尽管②的价值比①小,但如果放②,可以再放入③,总价值>①,所以贪心有问题,即贪心不合适本题。

         如果是dp的话,我们按照不同状态来求解最优解,V从0~v枚举,分别求出每种体积下放哪个或哪几个物品最合适。这样相较于贪心,我们发现在某个体积时确实放入①是最优解,不过同时我们也找到了在某个体积下②是最优解,当然,①②选择完后现在的最优解是①。同贪心一样,现在我们选择③,与贪心不同的是,贪心此时因为体积限制已经不再考虑③了,他前面确定的局部最优解是无法更改的。而dp要考虑③,要考虑把③放入后是否会得到优解,这时对①和②的选择就不再根据①和②谁的价值大决定了,而是看加上③后哪个价值更大,前面说贪心的局部最优解是不可更改的,其实dp的最优解也是不可更改的,但比较一下两个最优解,贪心是说在①和②中选择①是最优解,而后者是说在空间为V时,①是最优解,也就是说在空间不为V时,①不一定是最优解。(注意:dp在某一状态下的最优解一定会是全局最优解,这是不可变的),所以最中dp由子问题的全局最优解得到了整个问题的全局最优解。

         想到那里写到哪里,思路有些乱,最后总结一下:贪心所确定的状态(暂且认为有状态这个概念)是当前的最优解(局部最优解),但不是当前状态饱和时(贪心的饱和是2选1,选出1个即饱和)的唯一解,因此也就不是全局最优解。dp所确定的状态是当前的最优解,也是当前状态饱和(如达到当前最大体积限制)的唯一解,因此也是全局最优解。(ps:饱和状态是自己编的,对dp理解有限,感觉这样更好理解一些,正确性还有待验证)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值