主定理
T(n)=aT(bn)+O(nd)
T(n)=⎩⎪⎪⎨⎪⎪⎧O(nlogba)O(ndlgn)O(nd)a>bda=bda<bd
一阶线性递推式
an=p⋅an−1+q(p=0,1)
生成函数
用生成函数做,令 {ai} 的生成函数为 F(x)
F(x)=a0+a1x+a2x2+⋯
F(x)=i=0∑∞aixi=a0+i=1∑∞(pai−1+q)xi=a0+pxi=1∑∞ai−1xi−1+qi=1∑∞xi=a0+pxF(x)+q1−xx=1−pxa0+(1−px)(1−x)qx=1−pxa0+1−x1−pq+1−pxp−1q=i=0∑∞a0pixi+i=0∑∞1−pqxi+i=0∑∞p−1qpixi=i=0∑∞(1−pq+(a0+p−1q)pi)xi
于是我们得到
an=(a0+p−1q)pn+1−pq
特征方程
上面的生成函数推导过于繁琐,于是我们引入特征方程来便于背公式。对于递推式 an=p⋅an−1+q 我们写出它的特征方程:
x=px+q
解得 x0=1−pq,然后掏出结论:
an=(a0−x0)pn+x0
二阶线性递推式
an=p⋅an−1+q⋅an−2
生成函数
别想了,太烦了
特征方程
根据式子列出特征方程:
x2−px−q=0
得两根 x1,x2 ,分讨:
-
x1=x2 数列 {ai} 通项为:
an=Ax1n+Bx2n
A,B 为常数,将 a0,a1,x1,x2 带入求解,即求以下方程:
{A+B=a0x1A+x2B=a1
-
x1=x2 数列 {ai} 通项为:
an=(A+Bn)x1n
同样 A,B 为常数可由 x1,a0,a1 求出。