第三章 动态规划
1.总体思想
将问题分解成若干子问题(但是子问题之间往往不互相独立)
2.动规 VS 分治
动规:子问题不互相独立
保存了子问题的解,可以避免重复计算,可在多项式时间内计算完毕
分治:子问题相互独立,有些子问题会被重复计算(??举个例子)
子问题往往是指数规模的
3.动规的两个要素
最优子结构
重叠子问题
4. 最优子结构性质
问题的最优解包含了其子问题的最优解,这种性质称为最优子结构性质
5. 动规求解步骤
• 分析最优解的结构
• 建立递归关系
• 计算最优值
• 构造最优解
6.矩阵连乘
最优子结构性质:A[1:n]的最优计算次序所包含的计算矩阵子链A[1:k]和A[k+1:n]的次序也是最优的。(可用反证法证明)
7.动规最优子结构的问题:
一个问题的最优解由其子问题的最优解构成
然后递归定义最优解
在求解过程中,保存所有子问题的最优解
8.动规 VS 穷举
动规 时间复杂度 T = O(n3) 空间复杂度 O(n2)
动规优于穷举(动规保存了子问题的解),用了空间换时间。
动规只需要多项式时间就可以求解问题。
1.总体思想
将问题分解成若干子问题(但是子问题之间往往不互相独立)
2.动规 VS 分治
动规:子问题不互相独立
保存了子问题的解,可以避免重复计算,可在多项式时间内计算完毕
分治:子问题相互独立,有些子问题会被重复计算(??举个例子)
子问题往往是指数规模的
3.动规的两个要素
最优子结构
重叠子问题
4. 最优子结构性质
问题的最优解包含了其子问题的最优解,这种性质称为最优子结构性质
5. 动规求解步骤
• 分析最优解的结构
• 建立递归关系
• 计算最优值
• 构造最优解
6.矩阵连乘
最优子结构性质:A[1:n]的最优计算次序所包含的计算矩阵子链A[1:k]和A[k+1:n]的次序也是最优的。(可用反证法证明)
7.动规最优子结构的问题:
一个问题的最优解由其子问题的最优解构成
然后递归定义最优解
在求解过程中,保存所有子问题的最优解
8.动规 VS 穷举
动规 时间复杂度 T = O(n3) 空间复杂度 O(n2)
动规优于穷举(动规保存了子问题的解),用了空间换时间。
动规只需要多项式时间就可以求解问题。