1

我最近学会了通过矩阵求幂找出第 n 个斐波那契数列。但我被困在两个关系上:

1) F(n) = F(n−1) + n            
2) F(n) = F(n−1) + 1/n    

有没有像我们有矩阵博览会一样在 O(logn) 时间内解决这些问题的有效方法。斐波那契数列?

4

2 回答 2

3

第一个显然等于:

F(n) = F(0) + n*(n+1)/2

并且可以在 O(1) 时间内计算出来。第二个,看这里


假设你想用矩阵求幂来计算第一个,就像你对斐波那契数列所做的那样,这里是你应该使用的矩阵:

    | 1 1 0 |
A = | 0 1 1 |
    | 0 0 1 |

如果您考虑以下等式,则矩阵的选择是显而易见的:

| F(n+1) |   | 1 1 0 |   | F(n) |
|  n+1   | = | 0 1 1 | * |  n   |
|   1    |   | 0 0 1 |   |  1   |

当然,起始向量必须是:(F(0), 0, 1)

对于第二个系列,这并不容易,因为您希望逐渐计算 value 1/n,而不能以这种方式线性计算。我想这是做不到的,但我不会试图证明这一点。

于 2013-09-06T17:41:39.607 回答
0

第一个可以计算出来,O(1)因为这是一个算术级数,总和是n*(n-1)/2

第二个是谐波级数,无法有效计算,但您可以将其近似为O(1)

在此处输入图像描述

其中第一个是0.57721566490153286060,第二个是大约1/(2k)

于 2015-12-16T10:18:12.700 回答