求解这道矩阵的乘法乘法题

共回答了21个问题采纳率:100%

记上述表达式为AX=B,那么只要只要将A的逆求出来,左乘到B上,就能等到X了,即是X=A^(-1)B

有若干个矩阵的乘法{Ai}元素都为整数且已知矩阵的乘法大小。

如果要计算所有矩阵的乘法的乘积A1 * A2 * A3 .. Am最少要多少次整数乘法?

一个整数表示最少所需的乘法次数
优化目标昰基本运算次数最小化,而这道题关键在于确定一个乘法的次序相当于在n个矩阵的乘法间加括号。如何界定子问题的边界是产生的问题如果从前向后划分,所产生的子问题只有后边界但是在计算子问题A1.....j的过程中,我们需要知道子问题A1....i和子问题A(i+1)....j的信息所以问题需要前後两个边界。用m[i][j]表示乘积Ai....j所用的最小运算次数假定最后一次相乘发生在Ai.....k和A(k+1).....j之间,那么m[i][j]=min(i≤k<j){m[i][k]+m[k+1][j]+B(i-1)*B(k)*B(j)};
下边是代码的c语言实现

算法时间复杂度为O(n3)

1.当相乘的都为数组array时:d*f为对应元素的乘积multiply(d,f)也是对应元素的乘积,dot(d,f)会转化为矩阵的乘法的乘积

 
 
 

  
 
2.当相乘的都为矩阵的乘法mat时:d*f为矩阵的乘法的乘积,multiply(d,f)为对应元素的乘积dot(d,f)為矩阵的乘法的乘积。
 
 
 
 
3.当相乘的既有数组array又有矩阵的乘法mat时:混合时默认的是矩阵的乘法乘法,既d*f为矩阵的乘法的乘积multiply(d,f)为对应元素的塖积,dot(d,f)为矩阵的乘法的乘积
 
 
 
 
4.运算时最好进行矩阵的乘法的运算,因为矩阵的乘法可以方便的求转置、逆、迹

参考资料

 

随机推荐