Recurrence relation 用一个数列前面的项来定义后面的项。当问题能自然地拆成一个规模更小的同类问题时,这种表达方式就很有用。
Recursive 与 explicit definitions
设 ( a n ) n ∈ N (a_n)_{n\in\mathbb N} ( a n ) n ∈ N 是一个数列,读作“以自然数为下标的数列 a n a_n a n ”。First-order recurrence 只用到前一项,需要给出两部分:
一个 base case ,例如 a 0 = c a_0=c a 0 = c ;
一条 recurrence rule ,例如
a n = F ( n , a n − 1 ) ( n ≥ 1 ) . a_n=F(n,a_{n-1})\qquad(n\ge1).
a n = F ( n , a n − 1 ) ( n ≥ 1 ) .
这里 n n n 是下标,a n − 1 a_{n-1} a n − 1 是前一项,F F F 是用来计算下一项的规则。
Explicit formula ,也叫 closed form ,直接根据 n n n 给出 a n a_n a n :
a n = φ ( n ) . a_n=\varphi(n).
a n = φ ( n ) .
符号 φ \varphi φ 是希腊字母 phi,读作“fee”。Recurrence 让我们逐项往后算;closed form 则让我们直接算出任意下标对应的项。
例:factorials
Factorial 数列的 base case 是
0 ! = 1 0!=1
0 ! = 1
recurrence 是
n ! = n ( n − 1 ) ! ( n ≥ 1 ) . n!=n(n-1)!\qquad(n\ge1).
n ! = n ( n − 1 )! ( n ≥ 1 ) .
例如,
4 ! = 4 ⋅ 3 ! = 4 ⋅ 3 ⋅ 2 ! = 4 ⋅ 3 ⋅ 2 ⋅ 1 ! = 4 ⋅ 3 ⋅ 2 ⋅ 1 ⋅ 0 ! = 24. \begin{aligned}
4!
&=4\cdot3!\\
&=4\cdot3\cdot2!\\
&=4\cdot3\cdot2\cdot1!\\
&=4\cdot3\cdot2\cdot1\cdot0!\\
&=24.
\end{aligned}
4 ! = 4 ⋅ 3 ! = 4 ⋅ 3 ⋅ 2 ! = 4 ⋅ 3 ⋅ 2 ⋅ 1 ! = 4 ⋅ 3 ⋅ 2 ⋅ 1 ⋅ 0 ! = 24.
每代入一次,下标就减小一步,直到回到 base case。
例:geometric recurrence
假设
{ a 0 = c , a n = r a n − 1 ( n ≥ 1 ) , \begin{cases}
a_0=c,\\
a_n=r a_{n-1}\qquad(n\ge1),
\end{cases}
{ a 0 = c , a n = r a n − 1 ( n ≥ 1 ) ,
其中 c c c 是初值,r r r 是固定的乘数。展开前几项得到
a 1 = c r , a 2 = c r 2 , a 3 = c r 3 . a_1=cr,
\qquad
a_2=cr^2,
\qquad
a_3=cr^3.
a 1 = cr , a 2 = c r 2 , a 3 = c r 3 .
由此得到 closed form:
a n = c r n . \boxed{a_n=cr^n}.
a n = c r n .
检验一个候选 closed form 时,要同时检查它是否满足 base case 和 recurrence。这两项检查能确认它给出的确实是同一个数列。若乘数为零,初值仍按定义取给定值,之后各项都为零;不必通过零的零次幂来确定初值。
用 recurrence 计数:Tower of Hanoi
Tower of Hanoi 有三根柱子和 n n n 个大小不同的圆盘。起初所有盘子都在第一根柱子上,最大的在最底下。目标是在遵守两条规则的前提下,把整叠盘子移到第三根柱子:
设 h n h_n h n 表示移动 n n n 个盘子所需的最少合法步数。没有盘子时不需要移动,因此 base case 是
h 0 = 0. h_0=0.
h 0 = 0.
当 n ≥ 1 n\ge1 n ≥ 1 时,可以这样完成:
把上面的 n − 1 n-1 n − 1 个盘子移到中间的柱子,需要 h n − 1 h_{n-1} h n − 1 步;
把最大的盘子移到目标柱子,需要一步;
把 n − 1 n-1 n − 1 个小盘移到大盘上,再用 h n − 1 h_{n-1} h n − 1 步。
One legal solution for n n n disks Tower of Hanoi recurrence Four states show the top n minus one disks moving to the middle peg, the largest disk moving to the final peg, and the top disks moving onto it. The move count is h sub n minus one, plus one, plus h sub n minus one. Start
Move the top n − 1 n-1 n − 1 disks Move the largest disk
Repeat the smaller problem
h n = h n − 1 + 1 + h n − 1 = 2 h n − 1 + 1 h_n = h_{n-1} + 1 + h_{n-1} = 2h_{n-1} + 1 h n = h n − 1 + 1 + h n − 1 = 2 h n − 1 + 1 Solving the n n n -disk puzzle contains two copies of the same problem with n − 1 n-1 n − 1 disks, separated by one move of the largest disk.
这个方法给出了一个可行的步数,也确实达到了最少步数。最大盘第一次移动前,所有小盘必须先移到另一根柱子上;最大盘最后一次移动到目标柱子后,所有小盘又必须从另一根柱子移到它上面。这两段各至少需要一次小规模问题的最少步数,而最大盘至少要移动一次。因此,
h n = 2 h n − 1 + 1 . \boxed{h_n=2h_{n-1}+1}.
h n = 2 h n − 1 + 1 .
最初几项是
h 0 = 0 , h 1 = 1 , h 2 = 3 , h 3 = 7 , h 4 = 15 , h 5 = 31. h_0=0,
\quad h_1=1,
\quad h_2=3,
\quad h_3=7,
\quad h_4=15,
\quad h_5=31.
h 0 = 0 , h 1 = 1 , h 2 = 3 , h 3 = 7 , h 4 = 15 , h 5 = 31.
这些值都比相应的二的幂少一。要推导这个规律,在 recurrence 两边都加上 1 1 1 :
h n + 1 = 2 ( h n − 1 + 1 ) . h_n+1=2(h_{n-1}+1).
h n + 1 = 2 ( h n − 1 + 1 ) .
令 b n = h n + 1 b_n=h_n+1 b n = h n + 1 ,则 b 0 = 1 b_0=1 b 0 = 1 ,且 b n = 2 b n − 1 b_n=2b_{n-1} b n = 2 b n − 1 。这是 geometric recurrence,所以 b n = 2 n b_n=2^n b n = 2 n 。因此,
h n = 2 n − 1 . \boxed{h_n=2^n-1}.
h n = 2 n − 1 .
传统的 64 个盘子的版本需要
h 64 = 2 64 − 1 = 18,446,744,073,709,551,615 h_{64}=2^{64}-1
=18{,}446{,}744{,}073{,}709{,}551{,}615
h 64 = 2 64 − 1 = 18 , 446 , 744 , 073 , 709 , 551 , 615
步。若每秒移动一次,就需要约 1.84 × 10 19 1.84\times10^{19} 1.84 × 1 0 19 秒,也就是 5.85 × 10 11 5.85\times10^{11} 5.85 × 1 0 11 年。以宇宙年龄约 138 亿年估算,这大约是它的 42 倍。
Linear first-order recurrences
Linear first-order recurrence 的形式为
{ a 0 = c , a n = f ( n ) a n − 1 + g ( n ) ( n ≥ 1 ) , \begin{cases}
a_0=c,\\
a_n=f(n)a_{n-1}+g(n)\qquad(n\ge1),
\end{cases}
{ a 0 = c , a n = f ( n ) a n − 1 + g ( n ) ( n ≥ 1 ) ,
其中 f ( n ) f(n) f ( n ) 和 g ( n ) g(n) g ( n ) 是已知函数。g ( n ) g(n) g ( n ) 称为 nonhomogeneous term ,也叫 forcing term 。
考虑
{ a 0 = 3 , a n = 2 a n − 1 + n . \begin{cases}
a_0=3,\\
a_n=2a_{n-1}+n.
\end{cases}
{ a 0 = 3 , a n = 2 a n − 1 + n .
逐项计算得到
3 , 7 , 16 , 35 , 74 , … 3,7,16,35,74,\ldots
3 , 7 , 16 , 35 , 74 , …
为了求出 closed form,可以先求去掉 forcing term 后的 homogeneous solution,再找一个能满足完整 recurrence 的 particular solution。
Homogeneous recurrence
去掉 forcing term g ( n ) g(n) g ( n ) ,得到对应的 homogeneous recurrence :
h n = f ( n ) h n − 1 . h_n=f(n)h_{n-1}.
h n = f ( n ) h n − 1 .
在这个例子中,它是
h n = 2 h n − 1 , h_n=2h_{n-1},
h n = 2 h n − 1 ,
通解为
h n = C ⋅ 2 n , h_n=C\cdot2^n,
h n = C ⋅ 2 n ,
其中 C C C 是任意常数。
Particular solution 是满足完整 recurrence 的某一个数列,这里暂不要求它满足指定的初值。设 ( p n ) (p_n) ( p n ) 和 ( q n ) (q_n) ( q n ) 是两个 particular solutions。把它们的等式相减,forcing term 就会抵消:
p n − q n = f ( n ) p n − 1 + g ( n ) − ( f ( n ) q n − 1 + g ( n ) ) = f ( n ) ( p n − 1 − q n − 1 ) . \begin{aligned}
p_n-q_n
&=f(n)p_{n-1}+g(n)-\bigl(f(n)q_{n-1}+g(n)\bigr)\\
&=f(n)(p_{n-1}-q_{n-1}).
\end{aligned}
p n − q n = f ( n ) p n − 1 + g ( n ) − ( f ( n ) q n − 1 + g ( n ) ) = f ( n ) ( p n − 1 − q n − 1 ) .
所以,任意两个 particular solutions 的差都满足 homogeneous recurrence。只要找到一个 particular solution p n p_n p n ,每个解都能写成
a n = p n + h n . \boxed{a_n=p_n+h_n}.
a n = p n + h n .
求 particular solution
对于
a n = 2 a n − 1 + n , a_n=2a_{n-1}+n,
a n = 2 a n − 1 + n ,
forcing term g ( n ) = n g(n)=n g ( n ) = n 是一次多项式。因此先尝试同样形式的 particular solution:
p n = A n + B , p_n=An+B,
p n = A n + B ,
其中 A A A 、B B B 是待定常数。把这个形式代入 recurrence:
A n + B = 2 ( A ( n − 1 ) + B ) + n = ( 2 A + 1 ) n + ( − 2 A + 2 B ) . \begin{aligned}
An+B
&=2\bigl(A(n-1)+B\bigr)+n\\
&=(2A+1)n+(-2A+2B).
\end{aligned}
A n + B = 2 ( A ( n − 1 ) + B ) + n = ( 2 A + 1 ) n + ( − 2 A + 2 B ) .
比较 n n n 的系数和常数项,得到
A = 2 A + 1 , B = − 2 A + 2 B . A=2A+1,
\qquad
B=-2A+2B.
A = 2 A + 1 , B = − 2 A + 2 B .
因此,
A = − 1 , B = − 2 , A=-1,
\qquad
B=-2,
A = − 1 , B = − 2 ,
所以一个 particular solution 是
p n = − n − 2. p_n=-n-2.
p n = − n − 2.
再加上 homogeneous solution:
a n = − n − 2 + C ⋅ 2 n . a_n=-n-2+C\cdot2^n.
a n = − n − 2 + C ⋅ 2 n .
最后使用 base case a 0 = 3 a_0=3 a 0 = 3 :
3 = − 2 + C , C = 5. 3=-2+C,
\qquad C=5.
3 = − 2 + C , C = 5.
得到 closed form:
a n = 5 ⋅ 2 n − n − 2 . \boxed{a_n=5\cdot2^n-n-2}.
a n = 5 ⋅ 2 n − n − 2 .
代入 n = 0 n=0 n = 0 得到 a 0 = 3 a_0=3 a 0 = 3 ;再把公式代入 recurrence,也能验证 a n = 2 a n − 1 + n a_n=2a_{n-1}+n a n = 2 a n − 1 + n 。
下面选择 trial form 的方法适用于 constant-coefficient recurrence
a n = r a n − 1 + g ( n ) , a_n=r a_{n-1}+g(n),
a n = r a n − 1 + g ( n ) ,
其中 r r r 是常数。在这种情况下,可以根据 g ( n ) g(n) g ( n ) 的形式来选择 p n p_n p n :
Forcing term g ( n ) g(n) g ( n ) Trial particular solution p n p_n p n 次数为 d d d 的多项式 A 0 + A 1 n + ⋯ + A d n d A_0+A_1n+\cdots+A_dn^d A 0 + A 1 n + ⋯ + A d n d c b n cb^n c b n A b n Ab^n A b n 多项之和 各项对应的 trial form 相加 多项式与 b n b^n b n 的乘积 同次数的多项式乘以 b n b^n b n
例如,如果
g ( n ) = 2 n + n 2 3 n , g(n)=2^n+n^2 3^n,
g ( n ) = 2 n + n 2 3 n ,
先尝试
p n = A 2 n + ( B + C n + D n 2 ) 3 n . p_n=A2^n+(B+Cn+Dn^2)3^n.
p n = A 2 n + ( B + C n + D n 2 ) 3 n .
还需要检查 trial form 是否与 homogeneous solution 重叠。如果重叠,代入时相关项会抵消,就无法匹配 forcing term。此时把 trial form 乘以 n n n ;必要时乘以 n n n 的更高次幂,直到消除重叠。若 g ( n ) g(n) g ( n ) 是几项之和,只调整其中重叠的那一部分。
对这种 constant-coefficient 情况,完整步骤是:
解对应的 homogeneous recurrence,得到 h n h_n h n ;
根据 g ( n ) g(n) g ( n ) 的形式选择 trial p n p_n p n ;
把 p n p_n p n 代入原 recurrence,解出待定系数;
写出 a n = p n + h n a_n=p_n+h_n a n = p n + h n ;
用 base case 确定剩下的常数。
Higher-order recurrences
Order 为 2 2 2 的 recurrence 可以用到前两项,因此需要两个 base cases。一个常见的例子是下标平移后的 Fibonacci sequence:
{ f 0 = 1 , f 1 = 2 , f n = f n − 1 + f n − 2 ( n ≥ 2 ) . \begin{cases}
f_0=1,\\
f_1=2,\\
f_n=f_{n-1}+f_{n-2}\qquad(n\ge2).
\end{cases}
⎩ ⎨ ⎧ f 0 = 1 , f 1 = 2 , f n = f n − 1 + f n − 2 ( n ≥ 2 ) .
逐项计算得到
1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , … , 1,2,3,5,8,13,21,34,\ldots,
1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , … ,
特别地,
f 12 = 377. f_{12}=377.
f 12 = 377.
这个下标约定对应一种兔群模型:从一对已经能繁殖的兔子开始,并把第零个月已有的这一对也计入。Recurrence 适合按顺序计算各项,而 characteristic equation 能帮助我们直接写出 f n f_n f n 的公式。
Characteristic equations
对 constant coefficients 的 homogeneous second-order recurrence,
a n = C 1 a n − 1 + C 2 a n − 2 , a_n=C_1a_{n-1}+C_2a_{n-2},
a n = C 1 a n − 1 + C 2 a n − 2 ,
可以借鉴一阶 geometric recurrence,尝试 exponential solution a n = x n a_n=x^n a n = x n 。代入得到
x n = C 1 x n − 1 + C 2 x n − 2 . x^n=C_1x^{n-1}+C_2x^{n-2}.
x n = C 1 x n − 1 + C 2 x n − 2 .
当 x x x 非零时,两边除以 x n − 2 x^{n-2} x n − 2 ,得到 characteristic equation 。以下按真正二阶的情形讨论,即最早一项的系数 C 2 C_2 C 2 非零;这样 characteristic roots 也不会为零。
x 2 − C 1 x − C 2 = 0. x^2-C_1x-C_2=0.
x 2 − C 1 x − C 2 = 0.
对 Fibonacci recurrence,方程是
x 2 − x − 1 = 0. x^2-x-1=0.
x 2 − x − 1 = 0.
它的两个根为
φ = 1 + 5 2 , φ ˉ = 1 − 5 2 . \varphi=\frac{1+\sqrt5}{2},
\qquad
\bar\varphi=\frac{1-\sqrt5}{2}.
φ = 2 1 + 5 , φ ˉ = 2 1 − 5 .
φ \varphi φ 是 golden ratio。另一个根 φ ˉ \bar\varphi φ ˉ 为负数,而且其 absolute value 小于一。
单独一个 exponential solution 通常不能同时满足两个独立的 base cases。若有两个不同的 characteristic roots,则每个解都是它们对应解的 linear combination:
f n = A φ n + B φ ˉ n . f_n=A\varphi^n+B\bar\varphi^n.
f n = A φ n + B φ ˉ n .
两个 base cases 给出方程组
1 = A + B , 2 = A φ + B φ ˉ . 1=A+B,
\qquad
2=A\varphi+B\bar\varphi.
1 = A + B , 2 = A φ + B φ ˉ .
解得
A = 5 + 3 2 5 , B = 5 − 3 2 5 . A=\frac{\sqrt5+3}{2\sqrt5},
\qquad
B=\frac{\sqrt5-3}{2\sqrt5}.
A = 2 5 5 + 3 , B = 2 5 5 − 3 .
因此,
f n = 5 + 3 2 5 φ n + 5 − 3 2 5 φ ˉ n . \boxed{
f_n=
\frac{\sqrt5+3}{2\sqrt5}\varphi^n
+
\frac{\sqrt5-3}{2\sqrt5}\bar\varphi^n
}.
f n = 2 5 5 + 3 φ n + 2 5 5 − 3 φ ˉ n .
也可以写成
f n = φ n + 2 − φ ˉ n + 2 5 . f_n=\frac{\varphi^{n+2}-\bar\varphi^{n+2}}{\sqrt5}.
f n = 5 φ n + 2 − φ ˉ n + 2 .
由于 φ > 1 \varphi>1 φ > 1 ,而 ∣ φ ˉ ∣ < 1 |\bar\varphi|<1 ∣ φ ˉ ∣ < 1 ,长期增长由第一项决定;第二项的 absolute value 会逐渐减小,符号则不断交替。
Fibonacci growth from characteristic roots Shifted Fibonacci growth and conjugate-root correction The upper panel compares shifted Fibonacci values with the dominant characteristic-root term. The lower panel magnifies the small conjugate-root correction, which alternates in sign and shrinks toward zero. Sequence growth Alternating correction term 0 2 4 6 8 10 12 0 100 200 300 400 -0.2 0.0 0.2 Index f n recurrence values A φ n dominant-root term B φ ˉ n conjugate-root correction The root φ is greater than one. In the upper panel, A φ n controls the visible growth while the points mark the exact recurrence values. The lower panel magnifies B φ ˉ n , showing why the correction alternates in sign and shrinks toward zero.
另一个 characteristic-root 例题
考虑
{ a n = a n − 1 + 2 a n − 2 , a 0 = 2 , a 1 = 7. \begin{cases}
a_n=a_{n-1}+2a_{n-2},\\
a_0=2,\\
a_1=7.
\end{cases}
⎩ ⎨ ⎧ a n = a n − 1 + 2 a n − 2 , a 0 = 2 , a 1 = 7.
Characteristic equation 是
x 2 − x − 2 = 0 , x^2-x-2=0,
x 2 − x − 2 = 0 ,
两个根为 r 1 = − 1 r_1=-1 r 1 = − 1 和 r 2 = 2 r_2=2 r 2 = 2 。因此,
a n = A ( − 1 ) n + B 2 n . a_n=A(-1)^n+B2^n.
a n = A ( − 1 ) n + B 2 n .
由 base cases 得到
2 = A + B , 7 = − A + 2 B , 2=A+B,
\qquad
7=-A+2B,
2 = A + B , 7 = − A + 2 B ,
所以 A = − 1 A=-1 A = − 1 、B = 3 B=3 B = 3 。Closed form 为
a n = − ( − 1 ) n + 3 ⋅ 2 n . \boxed{a_n=-(-1)^n+3\cdot2^n}.
a n = − ( − 1 ) n + 3 ⋅ 2 n .
其他情况有什么变化
Repeated root: 若 characteristic polynomial 只有一个非零 double root r r r ,两个独立的 basis solutions 是 r n r^n r n 和 n r n nr^n n r n ,因此通解为 ( A + B n ) r n (A+Bn)r^n ( A + B n ) r n 。
Complex roots: 同样的方法也适用于 complex numbers;一对 conjugate roots 对应的解可以组合成实数的 sine-cosine 形式。
Nonhomogeneous recurrence: 先解 homogeneous recurrence,再找一个 particular solution,然后相加:a n = h n + p n a_n=h_n+p_n a n = h n + p n 。
Order 大于二: 方法仍然适用,但 characteristic polynomial 的次数与 recurrence 的 order 相同。例如,
a n = a n − 1 + a n − 2 − a n − 3 a_n=a_{n-1}+a_{n-2}-a_{n-3}
a n = a n − 1 + a n − 2 − a n − 3
给出
x 3 − x 2 − x + 1 = 0. x^3-x^2-x+1=0.
x 3 − x 2 − x + 1 = 0.
Characteristic polynomial 方法要求 recurrence 是 linear 且具有 constant coefficients。Variable coefficients 或 nonlinear terms 需要其他方法。若最早一项的系数为零,应先检查是否已经降阶,并单独处理初值,不要直接套用上面的非零根公式。