生成函数(母函数)
生成函数(母函数)
定义
生成函数(Generating Function)又称母函数,是处理组合数学问题的一大利器。
它是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。
生成函数有许多不同的种类,但大多可以表示为单一的形式:$$F(x)=\sum_{n}a_nk_n(x)$$
其中 \(k_n(x)\) 被称为核函数。不同的核函数会导出不同的生成函数,拥有不同的性质:
- 普通生成函数:\(k_n(x)=x^n\);
- 指数生成函数:\(k_n(x)=\frac{x_n}{n!}\)
- 狄利克雷生成函数:\(k_n(x)=\frac{1}{n^x}\)
同形式幂级数,我们常用 \([k_n(x)]F(x)\) 来表示它的第 \(n\) 项的核函数对应的系数,也就是 \(a_n\).
一些可能会用到得公式
- \((1+x)^n=C_{n}^{0} +C_{n}^{1}x+\cdots +C_{n}^{r}x^r+\cdots + C_{n}^{n}x^n\).
- \(\frac{1}{1-x}=1+x+x^2+\cdots+x^k+\cdots\)
- \((1-x)^{-n}=\sum_{k=0}^{\infty}C_{n+k-1}^{k}x^k\)
- \((a+b)^n=\sum_{i=0}^{n}C_{n}^{i}a^ib^{n-i}\)
普通生成函数
普通型母函数的特色是标志函数 \(f_k(x)=x^k\)。
常用来解决无标号有序的计数问题。
一、定义
对于序列 \(a_0,a_1,a_2+\cdots\) 的普通生成函数为形式幂级数 \(F(x)=\sum_{i\ge0}f_ix^i\),
若已知序列 \(a_0,a_1,a_2+\cdots\)
三、示例
例1
有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?每种重量各有几种可能方案?
\(1\)个\(1\)克砝码可以看成\(1+x^1\),\(1\)表示不取,\(x1\)表示取一个,以下同理。
\(1\)个\(2\)克砝码可以看成\(1+x^2\)
\(1\)个\(3\)克砝码可以看成\(1+x^3\)
\(1\)个\(4\)克砝码可以看成\(1+x^4\)
构造母函数 \(G(x)=(1+x)(1+x^2)(1+x^3)(1+x^4)\) \(=1+x+x^2+2x^3+2x^4+2x^5+2x^6+2x^7+x^8+x^9+x^{10}\)
在这个函数中,若指数表示可称出重量,系数表示方案数,则可以看出重量为\(3\)克、\(4\)克、\(5\)克、\(6\)克、\(7\)克的方案数均有两种,而重量为\(1\)克、\(2\)克、\(8\)克、\(9\)克、\(10\)克的方案只有\(1\)种。
例2
在许多不同种类的食物中选出 \(n\) 个,每种食物的限制如下:
承德汉堡:偶数个
可乐:\(0\) 个或 \(1\) 个
鸡腿:\(0\) 个,\(1\) 个或 \(2\) 个
蜜桃多:奇数个
鸡块:\(4\) 的倍数个
包子:\(0\) 个,\(1\) 个,\(2\) 个或 \(3\) 个
土豆片炒肉:不超过一个
面包:\(3\) 的倍数个
每种食物都是以「个」为单位,只要总数加起来是 \(n\) 就算一种方案。对于给出的 \(n\) 你需要计算出方案数,对 \(10007\) 取模。
对于每种食物的生成函数:
- 承德汉堡:\(1+x^2+x^4+\cdots=\frac{1}{1-x^2}\)
- 可乐:\(1+x\)
- 鸡腿:\(1+x+x^2=\frac{1-x^3}{1-x}\)
- 蜜桃多:\(x+x^3+x^5+\cdots=x(1+x^2+x^4+\cdots)=\frac{x}{1-x^2}\)
- 鸡块:\(1+x^4+x^8+\cdots=\frac{1}{1-x^4}\)
- 包子:\(1+x+x^2+x^3=\frac{1-x^4}{1-x}\)
- 土豆片炒肉:\(1+x\)
- 面包:\(1+x^3+x^6+\cdots=\frac{1}{1-x^3}\)
全部乘起来得到 \(\frac{x}{(1-x)^4}\) 即
所以答案为 \(C_{n+2}^{3}=\frac{(n+2)×(n+1)×n}{6}\)
例3
求斐波那契数列通项,已知 \(f_n= \left\{\begin{matrix} 1 & n\le 1\\ f_{n-1}+f_{n-2} & n > 1 \end{matrix}\right.\)
对于其母函数T有:
解得 $$F(x) = \frac{x}{1-x-x^2}$$
将 \(\frac{x}{1-x-x^2}\) 化开得
所以 $$f_n=\frac{1}{\sqrt{5}}(\frac{1+\sqrt{5}}{2})^n - \frac{1}{\sqrt{5}}(\frac{1-\sqrt{5}}{2})^n$$
指数生成函数
常用来解决有标号有序的计数问题
未完······

浙公网安备 33010602011771号