算法导论--动态规划--矩阵链乘法

问题讲解:

1.解释

假设有n个矩阵,那么对于它们的乘法结果显而易见为A1A2A3…例如对于矩阵A(pq) B(qr),二者相乘结果为pr,计算该结果的次数为pqr(矩阵乘法运算),如果有三个矩阵A(10100)B(1005)C(550),不同的方式会有不同的运算次数,比如(AB)C,就是7500次运算,而A(BC),就是50000次运算,所以对于计算机而言,运算顺序会给运算产生巨大代价。

2.定义:

给定n个矩阵的链<A1,A2,A3…An>,矩阵Ai规模为Pi-1*Pi(1<=i<=n),求方案使得计算乘积运算次数达到min

解决方法讨论:

1. 直接穷举(正常的第一思路):

每一个位置都可以放一个括号,为0或1的状态,所以就是2的n次方种状态,对于一个n矩阵的链,设P(n)为可选择的括号方案的数量在这里插入图片描述
显而易见为2的n次方,失败

2.动态规划(子结构问题):

对于一个长度为n的链,相乘时假定在Ak与Ak+1处有个括号,也就是说最优分割点k是已知的,k必定在答案中。那么就会分成两个子结构,设min[1,n]为该矩阵链的最低运算次数,那么就是前半段 的min加上后半段的min以及二者最后的乘法运算次数,可得在这里插入图片描述
(对于矩阵A1,p0为行数,p1为列数,对于A2,p1为行数,p2为列数,同上pi-1等等)
但是这和我们之前学习的钢条切割问题一样,在对于重复问题上也是一个个来慢慢算,之前我们介绍过这种算法可以通过带一个备忘或者自下而上来消除这个影响
下面为时间复杂度(下界)分析:在这里插入图片描述
自证下界为2的n次方(1小时09分钟:数学归纳)同钢条切割

3.算法选择

1.带备忘版本自上而下

在这里插入图片描述
主过程第一行记录矩阵个数,建立二位数组,表格内每一个值都是无穷大,调用子过程
子过程1,2一块,3,4一块
i
上层问题依赖下层解决

2.自下而上算法

在这里插入图片描述

在这里插入图片描述
向上填表,s数组记录k,三角矩阵只有n的2次方/2数据,为O(n平方),每算一个数据都要之前的O(n)个数据,时间复杂度都为n的3次方

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值