动态规划一般用来求解最优化问题
设计一个动态规划算法一般有以下四步:
- 描述一个最优解的结构特征。
- 递归地定义最优解的值。
- 计算最优解的值,通常采用自底向上的方法。
- 利用计算出的信息构造出一个最优解。
钢条切割问题
体现了动态规划的一个重要性质:最优子结构性
其实自顶向下的动态规划就是在递归的基础上将计算好的结果记录下来
我们再来看看自下而上的求解
通常,自顶向下法和自底向上法具有相同的渐近运行时间
我们还可以记录切割的位置
切割方案如上
矩阵链乘法
我们先来了解一下矩阵的乘法运算