在 O(logn) 时间和 space 复杂度中找到第 N 个斐波那契数?

Finding Nth Fibonacci Number in O(logn) time and space complexity?

我想在 O(logn) 时间内找到第 N 个斐波那契数。我们可以使用 Fibonacci Q 矩阵进行 O(logn) 求解。

但是,还有一个 solution by using the Cassini and Catalan identities 可以在 O(logn) 时间内找到第 N 个斐波那契数列。它声明如下:

If n is even then k = n/2: F(n) = [2*F(k-1) + F(k)]*F(k)

If n is odd then k = (n + 1)/2: F(n) = F(k)*F(k) + F(k-1)*F(k-1)

我只能理解到标记方程的证明:

但是,我不理解下面的方程式和最终导出的方程式。

谁能详细解释一下?提前致谢。

我相信这个想法是采用这个矩阵乘积

 |1 1|^n   |1 1|^m    |1 1|^{m+n}
 |1 0|   x |1 0|    = |1 0|

并利用可以将其重写为

的事实
 |F_{n+1}    F_n    |   |F_{m+1}    F_m    |   |F_{m+n+1}    F_{m+n}  |
 |                  | x |                  | = |                      |
 |F_n        F_{n-1}|   |F_m        F_{m-1}|   |F_{m+n}      F_{m+n-1}|

现在,使用标准矩阵乘积公式将左边的矩阵相乘。你得到这个结果:

|F_{n+1} F_{m+1} + F_n F_m    F_{n+1}F_m + F_n F_{m-1}  |   |F_{m+n+1}    F_{m+n}  |
|                                                       | = |                      |
|F_n F_{m+1} + F_{n-1} F_m    F_n F_m + F_{n-1} F_{m-1} |   |F_{m+n}      F_{m+n-1}|

这给出了这四个等式:

  • Fn+1Fm+1 + FnFm = Fm+n+1
  • Fn+1Fm + FnF m-1 = Fm+n
  • FnFm+1 + Fn-1Fm = Fm+n
  • FnFm + Fn-1F m-1 = Fm+n-1

剩下的等式通过代入特定的 m 和 n 值而消失。