浅谈dp 动态规划(1)
来源:互联网 发布:运用python成为黑客 编辑:程序博客网 时间:2024/05/18 20:37
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。
0 0
- 浅谈dp 动态规划(1)
- 浅谈dp 动态规划(2)
- 动态规划 DP 1
- 浅谈动态规划(一)
- 浅谈动态规划(二)
- 浅谈动态规划(三)
- 浅谈动态规划(四)
- DP动态规划问题(1)
- 动态规划(dp)简介
- 常见动态规划(DP)
- poj1015--动态规划(DP)
- 动态规划(DP)算法
- 动态规划(DP)算法
- 动态规划(DP算法)
- 动态规划(dp)基本概念
- [笔记]: dp(动态规划)
- 滑雪 (dp)动态规划
- 动态规划(DP)算法
- HDU 5671 Matrix——BestCoder Round #81(div.1 div.2)
- 单例模式中的线程安全问题
- 在源代码控制、两人合作中遇到的实际问题给出建议或者答疑
- Caffe源码阅读(2) 卷积层
- 自定义View-5-拖动选择按钮
- 浅谈dp 动态规划(1)
- 264. Ugly Number II
- android:向res/drawable里面添加图片+制作.9.png
- Android网络通信
- Caffe源码阅读(1) 全连接层
- HDU3746 Cyclic Nacklace
- 在Oracle中索引的使用
- 白话空间统计二十一:密度分析(一)
- Leetcode #51&52 N-Queens I&II N皇后问题 1&2 解题报告