矩阵快速幂

很常用的优化,可以处理所有的递推问题转为 \(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} \]

待补充

posted @ 2022-10-04 22:36  iFear  阅读(18)  评论(0)    收藏  举报
Live2D