一、矩阵定义
在数学中,矩阵是一个按照长方阵列排列的复数或实数集合。一个 n×m 的矩阵一般这样表示:
所谓方阵,就是一个 n×n 的矩阵,也称作 n 阶矩阵。由于行数和列数相等,所以方阵的幂是有意义的。
方阵的幂是指,A 是一个方阵,将 A 连乘 n 次,即:C=An。若不是方阵则无法进行乘幂运算。
二、矩阵的乘法运算
设 A,B 是两个矩阵,令 C=A×B。
如果 A 是 n×p 的矩阵,B是 m×p 的矩阵,A 和 B 的乘积 C 是一个 n×m 的矩阵。
$C_{i,j}=A_{i,1} \times B_{1,j} + A_{i,2} \times B_{2,j} + A_{i,3} \times B_{3,j} + \cdots +A_{i,p} \times B_{p,j} = \sum_{k=1}^p A_{i,k} \times B_{k,j}$
即乘积 C 的第 i 行第 j 列的元素 Ci,j 等于矩阵 A 的第 i 行的元素与矩阵 B 的第 j 列对应元素乘积之和。
$\begin{bmatrix}1&4\\2&5\\3&6\end{bmatrix} \times \begin{bmatrix}1&2&3\\4&5&6\end{bmatrix}=\begin{bmatrix}1 \times 1+4\times4&1\times2+4\times5&1\times3+4\times6\\2\times1+5\times4&2\times2+5\times5&2\times3+5\times6\\3\times1+6\times4&3\times2+6\times5&3\times4+6\times6\end{bmatrix}=\begin{bmatrix}17&22&27\\22&29&36\\27&36&45\end{bmatrix}$
三、矩阵乘法结合律
$D_{i,j}=\sum_{x=1}^qT_{i,x}\times C_{x,j}$
$D_{i,j}=\sum_{x=1}^q(\sum_{y=1}^pA_{i,y}\times B_{y,x})\times C_{x,j}$
$D_{i,j}=\sum_{x=1}^q\sum_{y=1}^pA_{i,y}\times B_{y,x}\times C_{x,j}$
$E_{i,j}=\sum_{x=1}^p \sum_{y=1}^q A_{i,x} \times B_{x,y} \times C_{y,j}$
故 $D=E$。
四、矩乘优化线性递推
「POJ 3070」斐波那契数列第n项
在斐波那契数列中,F0=1,F1=1,Fn=Fn-1+Fn-2(n>1)。现给定整数 n,m(0≤n≤2*109,m=10000),求 Fn mod m。
假设有一个 1×2 的矩阵 $\begin{bmatrix}F_{n-1}&F_n\end{bmatrix}$。
$\begin{bmatrix}F_{n-1}&F_n\end{bmatrix} \times \begin{bmatrix}0&1\\1&1 \end{bmatrix}=\begin{bmatrix}F_n&F_{n-1}+F_n\end{bmatrix}=\begin{bmatrix}F_n&F_{n+1 }\end{bmatrix}$
「Luogu P5110」块速递推
(持续更新中……)