百度定义为:
总结一下就是,如果A和B两个矩阵要相乘,A的列数要和B的行数相同的,其实矩阵就是线性代数中对多项式常量的一种抽象表达。
比如:A是2 * 80的矩阵,B是80*2的矩阵,得出的还是2*2的矩阵,简单说就是结果是A的行*B的列的矩阵,哪怕A的列是10000呢,B的行是10000,都不影响A*B的行列数,A的列只能等于B的行,否则就无法相乘。
所谓矩阵链乘法就是:A*B*C*D*E*F......
那A*B*C的的行列到底是多少呢,其实就是A的行*C的列,中间的根本对结果的行列树无法影响,但是根据乘法的结合律A*B*C,可以是先算A*B,再算*C,先说B*C再算*A,就是(A*B)*C或者A*(B*C),这就有个取舍的问题,也许B*C得到的行列式很小,这样乘法的计算次数比前者要少很多。
这就引入了动态规划算法对A*B*C到底扩上哪个计算次数较少的话题。
上面的我也看不懂,,只是最近遇到个面试题总结下:
我的理解只用于可以简单比较他们的大小就成了,,,不要太纠结太多,,不是专业干这个的,稍稍了解下九乘,以后遇到这类问题不至于陌生:
例1: (看不懂的参考例2)
以两个矩阵相乘为例,A1*A2,A1和A2为两个矩阵,假设A1的行列数是p*q,A2的行列数是q*r。注意这里由于是A1乘以A2,所以A1的列数要等于A2的行数,否则无法做矩阵乘法,满足上述条件的矩阵,我们称之为“相容”的。那么对于A1*A2而言,我们需要分别执行p*r次对应A1的行元素乘以A2的列元素,根据线性代数知识,不难得出我们一共需要执行p*q*r次乘法。
对于两个矩阵相乘,一旦矩阵的大小确定下来了,