跟分治法类似的是,动态规划也是通过组合子问题的解而解决整个问题的,不同的是,分治把问题划分为一些独立的子问题,但动态规划适用的是子问题不独立的情况,也就是子问题包含公共的子子问题。
动态规划通常应用于最优化问题,这些问题往往有很多个解,即使是最优解也可能有多个,所以动态规划的某种应用只是找出了一个最优解。动态规划算法的设计可以分为下面4个步骤:
1, 描述最优解的结构
2, 递归定义最优解的值;
3, 按自底向上的方式计算最优解的值;
4, 由计算出的结果构造一个最优解;
第四步不是必须的。如果需要最优解,则可能需要在第三步记录一些附加信息,使构造一个最优解更容易。