矩阵快速幂求解斐波那契问题
问题
求解斐波那契数列第NNN项
分析
对于求第NNN项的值,可通过矩阵快速幂将时间复杂度降至O(logN)O(logN)O(logN)。递归式F(N)=F(N−1)+F(N−2)F(N)=F(N-1)+F(N-2)F(N)=F(N−1)+F(N−2),是一个二阶的递推数列,可用矩阵乘法表示,且状态矩阵为2×22\times 22×2的矩阵:
(F(n),F(n−1))=(F(n−1),F(n−2))× ∣abcd∣(F(n), F(n-1)) = (F(n-1),F(n-2)) \times \ \left| \begin{array}{cc} a & b\\ c & d\\ \end{array} \right| (F(n),F(n−1))=(F(n−1),F(n−2))× ∣∣∣∣acbd∣∣∣∣
把前4项代入,F(1)==1,F(2)==1,F(3)==2,F(4)==3F(1) == 1, F(2) == 1, F(3) == 2, F(4) == 3F(1)==1,F(2)==1,F(3)==2,F(4)==3,可求出状态转移矩阵:
∣abcd∣=∣1110∣ \left| \begin{array}{cc} a & b\\ c & d\\ \end{array} \right| = \left| \begin{array}{cc} 1 & 1 \\ 1 & 0 \\ \end{array} \right| ∣∣∣∣acbd