首页 > 其他 > 详细

矩阵链乘法

时间:2021-06-13 01:26:35      阅读:18      评论:0      收藏:0      [点我收藏+]

1.问题

设A1,A2,A3.......An为n个矩阵的序列,其中Ai为pi-1*pi阶矩阵,这个矩阵链的输入用向量p=<p0,p1,p2,....pn>给出。

给董向量p,确定一种乘法的次序,使得基本运算的总次数达到最小。

2.解析

假设给定序列p=<100,10,20,5,100>

则A1=100*10,A2=10*20,A3=20*5,A4=5*100;

假设(((A1*A2)*A3)*A4)=100*10*20+100*20*5+100*5*100=8e4;

再比如A1*((A2*A3)*A4)=10*20*5+10*5*100+100*100*10=1e5+5e3;

再比如(A1*(A2*A3))*A4=10*20*5+100*10*5+100*5*100=5.6e4

可以很容易的观察出,如果排列的顺序是不同的那么所得到的答案相差会非常的大。

那么我们如何去求这个最优的答案,就可以用到动态规划。

我们可以先从小区间的最优解,再逐步扩大最终得到答案的最优解。

比如我设定相乘的长度为2时,那么我就可以用长度为1的两个最后解,再加上这次的最后解,得到答案的最优解。

比如我求a[l][r]=a[l][k]+a[k+1][l]+本次求解的最优解,我a[l][k]和a[k+1][l]都是在之前求过最优解,那么加上这次的最优解

显而易见就可以得到a[l][r]的最优解,本次最优解我只要去枚举哪一个矩阵生下来和他相乘就可以。

3.设计  

技术分享图片

 

 

4.分析

时间复杂度为O(n^3)

5.源码

Github

 

矩阵链乘法

原文:https://www.cnblogs.com/passawayy/p/14879027.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!