Algorithm 线性递归算法中的矩阵求幂

Algorithm 线性递归算法中的矩阵求幂,algorithm,recursion,matrix,Algorithm,Recursion,Matrix,我试图用线性递归来解决这个问题。然而,由于约束很大,我不得不使用矩阵求幂。 我读过 因此,根据它,可以建立方程 ft(n)=ft(n-1)+ft(n-2)+g(n) ft(0)=0, ft(0)=1 g(n) =g(n-1)+1 g(1)=0 但现在我对如何形成A*M=B形式的矩阵A和B感到困惑。在上面提到的blogspot链接中,它是作为类型7给出的,但我很难理解它。定义第三个序列fut,Fibonacci untwist,如下所示 fut(n)=英尺(n

我试图用线性递归来解决这个问题。然而,由于约束很大,我不得不使用矩阵求幂。 我读过 因此,根据它,可以建立方程

ft(n)=ft(n-1)+ft(n-2)+g(n)    ft(0)=0, ft(0)=1
g(n) =g(n-1)+1                g(1)=0

但现在我对如何形成A*M=B形式的矩阵A和B感到困惑。在上面提到的blogspot链接中,它是作为类型7给出的,但我很难理解它。

定义第三个序列fut,Fibonacci untwist,如下所示

fut(n)=英尺(n)+(n+2)

然后

fut(n)=ft(n)+n+1=ft(n-1)+ft(n-2)+(n-1)+(n+2)=fut(n-2)+fut(n-1)

所以fut只是斐波那契递归的另一个解,所以

fut(n)=f(n-1)*fut(0)+f(n)*fut(1)=2*f(n-1)+4*f(n)=2*f(n)+2*f(n+1)=2*f(n+2)

最后

英尺(n)=2*f(n+2)-(n+2)

测试:


实际上,最后一行是第二行和第三行的差。

我不明白你是如何得到这个方程fut(n)=f(n-1)*fut(0)+f(n)*fut(1)的。不应该是fut(n)=ft(n)+n+1。f(n-1)和f(n)构成斐波那契递归解空间的基础。不,常数是这样正确的,我仍然没有得到f(n-1)和f(n-2)的部分。
    f(n):   0  1  1  2  3  5  8 13 21 34
2*f(n+2):   2  4  6 10 16 26 42 68
     n+2:   2  3  4  5  6  7  8  9
   ft(n):   0  1  2  5 10 19 34 59