研究生课程 算法分析-动态规划

动态规划的思想

上一篇博文讲了分治法,这一篇的动态规划思想有些接近,但是两者最大区别是,动态规划要解决的子问题往往不是独立的,子问题往往被重复求解了很多次。所以一个叫朴素的想法是,把每个子问题的答案都保存下来,从而避免大量的重复计算。这种方法是典型的以空间换取时间。

动态规划的基本要素

最优子结构性质

最优子结构的性质指的是,问题的最优解包含着其子问题的最优解。利用该性质,自底向上递归地从子问题的解,逐步构造出整个问题的最优解。分治法和动态规划都具有这个性质。

重叠子问题

在最优子结构的前提下,产生的子问题如果总是被反复计算了很多次,那么这种性质就是子问题的重叠性质,这个也是动态规划和分治法最大的区别。

一般动态规划的做法都是,子问题的解都只需要解一次,并把子问题的解保存在一个数组(表格)中。通常子问题的个数随着问题的大小呈多项式增长,因此动态规划的算法只需要多项式时间。

应用举例

挖坑,坑的名字如下:

矩阵连乘问题

最长公共子序列

最长公共子串

最大子段和

0-1 背包问题

编辑距离问题

最优二叉查找树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值