基本
一个 n × m n \times m n×m 和 m × p m \times p m×p 的矩阵相乘的时间复杂度为 O ( n m p ) O(nmp) O(nmp),得到的结果为 n × p n\times p n×p 的矩阵。
由于矩阵乘法有结合律,因此对于一个 n n n 阶方阵 A A A,可以利用快速幂在 O ( n 3 log k ) O(n^3 \log k) O(n3logk) 的时间内计算 A k A^k Ak。
Strassen 矩阵乘法
应用了分治的想法,把原来的 n × n n \times n n×n 和 n × n n \times n n×n 的矩阵相乘,优化成了 7 个 n 2 × n 2 \frac{n}{2} \times \frac{n}{2} 2n×2n 的矩阵相乘。
由 Master Theorem, T ( n ) = 7 T ( n 2 ) + O ( n ) T(n) = 7T\left( \frac{n}{2}\right) + O(n) T(n)=7T(2n)+O(n) 的解为 O ( n log 2 7 ) O(n^{\log_2 7}) O(nlog27)。
算法细节参见其他相关材料。
循环矩阵乘法
循环矩阵在计算一类和马尔可夫链有关的概率问题时会被用到。
n n n 阶循环矩阵是满足下面条件的 n n n 阶方阵:每一行都由上一行循环右移一位得到。如 3 3 3 阶循环矩阵:
[ a 1 a 2 a 3 a 3 a