矩阵乘法是线性代数中最常见的问题之一,它在数值计算中有广泛的应用。
在很长一段时间内,矩阵乘法的算法就像它自身的定义一样简单直白。
>设A是m×n的矩阵,B是n×p的矩阵,那么C=AB是矩阵A和矩阵B的乘积,C是m×p的矩阵。
>即 C[i][j]=∑A[i][k]×B[k][j](k从1到n)
具体算法描述为:
for (int i = 1;i <= m;++i){
for (int j = 1;j <= p;++j){
for (int k = 1;k <= n;++k){
C[i][j] += A[i][k]*B[k][j];
}
}
}
该算法很简单直白,也很清晰的揭示矩阵乘法的定义。
从算法实现一眼就能得出该算法时间复杂度是O(N^3)(另矩阵全部是n×n的规模)
学过线性代数的我们知道矩阵乘法的另一种解法--分块矩阵!
由此可得
C11=A11B11+A12B21
C12=A11B12+A12B22
C21=A21B11+A22B21