定义
f(x)=a0+a1x+a2x2+a3x3+...f(x)=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+...f(x)=a0+a1x+a2x2+a3x3+...称f(x)f(x)f(x)是序列a0,a1,a2,a3...a_{0},a_{1},a_{2},a_{3}...a0,a1,a2,a3...的生成函数
题目
有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?每种重量各有几种可能方案?
- 111个111克砝码可以看成1+x11+x^{1}1+x1,1表示不取,x1x^{1}x1表示取一个重量为111。
- 1个2克砝码可以看成1+x21+x^{2}1+x2,…
- 1个3克砝码可以看成1+x31+x^{3}1+x3,…
- 1个4克砝码可以看成1+x41+x^{4}1+x4,…
- 那么生成函数就是
f(x)=(1+x1)(1+x2)(1+x3)(1+x4)f(x)=(1+x^{1})(1+x^{2})(1+x^{3})(1+x^{4})f(x)=(1+x1)(1+x2)(1+x3)(1+x4)
f(x)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10f(x)=1+x+x^{2}+2x^{3}+2x^{4}+2x^{5}+2x^{6}+2x^{7}+x^{8}+x^{9}+x^{10}f(x)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10 - 这个函数中可以看出重量为3克的方案有两种,重量为7的方案有两种,重量为10的有1种。
- 不难发现指数表示重量,系数表示方案数。
特殊情况
当aaa = {1,1,1,..11,1,1,..11,1,1,..1}时,f(x)=1+x+x2+x3+x4+...=11−xf(x)=1+x+x^{2}+x^{3}+x^{4}+...=\frac{1}{1-x}f(x)=1+x+x2+x3+x4+...=1−x1
推广 1(1−x)k=∑i=0∞Ci+k−1k−1xi=fk(x)\frac{1}{(1-x)^{k}}=\sum_{i=0}^{\infty}C_{i+k-1}^{k-1}x^{i}=f^{k}(x)(1−x)k1=∑i=0∞Ci+k−1k−1xi=fk(x)(相当于从k个[x0,xi][x^{0},x^{i}][x0,xi]的集合中选择一些数,使得选出数的指数和为k的方案数)
斐波那契数列通项公式
f(x)=x+x2+2x3+3x4+...f(x)=x+x^{2}+2x^{3}+3x^{4}+...f(x)=x+x2+2x3+3x4+...
x⋅f(x)=x2+x3+2x4+3x4+...x\cdot f(x)=x^{2}+x^{3}+2x^{4}+3x^{4}+...x⋅f(x)=x2+x3+2x4+3x4+...
f(x)−x⋅f(x)=x+x3+x4+...=x+x2⋅f(x)f(x)-x\cdot f(x)=x+x^{3}+x^{4}+...=x+x^{2}\cdot f(x)f(x)−x⋅f(x)=x+x3+x4+...=x+x2⋅f(x)
f(x)=11−x−x2=x(1−1−52x)(1−1+52x)=−1511−1−52x+1511−1+52xf(x)=\frac{1}{1-x-x^{2}}=\frac{x}{(1-\frac{1-\sqrt{5}}{2}x)(1-\frac{1+\sqrt{5}}{2}x)}=-\frac{1}{\sqrt{5}}\frac{1}{1-\frac{1-\sqrt{5}}{2}x}+\frac{1}{\sqrt{5}}\frac{1}{1-\frac{1+\sqrt{5}}{2}x}f(x)=1−x−x21=(1−21−5x)(1−21+5x)x=−511−21−5x1+511−21+5x1
an=−15(1−52)n+15(1+52)na_{n}=-\frac{1}{\sqrt{5}}(\frac{1-\sqrt{5}}{2})^{n}+\frac{1}{\sqrt{5}}(\frac{1+\sqrt{5}}{2})^{n}an=−51(21−5)n+51(21+5)n
指数生成函数
ex=∑n=0∞xnn!=1+x+x22!+...+xnn!+...e^{x}=\sum_{n=0}^{\infty}\frac{x^{n}}{n!}=1+x+\frac{x^{2}}{2!}+...+\frac{x^{n}}{n!}+...ex=n=0∑∞n!xn=1+x+2!x2+...+n!xn+...
数列h0,h1,h2,...,hnh_{0},h_{1},h_{2},...,h_{n}h0,h1,h2,...,hn的指数型生成函数为
g(e)(x)=∑n=0∞hnxnn!=h0+h1x+h2x22!+...+hnxnn!+...g^{(e)}(x)=\sum_{n=0}^{\infty}h_{n}\frac{x^{n}}{n!}=h_{0}+h_{1}x+h_{2}\frac{x^{2}}{2!}+...+h_{n}\frac{x^{n}}{n!}+...g(e)(x)=n=0∑∞hnn!xn=h0+h1x+h22!x2+...+hnn!xn+...
常用指数型生成函数闭形式
1+x+x22!+x33!+...=ex1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+...=e^{x}1+x+2!x2+3!x3+...=ex
1−x+x22!−x33!+...=e−x1-x+\frac{x^{2}}{2!}-\frac{x^{3}}{3!}+...=e^{-x}1−x+2!x2−3!x3+...=e−x
1+x22!+x44!+x66!+...=ex+e−x21+\frac{x^{2}}{2!}+\frac{x^{4}}{4!}+\frac{x^{6}}{6!}+...=\frac{e^{x}+e^{-x}}{2}1+2!x2+4!x4+6!x6+...=2ex+e−x
x+x33!+x55!+x77!+...=ex−e−x2x+\frac{x^{3}}{3!}+\frac{x^{5}}{5!}+\frac{x^{7}}{7!}+...=\frac{e^{x}-e^{-x}}{2}x+3!x3+5!x5+7!x7+...=2ex−e−x
定理
假设有k种元素(元素内不区分),每一种分别有n1,n2,n3,...,nkn_{1},n_{2},n_{3},...,n_{k}n1,n2,n3,...,nk个,hnh_{n}hn表示大小为n的排列有多少种情况,那么数列h0,h1,h2,...,hnh_{0},h_{1},h_{2},...,h{n}h0,h1,h2,...,hn的指数型生成函数为:
g(e)(x)=fn1(x)fn2(x)...fnk(x)g^{(e)}(x)=f_{n_{1}}(x)f_{n_{2}}(x)...f_{n_{k}}(x)g(e)(x)=fn1(x)fn2(x)...fnk(x)
fni(x)=1+x+x22!+x33!+...+xnini!f_{n_{i}}(x)=1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+...+\frac{x^{n_{i}}}{n_{i}!}fni(x)=1+x+2!x2+3!x3+...+ni!xni
考虑把g(e)(x)g^{(e)}(x)g(e)(x)展开,应该是如下形式:
xm1m1!⋅xm2m2!⋅...⋅xmkmk!=xm1+m2+...+mkm1!⋅m2!⋅...⋅mk!\frac{x^{m_{1}}}{m_{1}!}\cdot \frac{x^{m_{2}}}{m_{2}!}\cdot...\cdot\frac{x^{m_{k}}}{m_{k}!}=\frac{x^{m_{1}+m_{2}+...+m_{k}}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}m1!xm1⋅m2!xm2⋅...⋅mk!xmk=m1!⋅m2!⋅...⋅mk!xm1+m2+...+mk
设n=m1+m2+m3+...+mkn=m_{1}+m_{2}+m_{3}+...+m_{k}n=m1+m2+m3+...+mk,则:
xm1+m2+...+mkm1!⋅m2!⋅...⋅mk!=xnm1!⋅m2!⋅...⋅mk!=n!⋅xnm1!⋅m2!⋅...⋅mk!⋅n!=n!m1!⋅m2!⋅...⋅mk!xnn!\frac{x^{m_{1}+m_{2}+...+m_{k}}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}=\frac{x^{n}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}=\frac{n!\cdot x^{n}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!\cdot n!}=\frac{{n!}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}\frac{x^{n}}{n!}m1!⋅m2!⋅...⋅mk!xm1+m2+...+mk=m1!⋅m2!⋅...⋅mk!xn=m1!⋅m2!⋅...⋅mk!⋅n!n!⋅xn=m1!⋅m2!⋅...⋅mk!n!n!xn
对于n=m1+m2+m3+...+mkn=m_{1}+m_{2}+m_{3}+...+m_{k}n=m1+m2+m3+...+mk,大小为nnn的排列数就为:
∑n!m1!⋅m2!⋅...⋅mk!\sum \frac{{n!}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}∑m1!⋅m2!⋅...⋅mk!n!
证毕
指数生成函数例题
用红,白,蓝三种颜色给1∗n1*n1∗n的棋盘着色,要求红色的方格数是偶数,确定给这个棋盘着色的方法数
设hnh_{n}hn表示这样的着色数,其中我们定义h0=1h_{0}=1h0=1
- 令hnh_{n}hn为有3种颜色(红,白,蓝)的多重集合的n排列数,其中每一种颜色可以使用∞\infty∞次,且要求红色出现的次数是偶数。
- 我们能过得到一个生成函数:
g(e)(x)=(1+x22!+x44!+...)(1+x11!+x22!+...)(1+x11!+x22!+...)g^{(e)}(x)=(1+\frac{x^{2}}{2!}+\frac{x^{4}}{4!}+...)(1+\frac{x^{1}}{1!}+\frac{x^2}{2!}+...)(1+\frac{x^{1}}{1!}+\frac{x^2}{2!}+...)g(e)(x)=(1+2!x2+4!x4+...)(1+1!x1+2!x2+...)(1+1!x1+2!x2+...)
g(e)(x)=12(ex+e−x)⋅e2x=12(e3x+ex)g^{(e)}(x)=\frac{1}{2}(e^{x}+e^{-x})\cdot e^{2x}=\frac{1}{2}(e^{3x}+e^{x})g(e)(x)=21(ex+e−x)⋅e2x=21(e3x+ex)
g(e)(x)=12(∑n=0∞3nxnn!+∑n=0∞xnn!)=12∑n=0∞(3n+1)xnn!g^{(e)}(x)=\frac{1}{2}(\sum_{n=0}^{\infty}3^{n}\frac{x^{n}}{n!}+\sum_{n=0}^{\infty}\frac{x^{n}}{n!})=\frac{1}{2}\sum_{n=0}^{\infty}(3^{n}+1)\frac{x^{n}}{n!}g(e)(x)=21(n=0∑∞3nn!xn+n=0∑∞n!xn)=21n=0∑∞(3n+1)n!xn
hn=3n+12h_{n}=\frac{3^{n}+1}{2}hn=23n+1