矩阵快速幂
很常用的优化,可以处理所有的递推问题转为 \(O(k\log n)\) 级别时间复杂度。(\(k\) 为常数)
前置芝士:
其中矩阵乘法的时间复杂度是 \(O(n^3)\)(也有 \(O(n^{2.7})\)的做法),这就是常数的来源(不过这个常数并不会很大,是递推式项数的立方)。
如果想看这方面的例题可以看我的这篇题解。
接下来通过对斐波那契数列的讲解介绍矩阵快速幂。
众所周知,斐波那契数列有以下递推式:
\[\Large f_i=f_{i-1}+f_{i-2}
\]
正常递推求第 \(n\) 项的时间复杂度是 \(O(n)\),可是当 \(n\) 等于 1e9,这个复杂度无疑是要超时的,所以我们便要用到矩阵快速幂。
根据递推式我们构造出一个矩阵式子:
\[\begin{pmatrix}
1 & 1
\end{pmatrix} \times
\begin{pmatrix}
0 & 1\\
1 & 1
\end{pmatrix} =
\begin{pmatrix}
1 & 2
\end{pmatrix}
\]
然后……
\[\begin{pmatrix}
1 & 2
\end{pmatrix} \times
\begin{pmatrix}
0 & 1\\
1 & 1
\end{pmatrix} =
\begin{pmatrix}
1 & 2
\end{pmatrix}
\]
待补充

浙公网安备 33010602011771号