算法复杂度的差分方程推导3(两种一般情况的兼容)
目前考虑到一种更复杂的情况,a(n)=s*a(n/2) + t^n +n^t
GO
变化为b(k)=s*b(k-1)+t^(2^k)+(2^k)^t ( 其中k为In n 和In 2)
GO
变化为b(k)=s*b(k-1)+(t^2)^k+(2^t)^k
在这里我们先推导一个一般行的公式:
a(n)=s*a(n-1)+s1^n+s2^n
GO
a(n-1)=s*a(n-2)+s1^(n-1)+s2^(n-1)
GO
s1*a(n-1)=s1*s*a(n-2)+s1*s1^(n-1)+s1*s2^(n-1)
Go
minus
a(n)-s*a(n-1)-s1*{ a(n-1) -s*a(n-2) }=(s2-s1)*s2^(n-1)
Go
similar
a(n-1)-s*a(n-2)-s1*{ a(n-2) -s*a(n-3) }=(s2-s1)*s2^(n-2)
Go
multiple
s2*{ a(n-1)-s*a(n-2) }-s2*s1*{ a(n-2) -s*a(n-3) }=s2*(s2-s1)*s2^(n-2)
Go
minus
x*(x-s)*(x-s1)*(x-s2)=0
这样求解b(k)就获得了新的工具,需要分别考虑s,s1和s2的值,这里不继续求值了。
在这里提出一个思维:可以对a(n)=s*a(n-1)+s1^n+s2^n+s3^n...按同样的思维推广,所以求解这类问题最终
以来与s1,s2,s3是否存在相同值的问题上;另外在前面我们将指数形式的函数转换为幂级数方式的思维也很
重要。