排列与组合
基本计数原理
加法原理与乘法原理(略)
减法原理与除法原理
集合的排列
集合的线性排列:
定义:从n哥不同元素取出r个元素有序摆放,称n元素集合的r-排列
集合S的一个排列时某种顺序列出S的所有元素。(称为全排列)
定理:对于整数n和r,r≤n,有P(n,r)=(n−r)!n!
P(n,r)=n∗P(n−1,r−1)
P(n,r)=P(n−1,r)+r∗P(n−1,r−1)
循环排列:
定理:n个元素集合的循环r排列个数为:rP(n,r)=r(n−r)!n!
特别地,n元素的循环排列个数为(n−1)!
项链排列:
n个元素集合串起来循环r排列数为2rP(n,r)=2r(n−r)!n!
集合的组合
C(n,r)=r!(n−r)!n!
C(n,r)=C(n,n−r)
C(n,r)∗C(n,k)=C(n,k)∗C(n−k,r−k)
$ \binom{n}{0} + \binom{n}{1} + \binom{n}{2} + \dots + \binom{n}{n} = 2^n $
多重集的排列
多重集:允许元素重复。例如M={a,a,b,c,c,c}={2a,1b,3c}
无限重复数
定理:令S是多重集,它有k种不同的元素,每个元素都有无限重复次数,那么,S的r-排列个数为kr
有限重复数
定理:令S是多重集,它有k种不同的元素,每种元素的重复数分别为n1,n2,...,nk,那么,S的排列数等于n1!n2!...nk!n!,其中n=n1+n2+...+nk
定理:设n=n1+n2+...+nk,将n个元素集合划分为做了标签的k个盒子B1,B2,...,Bk,其中Bi盒子含有ni个元素,方法数为n1!...nk!n!
多重集的组合
多重集S的一个r-组合是S 的子多重集。
定理:令S是多重集,它有k个不同的元素,每个元素都有无线重复次数,那么,S的r-组合个数为(rr+k−1)=(k−1r+k−1)
有元素约束问题?例:方程x1+x2+x3+x4=20的整数解的个数是多少?其中x1≥3,x2≥1,x3≥0,x4≥5.
| n个元素 |
r排列问题(choose a list) |
r组合问题(choose a set) |
| 无重复 |
P(n,r) |
C(n,r) |
| 允许重复(无限) |
nr |
C(n+r−1,r) |
n1+...nk=r的非负整数解个数为C(k+r−1,k−1)
n1+...nk=r的正整数解个数为C(r−1,k−1)
有限概率
相对于微积分为基础的连续概率。
鸽巢原理
鸽巢原理的简单形式
略。
鸽巢原理的加强形式
定理:令q1,q2,...qn为正整数。若将q1+q2+...+qn−n+1个物体放进n个盒子内,那么:
- 或者第1个盒子至少含有q1个物体,
- 或者第2个盒子至少含有q2个物体,…
- 或者第n个盒子至少含有qn个物体。
简单形式:当q1=q2=...qn=2,有q1+q2+...+qn−n+1=n+1
推论:设n和r都是正整数。如果n(r−1)+1个物体放入n个盒子,则至少有一个盒子含有r个或更多的物体。
平均原理:如果n个非负整数m1,m2,...mn的平均数大于r−1,即(m1+m2+...+mn)/n>r−1,则是稍有一个整数大于或等于r。
Ramsey定理
如果m≥2,n≥2是两个整数,则存在正整数p,使得Kp→Km,Kn
Ramsey数:Ramsey数r(m,n)是使Kp→Km,Kn成立的最小整数p
- r(m,n)一定存在(m≥2,n≥2是两个整数)
- r(m,n)=r(n,m)
平凡的Ramsey数:
- r(2,n)=n
- r(m,2)=m
推论:r(m,n)≤r(m−1,n)+r(m,n−1)
Ramsey定理推广
Ramsey定理可推广到任意多种颜色的情况
l种颜色:如果n1,n2,...,nl都是大于或等于2的整数,则一定存在正整数p,使得Kp→Kn1,Kn2,...Knl,满足以上条件的最小整数p成为Ramsey数r(n1,n2,...,nl)
例如:K17→K3,K3,K3
Ramsey定理更一般形式
把点对(边)扩展至t个元素的子集(t≥2):
给定整数t≥2及整数q1,q2,...,qk≥t,则存在一个整数p使得:如果将p元素集合种每一个t元素子集指定为k种颜色c1,c2,...,ck中一种,那么:
- 或者存在q1个元素,它的所有t自己被指定成颜色c1,
- …
- 或者存在qk个元素,它的所有t自己被指定成颜色ck.
满足结论的最小整数p为Ramsey数rt(q1,q2,...,qk)
令Knt表示n个元素集合中所有t个元素的子集的集合。
给定整数t≥2及整数q1,q2,...,qk≥t,存在一个整数p,使得Kpt→Kq1t,Kq2t,...,Kqkt
生成排列和组合
生成排列
递归生成算法
{1}的所有排列->{1,2}的所有排列->…{1,2,…,n}的所有排列
邻位对换算法
-
初始123...n
-
while存在活动整数时,do
- 求出最大的活动整数m
- 交换m和其箭头指向的相邻整数的位置
- 改变所有满足p>m的整数p的箭头方向
-
不存在活动整数时,算法结束
多重集排列生成算法
字典序算法:next_permutation
适用于多重集。
- 从右向左找第一队“升序”相邻元素:找到最大的i满足A[i]<A[i+1]。如果没有,说明已经是最大字典序,结束
- 在i的右侧找最后一个比A[i]大的数:找到最大的j,满足A[j]>A[i]。
- 交换A[i]与A[j]。
- 反转:将A[i+1]...A[n]反转为A[n]...A[i+1],使其变为升序。
排列中的逆序
逆序:(前>后)
例:31524中几组逆序?有(3,1),(3,2),(5,2),(5,4)
一个排列和一个逆序列一一对应。
已知1,2,...,8的一个排列的逆序列位53402110,确定此排列:
0 -> 8:8
1 -> 7:87
1 -> 6:867
2 -> 5:8657
0 -> 4:48657
4 -> 3:486537
3 -> 2:4862537
5 -> 1:48625137
生成组合
压缩序
二进制加法。
n元集合S={xn−1,xn−2,...,x0}的组合与长度为n的二进制数一一对应
-
初始:an−1...a1a0=0...00
-
当an−1...a1a0=1...11时,执行以下操作:
- 求出使得aj=0的最小整数j$$
- 用1替换aj并用0替换每个aj−1,...,a0
-
当an−1...a1a0=1...11时算法结束
反射Gray码
相邻的组合仅相差一个元素。
称为逐次法。
生成r组合
基于字典序的r子集生成算法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| for i ← 1 to r do a[i] ← i end for
输出 a[1..r]
while true do i ← r while i ≥ 1 and a[i] = n - r + i do i ← i - 1 end while
if i = 0 then break end if
a[i] ← a[i] + 1
for j ← i + 1 to r do a[j] ← a[j-1] + 1 end for
输出 a[1..r] end while
|
二项式系数
帕斯卡三角形
对于满足1≤k≤n的所有整数k和n,有(kn)=(kn−1)+(k−1n−1)
(n元素集合的k子集的数目=n-1元素集合的k子集的数目+n-1元素集合的k-1子集的数目)
Pascal三角形
每一行相加(第n行):(0n)+(1n)+...(nn)=2n
第k=1列:n
第k=2列:三角形数,即三角形阵列中的点数(2n),n≥2
第k=3列:四面体数,即四面体阵列中的点数(3n)
二项式系数的另一种组合解释
p(n,k):从(00)到(kn)项的路径数目
二项式定理
令n是一个正整数,那么对于所有的x,y有:(x+y)n=∑k=0n(kn)xn−kyk
k(kn)=n(k−1n−1)
例:n个人中选k人组成队伍,其中一人为队长, 有多少种选法?先选队员,其中选队长k(kn),先选队长再选队员n(k−1n−1)
证明等式方法:帕斯卡公式,求导法,积分法,组合推理法
等式举例
对于0≤k≤n,有∑m=kn(km)=(kk)+(kk+1)+...+(kn)=(k+1n+1)
对于0≤k≤n/2,有∑m=kn−k(km)(kn−m)=(2k+1n+1)
\binom{m+n}{r}=\binom{m}{0\binom{n}{r}+\binom{m}{1}\binom{n}{r-1}+...+\binom{m}{r}\binom{n}{0}
组合定义扩展
(kn)=k!(n−k)n!,n为任意实数,k为任意整数(若k=0,原式=1,若k≤-1,原式=0)
二项式系数的单峰性
多项式定理
牛顿二项式定理
容斥原理
定理:集合S不具有性质P1,P2,...,Pm的物体的个数:
∣A1∩⋯∩Am∣=∣S∣−∑∣Ai∣+∑∣Ai∩Aj∣−∑∣Ai∩Aj∩Ak∣+⋯+(−1)m∣A1∩A2∩⋯∩Am∣
其中,第一个和对{1,2,…,m}的所有的1子集 {i} 进行,第二个和对 {1,2,…,m} 的所有的2子集{i,j}进行,依此类推。
推论:集合S中至少具有性质P1,P2,...,Pm之一的物体的个数:
∣A1∪A2∪⋯∪Am∣=∑∣Ai∣−∑∣Ai∩Aj∣+∑∣Ai∩Aj∩Ak∣+⋯+(−1)m+1∣A1∩A2∩⋯∩Am∣
特殊情况:任意k各级和的交包含相等个数的元素,k=1,2,…,n
∣∣∣A1∩A2∩⋯∩Am∣∣∣=α0−(1m)α1+(2m)α2−(3m)α3+⋯+(−1)k(km)αk+⋯+(−1)m(mm)αm
带重复的组合
例:确定多重集T={3a,4b,5c}的10子集的个数。
设:令多重集T⋆={∞a,∞b,∞c}的所有10子集的集合为S.A1是S中包含多于3个a的10子集的集合;A2是S中包含多于4个b的10子集的集合;A3是S中包含多于5个c的10子集的集合;
则T的10-组合数等于∣∣∣A1∩A2∩A3∣∣∣=66−28−21−15+3+1+0−0=6
令 S={∞⋅a1,∞⋅a2,…,∞⋅ak},则 S 的一个 r 组合具有形式
{x1⋅a1,x2⋅a2,…,xk⋅ak},满足
x1+x2+⋯+xk=r(1),
其中,xi 是非负整数,即 xi≥0,i=1,2,…,k。
以上方程的任何一个解确定 S 的一个 r 组合,反之亦然.
因此,S 的 r 组合个数等于方程(1)的非负整数解的个数.
多重集 T={n1⋅a1,n2⋅a2,…,nk⋅ak} 的 r 组合数等于方程
x1+x2+⋯+xk=r,0≤x1≤n1,0≤x2≤n2,…,0≤xk≤nk
的整数解的个数。
例2: 求满足 1≤x1≤5, −2≤x2≤4, 0≤x3≤5, 3≤x4≤9 的方程
x1+x2+x3+x4=18
的整数解个数。
解: 作变量替换 y1=x1−1, y2=x2+2, y3=x3, y4=x4−3 得到方程:
y1+y2+y3+y4=16(∗)
且关于 xi 的不等式成立,当且仅当
0≤y1≤4, 0≤y2≤6, 0≤y3≤5, 0≤y4≤6。(∗∗)
因此满足题意的整数解个数等于当条件(**)满足时,
方程(*)的整数解的个数。
令 A1,A2,A3,A4 分别表示方程()在 y1≥5, y2≥7,
y3≥6, y4≥7 时的整数解的个数,则条件(**)满足时,
方程()的整数解的个数为 ∣A1∩A2∩A3∩A4∣。
设 S 是方程(*)的非负整数解的集合,则 ∣S∣ 等
于方程 y1+y2+y3+y4=16 的非负整数解的个数,得
∣S∣=(1616+4−1)=(1619)=969
错位排列
定义: 设 X={1,2,…,n}, 它的排列用 i1i2…in 表示。
错位排列是使得 i1=1,i2=2,…,in=n 的排列。用 Dn 表示错位排列个数。
定理:对 n≥1,
Dn=n!(1−1!1+2!1−3!1+⋯+(−1)nn!1)
例2:在一次聚会上,7位绅士存放他们的帽子。有多少种方法使得他们的帽子返还时满足
(1) 没有绅士收到他自己的帽子?
(2) 至少一位绅士收到他自己的帽子?
(3) 至少两位绅士收到他们自己的帽子?
解:
(1) D7
(2) 7!−D7
(3) 7!−D7−7D6
错位排列的递推关系:
Dn=(n−1)(Dn−2+Dn−1),(n=3,4,…),初始值 D2=1; D1=0
Dn=nDn−1+(−1)n
带有禁止位置的排列
令 X1,X2,…,Xn 是 {1,2,…,n} 的子集 (可以为空集),
用 P(X1,X2,…,Xn) 表示 {1,2,…,n} 的排列 i1i2…in 的
集合,使得: i1∈/X1, i2∈/X2, …, 且 in∈/Xn
记p(X1,X2,...,Xn)=∣P(X1,X2,...,Xn)∣,表示P(X1,X2,...,Xn)中排列的个数
例: X1={1,2},X2={2,3},X3={3,4},X4={4,1} 是 {1,2,3,4} 的子集,求 p(X1,X2,X3,X4)。
解: 设集合 {1,2,3,4} 的一个排列为 i1i2i3i4,Aj 表示 ij∈Xj 的排列的集合,j=1,2,3,4,则
p(X1,X2,X3,X4)=∣A1∩A2∩A3∩A4∣。
令 S 表示 {1,2,3,4} 的所有排列的集合,则 ∣S∣=4!。
∣A1∣=(12)3!=∣A2∣=∣A3∣=∣A4∣,
∣A1∩A2∣=(2+1)2!=∣A1∩A4∣=∣A2∩A3∣=∣A3∩A4∣
∣A1∩A3∣=(12)(12)2!=∣A2∩A4∣。
∣Ai∩Aj∩Ak∣=… (略)。
定理:将 n 个非攻击型不可区分的车放到带有禁止位置的 n×n 的棋盘中,放法总数等于:
n!−r1(n−1)!+r2(n−2)!−⋯+(−1)krk(n−k)!+⋯+(−1)nrn
另一个禁止位置问题
令 S 为 {1,2,…,n} 的全部排列,
Qn 是 S 中没有 12,23,…,(n−1)n 这些模式的排列的个数。
令 Ai 是 i(i+1) 出现的排列的集合,i=1,2,…,n−1,则有
Qn=∣A1∩A2∩⋯∩An−1∣
定理:对于 n≥1,
Qn=n!+k=1∑n−1(−1)k(kn−1)(n−k)!=n!−(1n−1)(n−1)!+(2n−1)(n−2)!+…+(−1)n−1(n−1n−1)1!
递推关系和生成函数
若干函数
斐波那契序列
fn=51(21+5)n−51(21−5)n,n≥0
性质:
(1) 斐波那契数列的部分和为
sn=f0+f1+⋯+fn=fn+2−1
(2) 斐波那契数是偶数当且仅当n被3整除。
(3) 斐波那契数能被3整除当且仅当n可被4整除。
(4) 斐波那契数能被4整除当且仅当n可被6整除。
生成函数
定义:令 h0,h1,…,hn… 为一无穷数列,其生成函数 g(x) 定义为:
g(x)=h0+h1x+h2x2+⋯+hnxn+…
数列与生成函数的关系:多重集组合
设k是正整数,g(x)是数列h0,h1,...,hn,...的生成函数,其中hn等于方程e1+e2+...+ek=n的非负整数解个数。
g(x)=n=0∑∞(nn+k−1)xn=(1−x)k1=(e1=0∑∞xe1)(e2=0∑∞xe2)...(ek=0∑∞xek)=e1+...+ek=n=0∑∞xe1xe2...xek
合并同次项后,xn前的系数即为hn
例:设S是多重集合{∞a1,∞a2,∞a3,∞a4}。
当hn是满足以下约束的S的n组合数是,求解数列h0,h1,...,hn,...的一般项hn.
元素a1不会出现,a2至多出现1次
解:生成函数为g(x)=x0(1+x)(1+x+x2+...+xn+...)2=(1+x)(1−x1)2=1−x−1+(1−x)22=−∑k=0∞xk+∑k=0∞2(k2+k−1)xk=∑k=0∞(2k+1)xk
得一般项hn=2n+1,n≥0
例子:什么样得数列的生成函数是如下式子:
(1+x+x2+x3+x4+x5)(1+x+x2)(1+x+x2+x3+x4)=(e1=0∑5xe1)(e2=0∑2xe2)(e3=0∑4xe3)
解:设e1+e2+e3=n,则有xe1xe2xe3=xn
因此乘积中xn的系数hn是e1+e2+e3=n的非负整数解的个数,其中0≤e1≤5,0≤e2≤2,0≤e3≤4
注意:若n>5+2+4=11,则hn=0
例:设 hn 是方程 3e1+4e2+2e3+5e4=n 的非负整数解的个数,求序列 h0,h1,…,hn,… 的生成函数。
作变量替换 f1=3e1,f2=4e2,f3=2e3,f4=5e4 得到
f1+f2+f3+f4=n(1)
因此,hn 等于方程(1)的非负整数解的个数,且满足:
f1 是 3 的倍数,f2 是 4 的倍数,f3 是 2 的倍数,f4 是 5 的倍数。
因此,生成函数为
g(x)=(1+x3+x6+…)(1+x4+x8+…)(1+x2+x4+…)(1+x5+x10+…)=1−x31⋅1−x41⋅1−x21⋅1−x51
排列逆序:
设h(n,t)表示{1,2,...,n}的排列中有t个你学的排列数目,则
- 对于0≤t≤n(n−1)/2,有h(n,t)≥1
- 对t>n(n−1)/2,有h(n,t)=0
定理:设n是正整数,则数列h(n,0),h(n,1),...,h(n,n(n−1)/2)的生成函数为
gn(x)=1(1+x)(1+x+x2)…(1+x+⋯+xn−1)=(1−x)n∏j=1n(1−xj)
指数生成函数
数列h0,h1,h2,...,hn...的指数生成函数定义为
g(e)(x)=h0+h1x+h22!x2+...+hnn!xn+...=n=0∑∞hnn!xn
例:数列1,1,1,...,1,...的指数生成函数g(e)(x)=∑n=0∞n!xn=ex
例:求多重集合S={∞a1,∞a2,...,∞ak}的n排列数hn的数列h1,h2,...的指数生成函数。
hn=kn
g(e)(x)=∑n=0∞n!(kx)n=ekx
数列与指数生成函数的关系:多重集排列
例:有多重集合$S={3 a_1,2 a_2,3 a_3} ,从中取r组合,其组合数为h_r,则其对应的生成函数为g(x) = (1+x+x2+x3)(1+x+x2)(1+x+x2+x^3) = 1+3x+6x2+9x3+10x4+9x5+6x6+3x7+x^8$
r组合的数目:xr的系数
问题:如何取组合?
定理:设 S 是多重集 {n1⋅a1,n2⋅a2,…,nk⋅ak},其中 n1,n2,…,nk 是非负整数。设 hn 是 S 的 n排列数,则数列 h0,h1,h2,…,hn,… 的指数生成函数 g(e) 为:
g(e)=fn1(x)fn2(x)…fnk(x)(1)
其中,对于 i=1,2,…,k,有
fni(x)=1+x+2!x2+⋯+ni!xni(2)
推广到无穷重数的情况:对{∞⋅a1,∞⋅a2,…,∞⋅ak}
ge(x)=h0+h1x+h22!x2+⋯+hnn!xn+…=f∞(x)…f∞(x),其中f∞(x)=1+x+2!x2+⋯+n!xn+⋯=ex
当n排列中ai的出现有约束时,将反映到第i个因子中
组合问题使用普通生成函数,排列问题是用指数生成函数。
几个常用的展开式
ex=n=0∑∞n!xn=1+x+2!x2+⋯+n!xn+…
e−x=n=0∑∞(−1)nn!xn=1−x+2!x2+⋯+(−1)nn!xn+…
21(ex+e−x)=1+2!x2+4!x4+⋯+(2n)!x2n+…
21(ex−e−x)=x+3!x3+5!x5+⋯+(2n+1)!x2n+1+…
例:用红、蓝、黄三种颜色给 1×n 的棋盘着色,如果被着成红色的方格数是偶数,确定给这个棋盘着色的方法数 hn。
解:设 hn 表示着色的方法数,定义 h0=1。
显然,hn 等于包含 3 种颜色的多重集合的 n 排列数,其中每种颜色的重数是无穷的,且红色出现的次数是偶数。
因此,数列 h0,…,hn,… 的指数生成函数为
g(e)=(1+2!x2+4!x4+…)(1+1!x+2!x2+…)(1+1!x+2!x2+…)=21(ex+e−x)exex=21(e3x+ex)=21(n=0∑∞3nn!xn+n=0∑∞n!xn)=n=0∑∞21(3n+1)n!xn。得 hn=23n+1,n≥0。
例:确定满足下面条件的 n 位数的个数 hn:每个数字都是奇数且数字 1 和 3 出现偶数次。
解: 设 h0=1,hn 等于多重集合 {∞⋅1,∞⋅3,∞⋅5,∞⋅7,∞⋅9} 的 1和3出现偶数次 的 n排列个数。
则 h0,h1,h2,…,hn,… 的指数生成函数为
g(e)=(1+2!x2+4!x4+…)2(1+x+2!x2+3!x3+…)3=(2ex+e−x)2e3x=41(e5x+2e3x+ex)=41(n=0∑∞5nn!xn+2n=0∑∞3nn!xn+n=0∑∞n!xn)=n=0∑∞(45n+2×3n+1)n!xn得,hn=45n+2×3n+1,n≥0
求解线性齐次递推关系
特征方程法
定理:令 q 为一个非零数,则 hn=qn 是常系数线性齐次递推关系
hn=a1hn−1+a2hn−2+⋯+akhn−k(ak=0,n≥k)(1)
的解当且仅当 q 是多项式方程(即 特征方程)
xk−a1xk−1−a2xk−2−⋯−ak−1x−ak=0(2)
的一个根。(即 特征根)
若多项式方程 (2) 有 k 个不同的根 q1,q2,…,qk,则
hn=c1q1n+c2q2n+⋯+ckqkn(3)
是下述意义下(1)的通解:任意给定初始值 h0,h1,…,hk−1,都存在 c1,c2,…,ck 使得(3)式是满足(1)式和初始条件的唯一的数列。
例:求满足初始值 h0=1,h1=2 和 h2=0 的递推关系 hn=2hn−1+hn−2−2hn−3 (n≥3)
解:递推关系的特征方程为 x3−2x2−x+2=0(1)
3个根分别是 1, -1, 2.
因此,通解为 hn=c11n+c2(−1)n+c32n
代入初始值解得 c1=2,c2=32,c3=−31,
因此, hn=2−32(−1)n−31⋅2n(n≥0)
生成函数法
1.利用递推关系求出序列的生成函数:q(x)p(x)
- 其中,p(x)是次数小于k的多项式
- q(x)是常数项等于1的k阶多项式
2.用部分分式法,把q(x)p(x)表示为如下代数分式的和:(1−rx)tc
3.利用牛顿二项式展开(1−rx)tc,并把所有项求和,得到生成函数的幂级数
例:利用生成函数求解 hn=hn−1+9hn−2−9hn−3 (n≥3), h0=0,h1=1,h2=2
解:令生成函数为 g(x)=h0+h1x+h2x2+h3x3+⋯+hnxn+…(1)
将 (1) 式两边分别同乘 −x,−9x2,9x3,得:
−x⋅g(x)−9x2⋅g(x)9x3⋅g(x)=−h0x−h1x2−h2x3−⋯−hnxn+1+…(2)= −9h0x2−9h1x3−9h2x4−⋯−9hnxn+2+…(3)=9h0x3+9h1x4+9h2x5+⋯+9hnxn+3+…(4)
将 (1), (2), (3) 与 (4) 四式左右两边分别相加得:
(1−x−9x2+9x3)g(x)=h0+(h1−h0)x+(h2−h1−9h0)x2+(h3−h2−9h1+9h0)x3+…=h0+(h1−h0)x+(h2−h1−9h0)x2=x+x2。
得 g(x)=1−x−9x2+9x3x+x2=(1−x)(1−3x)(1+3x)x+x2 (略)
特征方程有重根的情形
定理:令 q1,q2,…,qt 为常系数线性齐次递推关系:
hn=a1hn−1+a2hn−2+⋯+akhn−k(n≥k)(1)
的特征方程的互异的根。
如果 qi 是 (1) 的特征方程的 si 重根,那么该递推关系的通解中对应于 qi 的部分为:
Hn(i)=c1qin+c2nqin+⋯+csinsi−1qin
(即 si 项的和),且该递推关系的通解为:
hn=Hn(1)+Hn(2)+⋯+Hn(t)
一般的:数列与生成函数关系
定理:令 h0,h1,h2,…,hn,… 为满足 k 阶常系数线性齐次递推关系:
hn+c1hn−1+⋯+ckhn−k=0(ck=0,n≥k)(1)
的数列,则它的生成函数 g(x) 形如:
g(x)=p(x)/q(x)(2)
其中,
q(x) 是具有非零常数项的 k 次多项式,
p(x) 是小于 k 次的多项式。
反之,给定这样的多项式 p(x) 和 q(x),则存在序列 h0,h1,…,hn,… 满足 (1) 式的 k 阶常系数线性齐次递推关系,其生成函数由 (2) 式给出。
小结
令 h0,h1,h2,…,hn,… 是一个数列,若存在常数量 a1,a2,…,ak (ak=0) 使得
hn=a1hn−1+a2hn−2+⋯+akhn−k(n≥k)
则称该数列是 k 阶常系数线性齐次递推关系。
利用特征方程求解常系数线性齐次递推关系:
1. 写出相应的特征方程;
2. 求解特征方程:
(a) 如果没有重根,则直接给出通解
(b) 如果有重根,根据重根求出通解
3. 将初始条件代入通解,得到满足初始条件的解。
利用生成函数求解: 使得 xj (j≥k) 前的系数为 0。
非齐次递推关系
形如
hn=a1hn−1+a2hn−2+⋯+akhn−k(n≥k)+bn(ak=0,n≥k)
若bn=0,则称该递推关系为常系数线性非齐次递推关系。
例如,汉诺塔地推关系hn=2hn−1+1(n≥1)
- 迭代求解 + 数学归纳法
- 生成函数法
- 特征方程法:
- 求对应的齐次递推关系的通解;
- 求原非齐次递推关系的一个特解;
- 将一般解和特解结合,得到该非齐次递推关系的通解;
- 通过初始条件确定通解中出现的常系数值。
尝试特解的方法
根据非齐次项 bn来尝试某些类型的特解:
(1) 如果bn是n的k次多项式,尝试hn也是n的k次多项式
① 若bn=d (常数),尝试hn=r (常数)
② 若bn=dn+c (d, c是常数),尝试hn=rn+s (r,s是常数)
③ 若bn=an2+dn+c (a,d,c是常数), 尝试hn=rn2+sn+t (r, s, t是常数)
(2) 若bn=dn (d是常数)是指数形式,尝试hn=pdn (p是常数)也是指数形式。
一个几何例子
详见PPT.
定理:设 hn 表示用下面方法把凸多边形区域分成三角形区域的方法数:
在有 n+1 条边的凸多边形区域内通过插入不相交的对角线,而把它分成三角形区域。
定义 h1=1。
则 hn 满足如下递推关系:
hn=h1hn−1+h2hn−2+⋯+hn−1h1=k=1∑n−1hkhn−k(n≥2)
该递推关系解为:
hn=n1(n−12n−2)(n=1,2,3,…)
注:此数列即为 Catalan数 Cn−1
特殊计数序列
Catalan数
Catalan数列是序列C0,C1,..,Cn,...,,其中
Cn=n+11(n2n),n=0,1,2,...
是第n个Catalan数
凸n+1边形被在其内部不相交的对角线划分成三角形区域的方法数
hn=Cn−1=n1(n−12n−2)
递推数:
Cn=C0Cn−1+C1Cn−2+...+Cn−1C0;C0=1,C1=1,C2=2,C3=5,...
典型应用:二叉树问题,出栈次序问题,括号化问题
定理:考虑由n个+1和n个−1构成的2n项序列a1,a2,...,a2n,其部分和总满足a1+a2+...+ak≥0(k=1,2,...,2n)的序列的个数等于第n个Catalan数Cn=n+11(n2n)
典型应用:买票找零问题,走方格问题
另一个递推关系:Cn=n+14n−2Cn−1(n≥1),C0=1
拟Catalan数
一般表达式:
定义一个新的数列C1∗,C2∗,...,Cn∗,...
其中Cn∗=n!Cn−1∗
则Cn∗=(n−1)!(n−12n−2)
递推关系:
Cn∗=(4n−6)Cn−1∗,C1∗=1
差分序列和Stirling数
设h0,h1,...,hn,...是一个序列。定义新序列Δh0,Δh1,...,Δhn,...称为(一阶)差分序列,其中Δhn=hn+1−hn(n≥0),是序列的相邻项的差。
二阶差分序列Δ2hn=Δhn+1−Δhn=hn+2−2hn+1+hn
差分表(略)从某一阶开始全为0
定理:设序列的通项hn是n的p次多项式:$$h_n = a_pnp+a_{p-1}n{p-1}+a_{p-2}n^{p-2}+…+a_1n+a_0, a_p \neq 0$$,则对于所有的n≥0,必有Δp+1hn=0
差分表的性质:
- 差分表由第0行上元素的值就能决定
- 差分表也可由第0条对角线决定
定理:差分表的第0条对角线等于
c_0,c_1,c_2,...,c_p,0,0,0,...
$$,其中 $ c_p \neq 0 $ 的序列的通项满足:
h_n = c_0\binom{n}{0} + c_1\binom{n}{1} + c_2\binom{n}{2} + … + c_p\binom{n}{p}
> 例:考虑通项$h_n = n^3 + 3n^2 - 2n + 1 (n\geq 0)$的序列
解:代入定理得到第0条对角线$1,2,12,6,0,0,...$
\begin{aligned}
\sum_{k=0}^n h_k &= h_0 + h_1 + \dots + h_n \
&= \sum_{k=0}^n \left(1 \binom{k}{0} + 2 \binom{k}{1} + 12 \binom{k}{2} + 6 \binom{k}{3}\right) \
&= 1\sum_{k=0}^n \binom{k}{0} + 2\sum_{k=0}^n \binom{k}{1} + 12\sum_{k=0}^n \binom{k}{2} + 6\sum_{k=0}^n \binom{k}{3} \
&= 1\binom{n+1}{1} + 2\binom{n+1}{2} + 12\binom{n+1}{3} + 6\binom{n+1}{4}。
\end{aligned}
定理:假设序列$h_0,h_1,...,h_n,...$的差分表的第0条对角线等于
c_0,c_1,…,c_p,0,0,…
则有
\sum_{k=0}^n h_k = c_0 \binom{n+1}{1} + c_1 \binom{n+1}{2} + \dots + c_p \binom{n+1}{p+1}
第二类Stirling数:$S(p,k) = \frac{c(p,k)}{k!}$
则$h_n = n^p = \sum^{p}_{k=0}S(p,k)[n]_k$
其中,$[n]_k = n$个不同元素中取$k$个元素的排列数$P(n,k)$
定理:如果$1\leq k\leq p-1$则
S(p,k) = kS(p-1,k) + S(p-1,k-1)
类比二项式公式中:
\binom{n}{k}=\binom{n-1}{k}+\binom{n-1}{k-1}
定理:第二类Stirling数$S(p,k)$计数的是:把$p$元素集合划分到$k$个不可区分的盒子且没有空盒的划分的个数。
定理:如果$1\leq k \leq p-1$则
S(p,k) = kS(p-1,k) + S(p-1,k-1)
有Stirling数的类Pascal三角形:上方元素乘$k$加左上方元素
> 例:把10件不相同的礼物分给 5 个小朋友,保证每个小朋友都有礼物,共有多少种分法?
> $5!S(10,5)$
#### Bell数
将$p$个元素的集合划分到非空、不可区分的盒子的划分数,记为$B_p$,则
B_p = S(p,0) + S(p,1) + … + S(p,p)
即第二类Stirling数三角形的一行的元素和
定理:Bell数的递推式:如果$p\geq 1$,则
B_p = \binom{p-1}{0}B_0 + \binom{p-1}{1}B_1 + … + \binom{p-1}{p-1}B_{p-1}
#### 第一类Stirling数
$$[n]_p = a_n^p n^p - a_n^{p-1} n^{p-1} + \dots + (-1)^{p-1} a_n^1 n^1 + (-1)^p a_n^0 n^0
nk 前的系数 ank 称为第一类Stirling数,记为 s(p,k),s(p,0)=0,s(p,p)=1
递推式:如果 1≤k≤p−1 则:
s(p,k)=(p−1)s(p−1,k)+s(p−1,k−1)
与第二类初值一样,但递推关系不同
定理:第一类Stirling数s(p,k)是将p个物品排成k个非空的循环队列的方法数
分拆数