Chapter VIII: 生成函数
在数学分析中, 我们已经对幂级数有所了解. 在当时, 我们所关心的主要是幂级数的(一致/条件)收敛性或收敛幂级数的和. 实际上, 在组合数学中, 通过构造特殊的幂级数, 我们可以将组合意义下的计数问题和幂级数相应幂次项系数的值相关联, 从而大幅地简化一些组合计数问题的难度. 这样构造的, 用于解决计数问题的幂级数通常被称为生成函数或母函数 (Generating Function
). 下面, 我们对生成函数进行简要介绍.
[例]
设现有
n
n
n 本完全相同的组合数学书, 并需要将它们分发给五人, 且每人至少拿到一本书. 满足这一条件的分配有多少种?
在上一章 <Chapter VII: 容斥原理> 中, 我们使用了Stirling 数解决了这一问题. 而下面, 我们将介绍一种使用生成函数解决问题的办法:
我们将五个相同的多项式
x
+
x
2
+
⋯
+
x
n
x + x^2 + \cdots + x^n
x+x2+⋯+xn 和每一个人相关联. 这个多项式的每一项的幂次均表示和该多项式关联的人所可能拿到的书的数量.(虽然每个人所可能拿到的书一定是有限多本的, 不过这无关紧要) 因此, 对这五本书所进行的一个分发可以表示为:
f
(
x
)
=
(
x
+
x
2
+
⋯
+
x
n
)
5
.
f(x) = (x + x^2 + \cdots + x^n)^5.
f(x)=(x+x2+⋯+xn)5.
显然, 现在我们所关心的是这个多项式展开式中幂次为
n
n
n 的项的系数, 这个系数的值即为所有满足条件的分配的种数, 这点无需赘述.
实际上, 由于
∑
i
=
1
∞
x
i
=
x
1
−
x
=
x
⋅
(
1
+
x
+
⋯
)
,
\sum_{i=1}^{\infty}x^{i} = \frac{x}{1-x} = x\cdot (1 + x + \cdots ),
i=1∑∞xi=1−xx=x⋅(1+x+⋯),
我们看到
f
(
x
)
=
x
5
(
1
−
x
)
5
=
x
5
⋅
(
d
4
d
x
4
1
(
1
−
x
)
4
⋅
1
4
!
)
f(x) = \frac{x^5}{(1-x)^5} = x^{5}\cdot (\frac{d^4}{dx^4}\frac{1}{(1-x)^4}\cdot\frac{1}{4!})
f(x)=(1−x)5x5=x5⋅(dx4d4(1−x)41⋅4!1)
=
x
5
4
!
[
d
4
d
x
4
∑
i
=
0
∞
x
i
]
=
∑
i
=
4
∞
(
i
4
)
x
i
+
1
=\frac{x^5}{4!}[\frac{d^4}{dx^4}\sum_{i = 0}^{\infty}x^{i}] = \sum_{i = 4}^{\infty}\binom{i}{4}x^{i + 1}
=4!x5[dx4d4i=0∑∞xi]=i=4∑∞(4i)xi+1
=
∑
i
=
5
∞
(
i
−
1
4
)
x
i
.
= \sum_{i = 5}^{\infty}\binom{i-1}{4}x^{i}.
=i=5∑∞(4i−1)xi.
因此, 所求的多项式系数为 ( n − 1 4 ) . \binom{n-1}{4}. (4n−1).
由此可见, 我们可以使用生成函数解决一类 “将相同的多个元素映射到彼此不同的多个元素所组成的集合中” 的问题.
下面我们再以一个经典的组合学问题作为例子:
[例]
在某个杂物店销售的水果拼盘中, 必须包含
20
20
20 块水果, 这些水果可能是 苹果, 梨, 橘子或者葡萄.
假设每个拼盘中都必须包含苹果, 且最多包含三块梨, 必须包含
4
k
4k
4k 片橘子 (
k
k
k 为整数). 则在以上约束条件下, 可能的水果搭配有多少种?
在这一问题中, 我们同样利用类似于上个例子的方法, 构造生成函数计算系数解决问题. 按照题目要求, 我们将 “苹果” 和多项式
∑
i
=
1
∞
x
i
\sum_{i= 1}^{\infty}x^{i}
i=1∑∞xi
相关联, 将梨的片数和多项式
1
+
x
+
x
2
+
x
3
1 + x + x^2 + x^3
1+x+x2+x3
相关联, 将橘子的片数与多项式
∑
i
=
0
∞
x
4
i
\sum_{i = 0}^{\infty}x^{4i}
i=0∑∞x4i
关联, 将葡萄的个数与多项式
∑
i
=
0
∞
x
i
\sum_{i = 0}^{\infty}x^{i}
i=0∑∞xi
相关联. 则所有的水果拼盘搭配被表示为:
f
(
x
)
=
∑
i
=
1
∞
x
i
⋅
(
1
+
x
+
x
2
+
x
3
)
⋅
∑
i
=
0
∞
x
4
i
⋅
∑
i
=
0
∞
x
i
.
f(x) = \sum_{i = 1}^{\infty}x^{i}\cdot (1 + x + x^2 + x^3)\cdot \sum_{i = 0}^{\infty}x^{4i}\cdot \sum_{i = 0}^{\infty}x^{i}.
f(x)=i=1∑∞xi⋅(1+x+x2+x3)⋅i=0∑∞x4i⋅i=0∑∞xi.
在这个多项式中, 幂次为
20
20
20 的项
x
20
x^{20}
x20 的系数即为我们所要求的结果. 下面, 计算这一系数:
显见
f
(
x
)
=
x
1
−
x
⋅
(
1
+
x
+
x
2
+
x
3
)
⋅
1
1
−
x
4
⋅
1
1
−
x
f(x) = \frac{x}{1-x}\cdot (1 + x +x^2 + x^3)\cdot \frac{1}{1-x^{4}}\cdot \frac{1}{1-x}
f(x)=1−xx⋅(1+x+x2+x3)⋅1−x41⋅1−x1
=
x
(
1
−
x
)
2
⋅
1
1
−
x
=
x
⋅
(
d
2
d
x
2
1
1
−
x
⋅
1
2
)
= \frac{x}{(1-x)^2}\cdot \frac{1}{1-x} = x\cdot (\frac{d^2}{dx^2}\frac{1}{1-x}\cdot \frac{1}{2})
=(1−x)2x⋅1−x1=x⋅(dx2d21−x1⋅21)
=
x
2
d
2
d
x
2
∑
i
=
0
∞
x
i
=
x
2
∑
i
=
0
∞
i
(
i
−
1
)
x
i
−
2
= \frac{x}{2}\frac{d^2}{dx^2}\sum_{i = 0}^{\infty}x^{i} = \frac{x}{2}\sum_{i = 0}^{\infty}i(i-1)x^{i-2}
=2xdx2d2i=0∑∞xi=2xi=0∑∞i(i−1)xi−2
=
∑
i
=
2
∞
(
i
2
)
x
i
−
1
=
∑
i
=
1
∞
(
i
+
1
2
)
x
i
.
= \sum_{i = 2}^{\infty}\binom{i}{2}x^{i-1} = \sum_{i = 1}^{\infty}\binom{i+1}{2}x^{i}.
=i=2∑∞(2i)xi−1=i=1∑∞(2i+1)xi.
因此, 我们所要求的系数即为
(
21
2
)
=
210
\binom{21}{2} = 210
(221)=210.
通过以上的两个例子, 我们已经大致了解了 “生成函数” 在解决一类组合计数问题中所可以起到的作用, 以及利用它解决问题的一般思想方法与步骤. 下面, 我们对 “生成函数” 这一概念给出严格的定义:
定义8.1 (生成函数)
设
a 0 , a 1 , ⋯ , a n , ⋯ = { a n } n = 0 ∞ a_0, a_1,\cdots, a_n,\cdots = \{a_n\}_{n = 0}^{\infty} a0,a1,⋯,an,⋯={an}n=0∞
为一个序列. 定义形式幂级数
f ( x ) = ∑ n = 0 ∞ a n x n f(x) = \sum_{n = 0}^{\infty}a_nx^n f(x)=n=0∑∞anxn
为序列 { a n } n = 0 ∞ \{a_n\}_{n = 0}^{\infty} {an}n=0∞ 的 生成函数.
和数学分析中所不同的是, 在这里我们所关心的对象只是这个形式幂级数中特定幂次项所对应的系数. 该幂级数的形式和我们所要解决的具体问题所提出的要求和条件相关. 在利用它解决问题时, 我们并不关心它的敛散性或求和所得的值.
命题8.1
设
f ( x ) = ∑ i = 0 ∞ a i x i , g ( x ) = ∑ i = 0 ∞ b i x i . f(x) = \sum_{i = 0}^{\infty}a_ix^i, ~~~ g(x) = \sum_{i = 0}^{\infty}b_ix^i. f(x)=i=0∑∞aixi, g(x)=i=0∑∞bixi.
则有
f ( x ) ⋅ g ( x ) = ∑ i = 0 ∞ ( ∑ j = 0 ∞ a j b i − j ) x i . f(x)\cdot g(x) = \sum_{i = 0}^{\infty}(\sum_{j = 0}^{\infty}a_jb_{i-j})x^i. f(x)⋅g(x)=i=0∑∞(j=0∑∞ajbi−j)xi.
同样地, 在利用生成函数解决组合计数问题时, 仅仅依据问题要求和条件将相关的生成函数所构造出来是不够的. 我们需要将所构造出的生成函数化为一个更为一般的, 可以计算出各项系数的形式, 才算是真正解决了问题.
[例]
求序列:
1
2
,
2
2
,
⋯
,
n
2
,
⋯
=
{
(
n
+
1
)
2
}
n
=
0
∞
1^2, 2^2, \cdots,n^2,\cdots = \{(n+1)^2\}_{n=0}^{\infty}
12,22,⋯,n2,⋯={(n+1)2}n=0∞
的生成函数.
[解]
设
g
(
x
)
=
∑
n
=
0
∞
(
n
+
1
)
x
n
.
g(x) = \sum_{n = 0}^{\infty}(n + 1)x^n.
g(x)=n=0∑∞(n+1)xn.
由于
1
(
1
−
x
)
2
=
∑
n
=
0
∞
(
n
+
1
)
x
n
,
x
(
1
−
x
)
2
=
∑
n
=
0
∞
(
n
+
1
)
x
n
+
1
\frac{1}{(1-x)^2} = \sum_{n = 0}^{\infty}(n+1)x^n, ~~~ \frac{x}{(1-x)^2} = \sum_{n = 0}^{\infty}(n+1)x^{n+1}
(1−x)21=n=0∑∞(n+1)xn, (1−x)2x=n=0∑∞(n+1)xn+1
又
d
d
x
x
(
1
−
x
)
2
=
1
+
x
(
1
−
x
)
3
,
d
d
x
∑
n
=
0
∞
(
n
+
1
)
x
n
+
1
=
∑
n
=
0
∞
(
n
+
1
)
2
x
n
\frac{d}{dx}\frac{x}{(1-x)^2} = \frac{1+x}{(1-x)^3}, ~~~ \frac{d}{dx}\sum_{n = 0}^{\infty}(n+1)x^{n+1} = \sum_{n = 0}^{\infty}(n+1)^2x^n
dxd(1−x)2x=(1−x)31+x, dxdn=0∑∞(n+1)xn+1=n=0∑∞(n+1)2xn
故
{
(
n
+
1
)
2
}
n
=
0
∞
\{(n+1)^2\}_{n = 0}^{\infty}
{(n+1)2}n=0∞
的生成函数为
1
+
x
(
1
−
x
)
3
.
\frac{1+x}{(1-x)^3}.
(1−x)31+x.
[Assignment]
Find the closed form of the generating functions of:
- { ( n + 1 ) 3 } n = 0 ∞ \{(n+1)^3\}_{n = 0}^{\infty} {(n+1)3}n=0∞
[Solution]
Define
f
(
x
)
=
∑
n
=
0
∞
(
n
+
1
)
2
x
n
.
f(x) = \sum_{n = 0}^{\infty}(n+1)^2x^n.
f(x)=n=0∑∞(n+1)2xn.
From the solution above, we have:
1
+
x
(
1
−
x
)
3
=
∑
n
=
0
∞
(
n
+
1
)
2
x
n
.
\frac{1+x}{(1-x)^3} = \sum_{n = 0}^{\infty}(n+1)^2x^n.
(1−x)31+x=n=0∑∞(n+1)2xn.
also
∑
i
=
0
∞
(
n
+
1
)
2
x
n
+
1
=
x
2
+
x
(
1
−
x
)
3
\sum_{i = 0}^{\infty}(n+1)^2x^{n+1} = \frac{x^2 + x}{(1-x)^3}
i=0∑∞(n+1)2xn+1=(1−x)3x2+x
d
d
x
x
2
+
x
(
1
−
x
)
3
=
∑
n
=
0
∞
(
n
+
1
)
3
x
n
.
\frac{d}{dx}\frac{x^2 + x}{(1-x)^3} = \sum_{n = 0}^{\infty}(n+1)^3x^n.
dxd(1−x)3x2+x=n=0∑∞(n+1)3xn.
since
d
d
x
x
2
+
x
(
1
−
x
)
3
=
x
2
+
4
x
+
1
(
1
−
x
)
4
\frac{d}{dx}\frac{x^2 + x}{(1-x)^3} = \frac{x^2 + 4x + 1}{(1-x)^4}
dxd(1−x)3x2+x=(1−x)4x2+4x+1
The closed form of its generated function is:
x
2
+
4
x
+
1
(
1
−
x
)
4
.
\frac{x^2 + 4x + 1}{(1-x)^4}.
(1−x)4x2+4x+1.
- { ( n + 1 ) ( n + 2 ) 2 } n = 0 ∞ \{\frac{(n+1)(n+2)}{2}\}_{n = 0}^{\infty} {2(n+1)(n+2)}n=0∞
[Solution]
Define
f
(
x
)
=
∑
n
=
0
∞
(
n
+
1
)
x
n
.
f(x) = \sum_{n = 0}^{\infty}(n+1)x^n.
f(x)=n=0∑∞(n+1)xn.
From the solution above, we have:
x
(
1
−
x
)
2
=
∑
n
=
0
∞
(
n
+
1
)
x
n
.
\frac{x}{(1-x)^2} = \sum_{n = 0}^{\infty}(n+1)x^n.
(1−x)2x=n=0∑∞(n+1)xn.
x
3
(
1
−
x
)
2
=
∑
i
=
0
∞
(
n
+
1
)
x
n
+
2
.
\frac{x^3}{(1-x)^2} = \sum_{i = 0}^{\infty}(n+1)x^{n+2}.
(1−x)2x3=i=0∑∞(n+1)xn+2.
also
d
d
x
x
3
(
1
−
x
)
2
=
∑
n
=
0
∞
(
n
+
2
)
(
n
+
1
)
x
n
+
1
.
\frac{d}{dx}\frac{x^3}{(1-x)^2} = \sum_{n = 0}^{\infty}(n+2)(n+1)x^{n+1}.
dxd(1−x)2x3=n=0∑∞(n+2)(n+1)xn+1.
since
d
d
x
x
3
(
1
−
x
)
2
=
3
x
2
−
x
3
(
1
−
x
)
3
\frac{d}{dx}\frac{x^3}{(1-x)^2} = \frac{3x^2-x^3}{(1-x)^3}
dxd(1−x)2x3=(1−x)33x2−x3
3
x
−
x
2
(
1
−
x
)
3
=
∑
n
=
0
∞
(
n
+
2
)
(
n
+
1
)
x
n
\frac{3x-x^2}{(1-x)^3} = \sum_{n = 0}^{\infty}(n+2)(n+1)x^{n}
(1−x)33x−x2=n=0∑∞(n+2)(n+1)xn
The closed form of its generated function is:
3
x
−
x
2
2
⋅
(
1
−
x
)
3
.
\frac{3x-x^2}{2\cdot (1-x)^3}.
2⋅(1−x)33x−x2.