1.基本思想
动态规划算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。
2.解题步骤
- 找出最优解,并刻划其子结构的性质;
- 递归地定义最优值;
- 以自底向上的方式计算最优值
- 根据计算最优值时得到的信息,构造最优解
3.基本要素
最优子结构:原问题最优解包含其子问题的最优解。
最优子结构是问题能用动态规划算法求解的前提。
4.动态规划算法的理解
每步求解的问题是后 面阶段求解问题的子问题. 每步决策将依赖于以前步骤的决策结果.
5.动态规划与分治算法的异同
治法与动态规划
共同点 :⼆者都要求原问题具有最优⼦结构性质,都是将原问题分⽽治之,分解成若⼲个规模较⼩(⼩到很容易解决的程序)的⼦问题.然后将⼦问题的解合并,形成原问题的解.
不同点:分治法将分解后的⼦问题看成相互独⽴的,通过⽤递归来做。
动态规划将分解后的⼦问题理解为相互间有联系,有重叠部分,需要记忆,通常⽤迭代来做。
链接:参考
动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。 ( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )
6.应用
矩阵链相乘;最长公共子序列