基础算法之动态规划

来源:互联网 发布:java infinity 编辑:程序博客网 时间:2024/05/03 17:47
一、什么是动态规划法
       动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度。动态规划是一个多阶段决策的过程。与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)。
二、如何使用
    (1)描述最优解的结构。
    (2)递归定义最优解。
    (3)按自底向上的方式计算出最优解。
    (4)根据计算构造问题的最优解。
三、什么时候使用

      当问题能分解为一个或者多个子问题,且子问题与源问题性质相同时,则可以使用动态规划。

四、例子

      计算器。

0 0
原创粉丝点击