动态规划
动态规划
动态规划规划和分治方法类似,都是通过组合子问题的解来求解原问题.而不同的是,分治方法是将问题划分成互不相关的子问题,然后分别独立地求解子问题,最后将解组合起来,得到原问题的解;而动态规划中子问题之间就不再是相互独立的了,即他们可能相同的有更小的子子问题,这时,若还用分治算法则会重复求解公共子问题,而动态规划则不同,它只求解一次,并将解保存起来以供之后遇到此问题时直接调用答案.
动态规划方法通常用来求解最优化问题.此类问题有很多可行解,每个解都有一个值,我们希望寻找到具有最优值的解.需要注意这里最优解可能不止一个.
动态规划其算法步骤如下:
1.刻画一个最优解的结构特征.
2.递归地定义最优解的值.
3.计算最优解的值,通常采用自底向上的方法.
4.利用计算出的信息构造一个最优解.
这里步骤4不是必须的,只有当我们需要解的具体方案而非只是一个最优解的值时,我们才进行步骤4.这时还需要在步骤3中维护额外的信息来进行4的构造解.