《组合数学》 §2.3 学习笔记(上)
前言:可以参考 生成函数 学习笔记
定义 2.3.1
数列 {an}∞n=0 的普通生成函数是下面的形式级数
f(x)=∞∑n=0anxn定义 2.3.2
数列 {an}∞n=0 的指数型生成函数是下面的形式级数
f(x)=∞∑n=0ann!xn定义 2.3.3
数列 {an}∞n=1 的 Dirichlet 生成函数(狄利克雷生成函数)是下面的形式级数
f(s)=∞∑n=1anns例 2.3.4
数列 {1}∞n=0 的普通生成函数是
∞∑n=0xn=11−x同时它的指数型生成函数是
∞∑n=0xnn!=ex而数列 {1}∞n=1 的狄利克雷生成函数则是
∞∑n=11ns:=ζ(s)这个函数就是 Riemann-Zeta 函数。
注 2.3.5
上面几个公式中的 “=” 的意义是“形式收敛”。
从解析上讲,若级数 A 与另一级数 B 分别在某个区间上收敛到同一形式,
则 A,B 必定为同一级数,从而可以通过级数 B 的表达形式来找到 A 。
因此我们一般无需考虑这些生成函数在何处收敛,而利用收敛到的闭形式(即和函数)的最终目的之一,
也是导出原始级数比较简单的表达形式,例如 ln(1+x)=∑∞n=1(−1)n−1nxn 。
注 2.3.6
可以定义形式级数上的运算。下面以普通生成函数为例加以说明。
若形式级数的系数在域 F 中,也称为域 F 上的形式级数。域 F 上的所有形式级数组成的集合记为 F[[x]] 。
对于形式级数 f(x)=∑∞n=0anxn, g(x)=∑∞n=0bnxn∈F[[x]] ,定义
f(x)+g(x)=∞∑n=0(an+bn)xn和
f(x)g(x)=∞∑n=0cnxn其中 cn=∑nk=0akbn−k (n≥0) 。容易证明 F[[x]] 在这样的加法和乘法下构成一个环。
进一步,对于 f(x)=∑∞n=0anxn ,定义
f′(x)=∞∑n=1nanxn−1=∞∑n=0(n+1)an+1xn为 f(x) 的形式微商或形式导数。
如果生成函数是有限项的级数,它对应的就是一个有限项的数列,
或者说自某一项后全为零的数列,这时形式级数就是一个多项式。
定义 2.3.7
若形式级数 f(x)=∑∞n=0anxn 是多项式,或形式级数 g(x)=∑∞n=0bnxn 满足 b0=0 ,
则可以定义 f(x) 和 g(x) 的复合
f(g(x))=∞∑n=0an(g(x))n当相关的复合存在,且 f(g(x))=g(f(x))=x 是,则称 g(x) 为 f(x) 的复合逆。
有时候,用 [xn]f(x) 表示 f(x) 中 xn 的系数,用 {an}∞n=0↔f(x) 表示数列 {an}∞n=0 的生成函数是 f(x) 。
如果不加注明,则此生成函数为普通生成函数。可用生成函数来解递推关系。
例 2.3.8
设 n≥1,Xn={1,2,⋯,n} ,记 an 为 Xn 的子集个数,求 an 。
这道题是 2.1.1,当时给出了 an=2an−1+[n=0] ,负下标为 0 。
解 显然 {an}∞n=0 的生成函数为
f(x)=∞∑n=0anxn=1+∞∑n=1anxn=1+∞∑n=02anxn+1=1+2x∞∑n=0anxn=1+2xf(x)所以
f(x)=11−2x=∞∑n=0(2x)n=∞∑n=02nx2比较系数得 an=2n 。
当然也可以用生成函数直接解决一些计数问题,如下 2.3.9 。
例 2.3.9
设有三种物体 a,b,c 。令 an 表示从中不重复地选取 n 种物体的方法数,
则 {an}∞n=0 对应的普通生成函数可如下得出:
((ax)0+(ax)1)((bx)0+(bx)1)((cx)0+(cx)1)=(1+ax)(1+bx)(1+cx)=1+(a+b+c)x+(ab+bc+ca)x2+abcx3上式中 xi 的系数表明选取 i 种物体的选取方式。
例如 x2 的系数为 ab+bc+ac 这三种方式。若仅仅求选取方法数,则令 a=b=c=1 即可。这时,有
{an}↔(1+x)3这样我们就得到 an=(3n) 。(二项式定理)
现在改变规则:设 a 可取 0,1 或 2 次,b 可取 0 或 1 次,c 可取偶数次。
令 bn 表示选取 n 个物体的方法数,则 {bn}∞n=0 对应的普通生成函数即
(1+x+x2)(1+x)(1+x2+x4+⋯)=1+x+x21−x=(1+x+x2)∞∑n=0xn=1+2x+3∞∑n=2xn从以上生成函数不难看出,当 n≥2 时,bn=3 。
接下来两个例子 2.3.10 和 2.3.12 可学习如何求出生成函数,并使之成为计数问题的有效工具
例 2.3.10
给定正整数 k ,令 hn 表示方程
x1+x2+⋯xk=n的非负整数解的个数,我们已经知道
hn=(n+k−1n)求 {hn}∞n=0 对应的普通生成函数的闭形式(封闭形式)
解 令 h(x) 为 {hn}∞n=0 对应的普通生成函数,则有
h(x)=(1+x+x2+⋯)((1+x+x2+⋯))⋯(1+x+x2+⋯)⏟k 个=(∞∑i1=0xi1)(∞∑i2=0xi2)⋯(∞∑ik=0xik)=1(x−k)k推论 2.3.11
{(n+k−1n)}∞n=0↔1(1−x)k例 2.3.12
从数量不限的苹果🍎、香蕉🍌、橘子🍊和梨🍐中,选取 n 个水果装成一袋,且
- 选取的苹果数是偶数;
- 选取的香蕉数是 5 的倍数;
- 选取的橘子最多有 4 个;
- 选取的梨最多有 1 个。
记这样的装法有 hn 种,求 hn 。
解 令 g(x) 为 {hn}∞n=0 的普通生成函数,则
g(x)=(1+x2+x4+⋯)(1+x5+x10+⋯)(1+x+x2+x3+x4)(1+x)=11−x2⋅11−x5⋅1−x51−x(1+x)=1(1−x)2=∞∑n=0(n+1n)xn由推论 2.3.11 得到 hn=n+1 。
例 2.3.13
用生成函数法求解常系数线性齐次递推关系
解 设 {hn}∞n=0 满足 k 阶常系数线性齐次递推关系
hn=a1hn−1+a2hn−2+⋯+akhn−k,aj≠0, k≥1{hn}∞n=0 的普通生成函数为 f(x)=∑∞n=0hnxn 。设
k(x)=xkg(1x)=1−k∑i=1aixi则 c(x)=k(x)f(x) 中 xk+r(r≥0) 的系数为
hk+r−a1hk+r−1−a2hk+r−2−⋯−akhr=0即 c(x) 是一个次数小于 k 的多项式。
设上面的递推关系的特征方程的互不相同根为 q1,q2,⋯,qt ,而 qi 的重数为 si (1≤i≤t,∑si=k) ,则
g(x)=xk−a1xk−1−⋯−ak−1x−ak=(x−q1)s1(x−q2)s2⋯(x−qt)st故
k(x)=(1−q1x)s1(1−q2x)s2⋯(1−qtx)st有理分式 f(x)=c(x)k(x) 可以表示为部分分式
f(x)=t∑i=1si∑ℓ=1βiℓ(1−qix)ℓ这里 βiℓ 为适当的常数。由于
β(1−qx)ℓ=β(1−qx)ℓ=β∞∑n=0(n+ℓ−1n)qnxn所以
si∑ℓ=1βiℓ(1−qix)ℓ=si∑ℓ=1βiℓ∞∑n=0(n+l−1n)qnixn=∞∑n=0(Pi(n)qni)xn其中 Pi(n)=∑siℓ=1βiℓ(n+ℓ−1n) 为一个关于 n 的次数至多为 si−1 的多项式。这样
f(x)=∞∑n=0(t∑i=1Pi(n)qni)xn故 hn=∑ti=1Pi(n)qni ,而 Pi(n) 的系数由初始值 h0,h1⋯,hk−1 给出。
例 2.3.14 (Bell 数)
令 Bn 表示 [n] 上所有划分的个数,是找到计算 Bn 的公式。
这部分有那么亿点复杂,所以不写了。公式是
定义 2.3.15
若形式级数 f(x)=∑∞n=0anxn 与 g(x)=∑∞n=0bnxn 满足 f(x)g(x)=1 ,则称 g(x) 为 f(x) 的乘法逆。
性质 2.3.16
形式级数 f(x)=∑∞n=0anxn 有乘法逆当且仅当 a0≠0 。证明略。
性质 2.3.17
设形式级数 f(x)=∑∞n=0anxn 与 g(x)=∑∞n=0bnxn 互为复合逆,
并且 a0=0 ,则有 b0=0 且 a1≠0,b1≠0 。证明略。
事实 2.3.18
若形式级数 f(x)=∑∞n=0anxn 满足 f′(x)=0 ,则 f(x) 是常数级数 a0 。
事实 2.3.19
若形式级数 f(x)=∑∞n=0anxn 满足 f′(x)=f(x) 则 f(x)=cex ,其中 c 是某个常数。