浅谈dp 动态规划(1)

dp对于初学者来说会比较难以理解
作为一个蒟蒻,看到网上的很多文章都没有说得太浅显易懂,在这里解释一下:

dp的一个重要的思想就是继承!!

比如拿经典背包问题来举例
F[i][j]=min{F[i-1][j-v[i]]+w[i],F[i-1][j]}
这里面 表示不放当前物品,是由F[i-1][j]继承而来的
放当前物品,是由F[i-1][j-v[i]]+w[i]继承而来的
由于dp状态一般描述的满足当前状态下的最优解,于是便可以保证该算法的正确性。

在使用dp算法求解的时候,还需要考虑俩个重要的问题
(1)后效性
如果对于每一步决策(简单的说就是就好比这个物品你要还是不要,要几个),对于后面做哪种决策取得的权值不会有影响,那么可以考虑dp。
(2)最优子结构
dp一定要满足最优子结构特性,即dp为当前状态下的最优解,从而实现答案求解。

区分与贪心策略
为什么有的题贪心不可以解决呢?
原因是贪心只能保证是局部最优解,而无法保证全局最优解(不懂的同学们可以自己去试验一下有些特殊的经典01背包的数据)。

一般来说,dp都可以用dfs的记忆化搜索来实现,但是dfs的代码实现难度有时会高于dp。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值