动态规划原理

适合应用动态规划方法求解的最优化问题应该具备的两个要素:

1、最优子结构

最优子结构性质:如果一个问题的最优解包含其子问题的最优解,就称该问题具有最优子结构性质

使用动态规划方法时,我们用子问题的最优解来构造原问题的最优解。因此,我们必须小心确保考察了最优解中用到的所有子问题。

在发掘最优子结构性质的过程中,实际上遵循了如下的通用模式:

(1)、证明问题最优解的第一个组成部分是做出一个选择。做出这次选择会产生一个或多个待解的子问题。

(2)、对于一个给定的问题,在其可能的第一步选择中,你假定已经知道哪种选择才会得到最优解,你现在并不关心这种选择具体是如何得到的,只是假定已经知道了这种选择。

(3)、给定可获得最优解的选择后,你确定这次选择会产生哪些子问题,以及如何最好地刻画子问题空间。

(4)、利用“剪切-粘贴”技术证明:作为构成原问题最优解的组成部分,每个子问题的解就是它本身的最优解(即子问题的最优解构成原问题的最优解)。可用反证法进行证明。

然后根据以上分割的子问题,列出递归方程。

2、子问题重叠

适合用动态规划方法求解的最优化问题应该具备的第二个性质是子问题空间必须足够“小”,即问题的递归算法会反复求解相同的子问题,而不是一直生成新的子问题。

如果递归算法反复求解相同的子问题,我们就称最优化问题具有重叠子问题性质。

动态规划算法通常这样利用重叠子问题性质:对每个子问题求解一次,将解存入一个表中,当再次需要这个子问题时直接查表,每次查表的代价为常量时间。

posted @ 2014-11-03 17:08  yyxayz  阅读(649)  评论(0编辑  收藏  举报