DP 与 贪心 的区别
来源:互联网 发布:网络媒介有哪些类型 编辑:程序博客网 时间:2024/06/06 14:27
背包与动规的区别
很多同学在做动规题的时候,很容易做成贪心,的确,动规和贪心是很相近的,
在很多时候,
动规和贪心没有明显的界限,
反而在很多时候,
我们需要使用贪心的思想,
对动规进行优化,
不过这也就导致了很多同学分不清什么题是动规,什么题是贪心。
现在我们来回忆一下,动规的思想是什么,以前一个或者多个状态的最优值,
加上现在这个状态的最优解,
在其中取得当前的最优解,再层层递推,得到最终答案。
那么贪心呢??
贪心的思想是由局部的最优解进行组合,使用分治的思想,局
部的最优解组合起来就得到了总得最优解。
仔细对比两种思想,你发现两者之间有什么差别了吗??
没错,在贪心中,每一个局部的最优解之间是没有任何联系的,
我们可以分开同时求解,
而在动态规划中,
我们必须要应用前面的阶段中的最优值,才可以得到当前的最优值。
所以在区别动归和贪心的时候,关键就是:
我们在得到当前最优解的时候,需不需要使用前面的阶段中的
得到的值,如果不需要,那就是贪心;如果需要,就是动归。
下面我举一道题来说明,这是非常基础的一道题,每一个人都
见过,数字三角形。
现在有一个数字三角形,我们从最上方走到最下方。比如下面
这个数字三角形
7
3 8
8 1 0
如果我不给出一个点只能走到左下或者右下这个限制条件,我
们可以从这一层的一个点走到下一层的任意一个点,
那么我们发现这
道题就是一个很简单的贪心,
取出每一排的最大的数字相加就是我们的和。
如果加上了那个条件呢???
那么我们就必须使用动态规划,方程很简单
f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j];
为什么加上一个条件后,就变成了动态规划呢??
因为我们加上了这个条件之后,
我们走到当前这一个层的时候,
受到了前面走到的节点的限制,我们必须要依赖于前面走到的节点,
才能够走到当前的节点,所以这道题就不是贪心,而是动归。
贪心可以保证一次最优,而动规可以保证整体最优,
大家清楚了吗?
接下来有一句话,送给喜欢贪心的同学:
贪心不能解决动归,动归可以解决贪心
- DP与贪心的区别
- DP与贪心的区别
- DP 与 贪心 的区别
- dp和贪心的区别
- DP与贪心算法的一点浅见
- dp 与 sp 的区别
- dp与px的区别
- DP与SP的区别
- 贪心与动态规划的区别
- 动态规划与贪心的区别
- 动态规划与贪心算法的区别
- 01背包与贪心的区别
- 动态规划以及与贪心的区别
- 神奇的贪心 + DP
- 动态规划与贪心算法的区别与联系
- 动态规划与贪心算法的区别与联系
- dp(dip)与sp的区别
- Sp与dp之间的区别
- InnoDB与Myisam的六大区别
- Android开发:shape和selector和layer-list的(详细说明)
- 在 SQL Server 2008 中新建用户登录并指定该用户的数据库
- android如何在activity中控制屏幕点亮与关闭
- LinuxCNC+EtherCAT(1)~~~~~~
- DP 与 贪心 的区别
- HDU 4746 Mophues(莫比乌斯反演)
- 鉴权
- Android程序员的一些面试建议
- 创建隐藏文件出现异常的解决
- Java 类加载器
- Leetcode -- Search in Rotated Sorted Array
- 坚持自己的梦想,努力前进
- poj--2553--The Bottom of a Graph (scc+缩点)