一、动态规划算法的基本要素(最优子结构、重叠子问题)
1、最优子结构
矩阵连乘计算次序问题的最优解包含着其子问题的最优解。此称为最优子结构性质。最优子结构是可用动态规划算法求解的前提。
问题的最优子结构性质证明∶
先假设由原问题的最优解导出的子问题的解不是最优的。
再设法证明在这假设下可构造出比原问题最优解更好的解导致矛盾。
利用问题最优子结构性质,以自底向上的方式通过子问题的最优解逐步构造出整个问题的最优解。
注意:同一个问题可以有多种方式刻画它的最优子结构,有些表示方法的求解速度更快(空间占用小,问题维度低)
2、重叠子问题
以矩阵连乘问题为例:

二、备忘录方法
备忘录方法与直接递归方法的控制结构相同
区别:
(1)备忘录方法为每个求解过的子问题建立了备忘录
(2)求解一个子问题时先检查是否已有答案,避免重复求解。

三、动态规划算法的特点
1.阶段性
计算最优值是分阶段进行的。
如矩阵连乘问题。
先计算所有只有一个矩阵的情况
再计算所有二个相邻矩阵连乘的情况
再计算所有三个相邻矩阵连乘的情况。
……
最后计算n个矩阵连乘的情况。
2.无后向性
是指已经计算出的子问题的答案不能再更改。
如Dijkstra算法是有后向性的例子(用贪心算法解决的问题)
四、小结
(一)动态规划可解决的问题同分治策略解决的问题类似,区别是存在重复子问题。
(二)按照动态规划解题的基本步骤解决问题
(1)找出最优解的性质,并刻划其结构特征(最优子结构性质)。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
(三)同一个问题可能有多种方式刻画它的最优子结构,有些表示方法
的求解速度更快(空间占用小,问题的维度低)。

5700

被折叠的 条评论
为什么被折叠?



