标签:
动态规划四个步骤:
1)描述最优解的结构
2)递归定义最优解的值
3)按自底向上的方式计算最优解的值
4)由计算出的结果构造一个最优解
定义:pi-1表示第i个矩阵的行数,pi表示第i个矩阵的列数
Ai..j表示对乘积AiAi+1...Aj求值的结果
i<j,i<=k<j
m[i,j]:表示矩阵Ai..j所需标量乘法运算次数的最小值
矩阵连乘:
1)描述最优解:找到最优子结构
假设最优解把乘积在Ak与Ak+1分开,那么AiAi+1...Ak和Ak+1...Aj的最优解必定是AiAi+1...Aj的最优解的部分
2)递归定义最优解的值
3)按自底向上的方式计算最优解的值:防止重复的求解公共子问题
按上面的递归方法求解,则复杂度还是指数级别的,而原问题的子问题其实只有O(n2)个。
使用辅助表m[1..n,1..n]存储m[i,j]的代价,用s[1..n,1..n]来记录计算m[i,j]时取得最优代价处k的值
算法大概思路:
1)设m[i,i]=0
2)for l=2:n
计算m[i,i+l-1]
代码如下:(时间复杂度O(n3),空间复杂度O(n2))
标签:
原文地址:http://www.cnblogs.com/xiangzhi/p/4656282.html