码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划-矩阵连乘

时间:2015-07-18 10:49:33      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:

动态规划四个步骤:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!