学习笔记 - 矩阵快速幂
wangjiajian
·
·
算法·理论
矩阵乘法
设 A 为 P \times M 的矩阵,B 为 M \times Q 的矩阵,设矩阵 C 为矩阵 A 与 B 的乘积,有 C_{i,j} = \sum_{k=1}^M A_{i,k}B_{k,j}。即 C 的每一位等于 A 中同一行的与 B 中同一列的诸乘积的和。(记忆:“左行右列”。)
矩阵乘法满足结合律,且在信息学竞赛中矩阵一般为方阵,于是可以直接用快速幂优化。
应用之例
已知 f_i 等于一个多项式,构造矩阵要将该多项式中的每个带变量的项置于矩阵中(如 f_i-1, i^2 等,有时常数项也要置 1)。
已知 f_i = f_{i - 1} + f_{i - 2} 且 f_1 = f_2 = 1,求 f_n。
f_i & f_{i-1}
\end{bmatrix}$ 为 $\begin{bmatrix}
f_{i-1} & f_{i-2}
\end{bmatrix}$ 乘以某矩阵 $X$ 的积,要求 $X$。
由 $X$ 的行数必须与左边的列数相等为(即“左行”相反),列数必须与结果相等(即“右列”),于是确定 $X$ 为 $2 \times 2$ 的矩阵。
使用待定系数法,设 $X = \begin{bmatrix}
a & b\\
c & d
\end{bmatrix}$,代入原式,则有 $f_n = f_{n-1}*a + f{n-2} * c$ 且 $f_{n-1} = f_{n-1}*b + f_{n-2}*d$,解得 $a = 1, b = 1, c = 1, d = 0
1 & 1\\
1 & 0
\end{bmatrix}
那么通过 \begin{bmatrix}
f_2 & f_1
\end{bmatrix} 乘以 X^{n-2} 即可快速求得 f_n