组合数学-递归与母函数(下)
递归与母函数(下)
递推关系是计数的一个强有力的工具,特别是在做算法分析时是必需的。递推关系的求解主要是利用母函数。当然母函数尚有其他用处,但这主要是介绍解递推关系上的应用。
通常序列a0,a1,⋯,an,⋯与某个问题序列P0,P1,⋯,Pn,⋯的计数问题相对应,若已知序列的母函数,则可确定该序列,从而可以解决相应的计数问题。
注意:母函数==生成函数
线性常系数递推关系
定义:设k是给定的正整数,如果序列{an}满足 an+c1an−1+c2an−2+⋯+ckan−k=f(n)n>k,ck=0(7.1) 其中c1,c2,⋯,ck是常数,则该方程成为序列{an}的k阶常系数线性递推关系。若f(n)=0,则线性递推关系成为齐次的。
定义:方程 xk+c1xk−1+c2xk−2+⋯+ck−1x+ck=0(7.2) 称为递推关系的特征方程,其根称为递推关系的特征根。
k阶常系数线性齐次递推关系
齐次:没有常数项,表达式: an+c1an−1+c2an−2+⋯+ckan−k=0(7.3)
引理1:r设为非零数,则an=rn是齐次递推关系的一个解当且仅当r是递推关系的特征根。
证明:必要性。若an=rn是递推关系的一个解,那么有 rn+c1∗rn−1+⋯+ckrn−krn−k(rk+c1rk−1+⋯+ck)rk+c1rk−1+⋯+ck⇒r是特征根=0=0=0
充分性:若r是递推关系的特征根。那么有 rk+c1rk−1+⋯+ck=0 在方程的两端同乘以rn−k,便得 rn+c1∗rn−1+⋯+ckrn−k=0
引理2:线性。A1,A2是任意常数,若{an},{bn}都是齐次递推关系的解,那么{A1an+A2bn}也是齐次递推关系的解。
推论: >设{an1},{an2},⋯,{ant}是齐次递推关系的t个不同的解,若对齐次递推关系的每一个解,都存在常数A1′,A2′,⋯,At′,使得 >an=A1′an1+A2′an2+⋯+At′ant >成立,则称A1′an1+A2′an2+⋯+At′ant为齐次递推关系的通解,其中A1′,A2′,⋯,At′为任意常数。
非常类似于微分方程的解。
定理7.1:设r1,r2,⋯,rk是齐次递推关系的k个不同的特征根,那么 an=A1r1n+A2r2n+⋯+Akrkn(7.4) 是齐次递推关系的通解。此定理只有在k阶特征方程解出k个不同根才有效。
证明:设{hn}是齐次递推关系的任意一个解,那么{hn}由k个初值h0=d0,h1=d1,⋯,hk−1=dk−1,唯一确定。于是有 ⎩⎨⎧h0=A1+A2+⋯+Ak=d0h1=A1r1+A2r2+⋯+Akrk=d1⋯hk−1=A1r1k−1+A2r2k−1+⋯+Akrkk−1=dk−1 此一次方程组的系数行列式为范德蒙矩阵行列 ∣∣1r1⋯r1k−11r2⋯r2k−1⋯⋯⋯⋯1rk⋯rkk−1∣∣=1≤j<i≤k∏(ri−rj)=0 因此k个自由度需要k个一次线性不相关方程来唯一确定。
例题:求解递归关系 {an−9an−1+26an−2−24an−3=0,a0=6,a1=17,a2=53n≥3(7.5)
解:特征方程为 x3−9x2+26x−24=0 解方程得: x1=2,x2=3,x3=4 故通解为: an=A12n+A23n+A34n 根据初始条件联立方程组: ⎩⎨⎧A1+A2+A3=6A1∗2+A2∗3+A3∗4=17A1∗4+A2∗9+A3∗16=53 得A1=3,A2=1,A3=2,因此 an=3∗2n+3n+2∗4n
如果用原来的凑单法会相当麻烦:

Figure 1: 凑单法解题1

Figure 2: 凑单法解题2
A(x)=1−2x3+1−3x1+1−4x2an=3∗2n+3n+2∗4n,n≥0
例题:求解递归关系 {an−4an−1+4an−2=0,a0=1,a1=3n≥2(7.6) 其特征方程为x2−4x+4=0⇒x1=x2=2,此时有 an=A12n+A22n=(A1+A2)2n 为了满足初始条件a0=1,a1=3,有 {A1+A2=12A1+2A2=3 但这是不可能的。引出有重根的情形。
定理7.2:设r1,r2,⋯,rs是k阶齐次递推关系的s(s<k)个不同的特征根,其重数分别为h1,h2,⋯,hs,且h1+h2+⋯+hs=k那么齐次递推关系的通解是 an=αn1+αn2+⋯+αns.(7.7) 其中,αni=(b0i+b1in+b2in2+⋯+bhiinhi−1)rin,i=1,2,⋯,s。
证明略。
很显然,没有重根的是这个定理7.2公式的特殊情况。
重回上个例题: an=(A+Bn)2n{A=12(A+B)=3⇒A=1,B=0.5⇒an=(1+0.5n)∗2n
例题:求解递推关系 {an=−an−1+3an−2+5an−3+2an−4,n≥4a0=1,a1=0,a2=1,a3=2(7.8) 解:其特征方程为 x4+x3−3x2−5x−2=0 其特征根为:x1=x2=x3=−1,x4=2 其通解为: an=(t1+t2n+t3n2)(−1)n+t42n 联立方程组: ⎩⎨⎧t1+t4=1(t1+t2+t3)∗(−1)+t4∗2=0(t1+t2∗2+t3∗4)+t4∗4=1(t1+t2∗3+t3∗9)∗(−1)+t4∗8=2⇒t1=7/9,t2=−1/3,t3=0,t4=2/9 由此可得: an=(7/9−1/3∗n)(−1)n+2/9∗2n,n≥0
常系数线性非齐次递推关系
非齐次:必有常数项,表达式: an+c1an−1+c2an−2+⋯+ckan−k=f(n)=0(7.9)
定理7.3:k阶常系数线性非齐次递推关系(7.9)的通解是该递推关系的一个特解加上其相应的齐次递推关系的通解。
这个关系非常类似非齐次微分方程中特解和通解的关系的情况。
证明:设an′,an∗分别为式(7.9)的特解和式(7.3)的通解。则 an′+c1an−1′+c2an−2′+⋯+ckan−k′=f(n)an∗+c1an−1∗+c2an−2∗+⋯+ckan−k∗=0 因此有 (an′+an∗)+c1(an−1′+an−1∗)+c2(an−2′+an−2∗)+⋯+ck(an−k′+an−k∗)=f(n) 若an为式7.9的任意一个解,易知an−an′=an∗是式(7.3)的通解,所以 an=an′+an∗(7.10)
不难看出,一般递推的关系的特解比较难求,而通解可以通过定理7.2求得。而且非齐次递推关系的特解通常是没有普遍的解法的。只有在某些简单的情况下可用待定系数法求出an′。 >定理7.4:特解形式。若线性非齐次递推关系 >an+c1an−1+c2an−2+⋯+ckan−k=f(n),ck=0f(n)=(btnt+bt−1nt−1+⋯+b1n+b0)sn >的非齐次项f(n)满足特定条件,则递推关系的特解可以有以下特定形式: > >1. 当f(n)中无sn指数项时,对应的特解形式为an′=Ptnt+Pt−1nt−1+⋯+P1n+P0,其中P0,P1,⋯,Pt为待定系数。 >2. 当f(n)中,s不是对应的齐次递推关系的特征根,则对应的特解是(Ptnt+Pt−1nt−1+⋯+P1n+P0)sn,其中P0,P1,⋯,Pt为待定系数。 >3. 当f(n)中,s是特征方程的m重特征根,则对应的特解是nm(Ptnt+Pt−1nt−1+⋯+P1n+P0)sn,其中P0,P1,⋯,Pt为待定系数。
例题求解递推关系 {an−an−1−6an−2=5⋅4na0=5,a1=3(7.11) 解:其特征方程为 x2−x−6=(x−3)(x+2)=0 其特征根为x=3,−2,通解形式为:A3n+B(−2)n。
f(n)=5⋅4n,其中4不是特征方程的根。特解形式为P0⋅4n,带入递推关系得: P04n−P04n−1−6P04n−2=5⋅4n⇒P0=340 该递推关系的通解为: an=A3n+B(−2)n+3404n 带入初始条件得 an=5−673n+1576(−2)n+3404n
非线性递推关系举例
多项式系数
引子:在下列展开式 (x1+x2+x3)3=x13+x23+x33+3x12x2+3x12x3+3x1x23+3x1x32+3x22x3+3x2x32+6x1x2x3 中,每项都是x1n1x2n2x3n3的形式,其中n1,n2,n3都是非负整数,且n1+n2+n3=3。项x1n1x2n2x3n3得系数为 n1!n2!n3!3! 等同于在求范围内的排列数。
定理8.1 设n为正整数,则 (x1+x2+⋯+xm)n=n1+n2+⋯+nm=n∑C(n,n1,n2,⋯,nm)x1n1x2n2⋯xmnm 其中n1,n2,⋯,nm为非负整数。
证明:系数为多重集xini的全排列。 C(n,n1)C(n−n1,n2)⋯C(n−n1−⋯−nm−1,nm)=(n−n1)!n1!n!(n−n1−n2)!n2!(n−n1)!⋯(n−n1−⋯−nm)!nm!(n−n1−⋯−nm−1)!=n1!n2!⋯nm!(n−n1−⋯−nm)!n!∵n=n1+n2+⋯+nm∴原式=n1!n2!⋯nm!n!
例题求展开(x1+x2+⋯+x5)7,则x12x3x43x5的系数。 2!1!3!1!(2+1+3+1)!=420
例题展开(2x1−3x2+5x3)6,则x13x2x32的系数为 3!1!2!(3+1+2)!⋅23⋅(−3)⋅52=−36000
定理8.2 展开式(x1+x2+⋯+xm)n的项数等于C(n+m−1,n),而且这些项的系数之和等于mn。
证明:展开式的项x1n1x2n2⋯xmnm,(n1+n2+⋯+nm=n) 与从m个元素中取n个允许重复的组合一一对应,故其项数为C(n+m−1,n)。当令x1=x2=⋯=xm=1时,系数和为(1+1+⋯+1)n=mn
例题多项式(x1+x2+x3)3的展开式中恰有 C(n+m−1,n)=C(3+3−1,3)=C(5,3)=10 项。
Stirling数
有两类Stirling数,称之为第一类Stirling数和第二类Stirling数
定义: [xn]=x(x−1)⋯(x−n+1)=s(n,n)xn−s(n,n−1)xn−1+⋯+(−1)n−1s(n,1)x+(−1)ns(n,0) 称s(n,0),s(n,1),⋯,s(n,n)为第一类Stirling数。
定义可知:s(n,0)=0s(n,n)=1。
定义:n个有区别的球放到m个相同的盒子中,要求无一空盒,其不同的方案数用S(n,m)表示,称为第二类Stirling数。
Catalan数
定义:数 Cn=n+11C(2n,n),n=0,1,2,⋯ 为第n个Catalan数。