问题描述
我正在尝试解决斐波那契数列的递推关系,但问题是它不是齐次的。
递推关系如下:
F(n) = F(n -1) + F(n -2) + Θ(n) for n > 1,and Θ(n) = c1n + c2,其中 c1,c2 > 0
初始条件:F(0) = 0,F(1) = 1
我试图通过将其视为具有常数系数的齐次线性二阶递归来解决它,但我不确定如何解决:
F(n) - F(n - 1) - F(n - 2) = c1n + c2
代替:
F(n) - F(n - 1) - F(n - 2) = 0
求解这种递推关系的最佳方法是什么?
解决方法
您可以使用以下不等式找到下限和上限:
2F(n-2) + Theta(n) < T(n) < 2F(n-1) + Theta(n)
您可以轻松证明下限和上限在 Theta(n 2^n)
中。因此,T(n) = Theta(n 2^n)
。
使用 Ansatz F1(n) = a*n + b
,您可以获得
F1(n) - F1(n-1) - F1(n-2) = -a*n + 3a - b = Θ(n) = c1*n + c2.
所以我们有 a = -c1
和 b = -3c1 - c2
,即
F1(n) = -c1*n - 3c1 - c2
解决给定的递归无需查看初始条件。将此与同构递归的解决方案 F0
结合(参见 Binet's formula)
F0(n) = d1*q1^n + d2*q2^n
用 q1/2 = (1 +/- sqrt(5))/2
获取
F(n) = F0(n) + F1(n) = d1*q1^n + d2*q2^n - c1*n - 3c1 - c2 .
现在可以通过求解该线性方程组来调整因子 d1
,d2
以匹配给定的初始条件
F(0) = d1 + d2 - 3c1 - c2 = 0
F(1) = d1*q1 + d2*q2 - 4c1 - c2 = 1
对于d1
,d2
。