递归关系逆向依赖于n

时间:2013-09-06 17:35:38

标签: algorithm recurrence

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

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

有没有有效的方法来解决这些问题     O(LOGN) 像我们有矩阵博览会的时间。对于斐波那契系列?

2 个答案:

答案 0 :(得分:3)

第一个显然等于:

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

并且可以在O(1)时间内计算。对于第二个,请查看here


假设您想要使用矩阵求幂计算第一个,就像使用Fibonacci系列一样,这里是您应该使用的矩阵:

    | 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)

对于第二个系列,这并不容易,因为您希望逐渐计算值1/n,这不能以这种方式线性计算。我想这不可能,但我不会试图证明它。

答案 1 :(得分:0)

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

第二个是harmonic series,无法有效计算,但您可以在O(1)中使用以下内容进行近似计算:

enter image description here

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