说实话这东西至少得学一天……
普通型生成函数 OGF
数列
f
(
x
)
=
a
x
f(x)=a_x
f(x)=ax的普通型生成函数为
g
(
x
)
=
∑
i
=
0
∞
a
i
x
i
g(x)=\sum_{i=0}^\infty a_ix^i
g(x)=∑i=0∞aixi。
一般来说,
f
(
x
)
f(x)
f(x)是有特殊性质的。它会得到一些特殊的生成函数。在收敛意义下(假设函数会收敛)
x
∈
[
−
1
,
1
]
x\in[-1,1]
x∈[−1,1]时,由等比数列计算公式
∑
i
=
0
n
−
1
a
0
q
i
=
a
0
(
1
−
q
n
)
1
−
q
\sum_{i=0}^{n-1}a_0q^i=\frac{a_0(1-q^n)}{1-q}
∑i=0n−1a0qi=1−qa0(1−qn), 生成函数有以下计算公式:
∑
i
=
0
∞
x
i
=
1
1
−
x
\sum_{i=0}^\infty x^i=\frac{1}{1-x}
∑i=0∞xi=1−x1,即
f
(
x
)
=
1
f(x)=1
f(x)=1的生成函数为
g
(
x
)
=
1
1
−
x
g(x)=\frac{1}{1-x}
g(x)=1−x1。
∑
i
=
0
n
C
n
i
x
i
=
(
1
+
x
)
n
\sum_{i=0}^n C_n^ix^i=(1+x)^n
∑i=0nCnixi=(1+x)n,即
f
(
x
)
=
C
n
x
f(x)=C_n^x
f(x)=Cnx的生成函数。这其实是二项式定理。
∑
i
=
0
∞
C
n
+
i
−
1
i
x
i
=
1
(
1
−
x
)
n
\sum_{i=0}^\infty C_{n+i-1}^ix^i=\frac{1}{(1-x)^n}
∑i=0∞Cn+i−1ixi=(1−x)n1,即
f
(
x
)
=
C
n
+
x
−
1
x
f(x)=C_{n+x-1}^x
f(x)=Cn+x−1x的生成函数。(广义二项式定理)
∑
i
=
0
∞
(
i
+
1
)
x
i
=
1
(
1
−
x
)
2
\sum_{i=0}^\infty (i+1)x^i=\frac{1}{(1-x)^2}
∑i=0∞(i+1)xi=(1−x)21,即
f
(
x
)
=
x
+
1
f(x)=x+1
f(x)=x+1的生成函数。这是上式的特殊情况。
在第一个式子中,将
x
x
x代为其它式子,有:
∑
i
=
0
∞
x
k
i
=
1
1
−
x
k
\sum_{i=0}^\infty x^{ki}=\frac{1}{1-x^k}
∑i=0∞xki=1−xk1,即
f
(
x
)
=
[
k
∣
x
]
f(x)=[k|x]
f(x)=[k∣x]的生成函数。
∑
i
=
m
∞
x
i
=
x
m
1
−
x
\sum_{i=m}^\infty x^i=\frac{x^m}{1-x}
∑i=m∞xi=1−xxm,即
f
(
x
)
=
[
x
≥
m
]
f(x)=[x\ge m]
f(x)=[x≥m]的生成函数。
∑
i
=
0
∞
a
i
x
i
=
1
1
−
a
x
\sum_{i=0}^\infty a^ix^i=\frac{1}{1-ax}
∑i=0∞aixi=1−ax1,即
f
(
x
)
=
a
x
f(x)=a^x
f(x)=ax的生成函数。
还有一些显然的式子,如:
∑
i
=
0
n
x
i
=
1
−
x
n
+
1
1
−
x
\sum_{i=0}^n x^i=\frac{1-x^{n+1}}{1-x}
∑i=0nxi=1−x1−xn+1,即
f
(
x
)
=
1
(
x
≤
n
)
f(x)=1(x\le n)
f(x)=1(x≤n)的生成函数。
将以上形式进行组合,还可以得到多种生成函数。得到生成函数后,从右反推到左得到原函数。
生成函数的意义在于将复杂的组合问题转化为简单的计算问题。普通型生成函数做组合问题,而指数型生成函数做排列问题。
练习题:求选n个水果的方案数。苹果和香蕉有无限个,但苹果必须成对拿,而香蕉必须五个一组地拿;橘子只有4个,梨只有一个。
设
f
(
n
)
f(n)
f(n)表示选
n
n
n个水果的方案数。将每种水果的生成函数乘起来,有
g
(
x
)
=
∑
i
=
0
∞
x
2
i
∑
i
=
0
∞
x
5
i
∑
i
=
0
4
x
i
∑
i
=
0
1
x
i
g(x)=\sum_{i=0}^\infty x^{2i}\sum_{i=0}^\infty x^{5i}\sum_{i=0}^4 x^i\sum_{i=0}^1 x^i
g(x)=i=0∑∞x2ii=0∑∞x5ii=0∑4xii=0∑1xi
=
1
1
−
x
2
1
1
−
x
5
1
−
x
5
1
−
x
(
1
+
x
)
=\frac{1}{1-x^2}\frac{1}{1-x^5}\frac{1-x^5}{1-x}(1+x)
=1−x211−x511−x1−x5(1+x)
=
1
(
1
−
x
)
2
=\frac{1}{(1-x)^2}
=(1−x)21
由开篇第四个式子,得
f
(
x
)
=
x
+
1
f(x)=x+1
f(x)=x+1。
求斐波那契数列通项
斐波那契数列的生成函数为
g
(
x
)
=
x
+
x
2
+
2
x
3
+
3
x
4
+
5
x
5
+
8
x
6
+
.
.
.
g(x)=x+x^2+2x^3+3x^4+5x^5+8x^6+...
g(x)=x+x2+2x3+3x4+5x5+8x6+...
由数列性质容易推知
x
2
g
(
x
)
+
x
g
(
x
)
+
x
=
g
(
x
)
x^2g(x)+xg(x)+x=g(x)
x2g(x)+xg(x)+x=g(x)
整理得
g
(
x
)
=
x
1
−
x
−
x
2
g(x)=\frac{x}{1-x-x^2}
g(x)=1−x−x2x
我们需要将生成函数还原。设
g
(
x
)
=
a
1
−
c
x
+
b
1
−
d
x
g(x)=\frac{a}{1-cx}+\frac{b}{1-dx}
g(x)=1−cxa+1−dxb
化简解得参数,于是得到递推式。具体请读者计算。
开篇第四个式子的解释
upd on 2019.4.18
广义二项式定理描述为
1
(
1
−
x
)
n
=
∑
i
=
0
∞
(
−
n
i
)
x
i
\frac{1}{(1-x)^n}=\sum_{i=0}^\infty\binom{-n}{i}x^i
(1−x)n1=i=0∑∞(i−n)xi
其中
(
−
n
i
)
=
(
−
n
)
!
i
!
(
−
n
−
i
)
!
=
(
−
1
)
n
−
1
1
(
n
−
1
)
!
∞
i
!
(
−
1
)
n
+
i
−
1
1
(
n
+
i
−
1
)
!
∞
=
(
n
+
i
−
1
)
!
i
!
(
−
1
)
i
(
n
−
1
)
!
=
(
−
1
)
i
(
n
+
i
−
1
i
)
\binom{-n}{i}=\frac{(-n)!}{i!(-n-i)!}=\frac{(-1)^{n-1}\frac{1}{(n-1)!}\infty}{i!(-1)^{n+i-1}\frac{1}{(n+i-1)!}\infty}=\frac{(n+i-1)!}{i!(-1)^i(n-1)!}=(-1)^i\binom{n+i-1}{i}
(i−n)=i!(−n−i)!(−n)!=i!(−1)n+i−1(n+i−1)!1∞(−1)n−1(n−1)!1∞=i!(−1)i(n−1)!(n+i−1)!=(−1)i(in+i−1)
然后再吃掉一个负号就行了。
总之原来写的式子肯定是对的……这个是什么我就不知道了
指数型生成函数 EGF
函数
f
(
x
)
=
a
x
f(x)=a_x
f(x)=ax的指数型生成函数为
h
(
x
)
=
∑
i
=
0
∞
a
i
x
i
i
!
h(x)=\sum_{i=0}^\infty \frac{a_ix^i}{i!}
h(x)=∑i=0∞i!aixi。
由泰勒展开,新的公式是
∑
i
=
0
∞
x
i
i
!
=
e
x
\sum_{i=0}^\infty \frac{x^i}{i!}=e^x
∑i=0∞i!xi=ex。同样可以通过代换
x
x
x得到很多公式变形。以下为典型变形:
∑
i
=
0
∞
x
2
i
(
2
i
)
!
=
e
x
+
e
−
x
2
\sum_{i=0}^\infty \frac{x^{2i}}{(2i)!}=\frac{e^x+e^{-x}}{2}
∑i=0∞(2i)!x2i=2ex+e−x;
∑
i
=
0
∞
x
2
i
+
1
(
2
i
+
1
)
!
=
e
x
−
e
−
x
2
\sum_{i=0}^\infty \frac{x^{2i+1}}{(2i+1)!}=\frac{e^x-e^{-x}}{2}
∑i=0∞(2i+1)!x2i+1=2ex−e−x。
数列{0,1,0,-1,0,1,0,-1….}的指数型生成函数为sin(x),数列{1,0,-1,0,1,0,-1,0….}的指数型生成函数为cos(x)。
练习题:求选n个水果的方案数。苹果、香蕉、橙子、梨都有无限个,但苹果要选奇数个,香蕉要选偶数个。每个水果都不同。
因为是排列问题,所以用指数型生成函数。
h
(
x
)
=
e
x
−
e
−
x
2
e
x
+
e
−
x
2
(
e
x
)
2
h(x)=\frac{e^x-e^{-x}}{2}\frac{e^x+e^{-x}}{2}(e^x)^2
h(x)=2ex−e−x2ex+e−x(ex)2
=
e
4
x
−
1
4
=\frac{e^{4x}-1}{4}
=4e4x−1
=
∑
i
=
1
∞
4
i
x
i
i
!
4
=\frac{\sum_{i=1}^\infty4^i\frac{x^i}{i!}}{4}
=4∑i=1∞4ii!xi
=
∑
i
=
1
∞
4
i
−
1
x
i
i
!
=\sum_{i=1}^\infty4^{i-1}\frac{x^i}{i!}
=i=1∑∞4i−1i!xi
于是
f
(
x
)
=
4
x
−
1
f(x)=4^{x-1}
f(x)=4x−1。
生成函数的运算
upd on 2019.1.28
无论是OGF还是EGF,生成函数都可以如下计算:
- F + G F+G F+G意义为可能是两种情况中的一种。
- F G FG FG意义为同时选择两种情况。
- e F e^F eF意义为自我组合(合并)。
练习题
大朋友与多叉树
叶子结点权值为 1 1 1,非叶子结点权值为儿子的权值的和,且其儿子个数 ∈ D \in D ∈D。求这样的根节点权值为 S S S的无标号且儿子形状有序的树的个数。
设 F F F表示根节点权值为 x x x的树的方案数OGF。考虑一个方案是什么,即可能是儿子数 ∈ D \in D ∈D的OGF,还有可能是一个权值为 1 1 1的叶子,其方案数为 1 1 1。 d d d个儿子是必须同时选择 d d d棵子树的, d d d可能是 D D D中的任何一个元素。由上,转移公式为 F = 1 @ 1 + ∑ d ∈ D F d F=1@1+\sum_{d\in D}F^d F=1@1+∑d∈DFd,其中 1 @ 1 1@1 1@1表示 1 x 1 1x^1 1x1。
于是用拉格朗日反演解出 F F F的第 S S S项即可。
城市规划
(2018.12.5)
求
n
n
n个点的有标号的简单连通无向图的个数。
n
≤
130000
n\le 130000
n≤130000。
在本题中,“有标号简单连通无向图计数”的组合是“有标号简单无向图”,因此我们只需解决有标号简单无向图计数,然后用多项式取对数即可。
而有标号简单无向图计数非常简单,答案就是
2
(
n
2
)
2^{n\choose 2}
2(2n)。其指数型生成函数为
G
(
x
)
=
∑
i
=
0
∞
2
(
i
2
)
x
i
i
!
G(x)=\sum_{i=0}^\infty2^{i\choose 2}\frac{x^i}{i!}
G(x)=∑i=0∞2(2i)i!xi。