通俗理解动态规划与递归

动态规划是什么

将原问题分解成多阶段决策的子问题,再采取自底向上的方法求解。

动态规划三个条件:最优子结构,无后效性,重叠子问题

最优子结构:一个问题的最优解包含了子问题最优解。反过来说,即子问题的最优解能够推出原问题的最优解,为动态规划提供了问题分解的依据。

无后效性:未来与过去无关,只与现在有关。即对于某个阶段能够写出一个关于当前状态转移方程,使其转移到下一个阶段。是多阶段决策的桥梁。

重叠子问题:出现重复的子问题。动态规划自底向上的方法就能够避免该问题出现,在自底向上中,子问题只会被计算一次并存储起来(若有需要被存储,滚动数组不必)。

动态规划与递归
同:
其实我们在用递归的时候不难发现,一个能用递归形式解决的问题(若问题的解不止一个且有最优的一个),其必定满足最优子结构。递归天生就将一个原问题分解成子问题,且子问题一定是为原问题做出贡献的,否则也没必要这么分解。
其次,递归的解法也是满足无后效性的。回想在递归的解法中,将问题分解成子问题的时候,并不考虑子子问题是如何,这不就是反着来看无后效性吗?未来是原问题,现在是子问题,过去是子子问题。
递归需要找到递归的边界,问题的出口。动态规划也需要找到basecase,即把最小的问题先填到表上,后续的问题才能慢慢解决。
递归需要递归函数,动态规划需要状态转移方程。递归函数和状态转移方程本质都是将问题转移的方法。
异:
递归是自顶向下的分析。过程是先自顶向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值