动态规划与分治、贪心的区别

	**一个问题必须拥有重叠子问题和最优子结构,才能使用动态规划。**

一、动态规划与分治

两者都是将问题分解为子问题,然后合并子问题的解,从而得到原问题的解。
	分治:分解的子问题是不重叠的。例如快速排序和归并排序,每个子问题即需要排序的序列都是不同的。且分治法解决
的问题不一定是最优化问题。
	动态规划:重叠子问题,例如经典数塔问题,要求从第i行第j个数字出发的到达最底层的所有路径中能得到的最大和,
就一定要先求出它的两个子问题——从位置(i+1,j)到达底层的最大和及从位置(i+1,j+1)到达底层的最大和。重复的求
各子问题的最优解。

二、动态规划与贪心

两者都要求原问题必须拥有最优子结构,即重复求子问题最优解。
	贪心:自顶向下,不等所有子问题求解完毕再选择使用哪一个的解,而是直接人为的通过一种策略选择一
个子问题去求解。没被选择的子问题不再求解,直接抛弃。例如经典数塔问题,用贪心的话,会直接从第一层的左下
和右下选择较大的一个,较小的不再考虑,即使较小的那一个路径上的结点值都比,较大的路径上的结点值大。所以
从全局看,不一定可以得到最优解。
	动态规划:无论是选择自顶向下还是自底向上,总是会考虑所有子问题,并选择继承能得到最优结果的那
一个。例如经典数塔问题,用自底向上的动态规划,上一层的每个结点都会从它所有子结点中选择最大的,这样依
次递推,到第一层的右下和左下,各自的最大和必定为其路径的最大和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值