动态规划之矩阵连乘

【软考2010下半年】用动态规划策略求解矩阵连乘问题M1*M2*M3*M4,其中M1(20*5)、M2(5*35)、M3(35*4)和M4(4*25),则最优的计算次序为______。

A.((M1*M2)*M3)*M4
B.(M1*M2)*(M3*M4)
C.(M1*(M2*M3))*M4
D.M1*(M2*(M3*M4)

【解析】

对于这种用动态规划来求解矩阵相乘求最优的计算次序的题目我们首先要明白什么是矩阵相乘,对于一些教材书上介绍的我个人觉得有点抽象所以并没有按照那里去讲述解思路主要还是根据我个人的理解来为大家介绍解题技巧,在解题之前我们首先介绍下矩阵相乘。

>矩阵相乘(由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序)

问题描述:  设有三个矩阵 A[a][b]、B[b][c]、C[c][d]。这个时候我们将ABC排列并相乘:A*B*C,这个时候我们会发现我们有两种不同的矩阵乘法次序——(A*B)*C与A*(B*C)。这个时候我们若要求解矩阵连乘的数乘次序——我们可以分为两个情况

①(A*B)*C——这个时候A*B的连乘次序为a*b*c(因为A的矩阵是a行b列,B的矩阵是b行c列,所以这两个矩阵每一次行列相乘都进行b次乘积,并且他们共进行a*c次乘法运算)当A*B后得到的新矩阵为A'[a][c]此时要计算A'与C的次序,同理为a*c*d。这个时候我们就得到乘积次序的和为a*b*c+a*c*d

A*(B*C)——这个时候我们先求B*C,由①中结论我们知道B*C为b*c*d,得B'[b][d],此时A*B'为a*b*d,得乘积和为b*c*d+a*b*d

>由此我们知道同一个矩阵相乘括号次序不同得到的结果不同。为了更好理解下面我给出一道例题

求((A4*A5)*A6)以及(A4*(A5*A6))

>((A4*A5)*A6)

首先是A4*A5运算的结果为:5*10*20,然后按照上面介绍的A4*A5产生一个新的矩阵为A(5*20),产生的新矩阵在与A6进行运算结果为5*20*25最后两个结果相加变为::5*10*20+5*20*25=3500

>(A4*(A5*A6))

同理,首先我们根据运算法则先计算括号里面的为10*20*25然后产生新矩阵为A(10*25),产生的新矩阵在与A4相乘为5*10*25最后两个式子相加为:10*20*25+5*10*25=6250

好了,明白这个式子之后我们就切入我们的例题,题目要我们求ABCD四个选项中最优的计算顺序,这里我们就直接计算每个选项的值。

>对于A选项:((M1*M2)*M3)*M4

首先我们计算(M1*M2)为20*35*5然后产生新矩阵(20*35),接下来我们在计算M3与新矩阵相乘为:20*35*4产生新矩阵为(20*4),最后就是M4与新矩阵相乘为20*4*25,最后我们将这三个结果相加为:20*35*5+20*35*4+20*4*25=6700

>对于B选项(M1*M2)*(M3*M4)

乘法的次数为20*35*5+35*25*4+20*25*35=24500

>对于C选项(M1*(M2*M3))*M4

乘法的次数为5*4*35+20*4*5+20*25*4=3100

>对于D选项M1*(M2*(M3*M4)

乘法的次数为35*25*4+5*25*35+20*25*5=10375

经过ABCD选项的计算之后我们就可以知道乘法次数最少的是那种组合了

【总结】

说了这么多以上就是我个人对动态规划矩阵相乘计算的理解了如果想要理解更深的话推荐下面这篇文章,因为我也是在这里得到启发的https://www.cnblogs.com/Pinging/p/7898732.html

 

 

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值