OGF
一般地,我们定义A(x)=∑i≥0aixiA(x)=\sum_{i\ge 0}a_ix^iA(x)=i≥0∑aixi为序列aaa的生成函数。
例如当序列aaa为ai=1a_i=1ai=1时,A(x)=1+x+x2+x3+⋯=11−xA(x)=1+x+x^2+x^3+\cdots=\frac{1}{1-x}A(x)=1+x+x2+x3+⋯=1−x1.
注意,在这种形式幂级数中,不考虑xxx的取值,不考虑序列的收敛或发散,仅仅关心的是序列aaa.
加法
A+BA+BA+B
(A+B)(x)=∑i≥0(Ai+Bi)xi(A+B)(x)=\sum_{i\ge 0}(A_i+B_i)x^i(A+B)(x)=i≥0∑(Ai+Bi)xi
乘法
A⋅BA·BA⋅B
(A⋅B)(x)=∑i≥0(∑j=0iAjBi−j)xi(A·B)(x)=\sum_{i\ge 0}(\sum_{j=0}^iA_jB_{i-j})x^i(A⋅B)(x)=i≥0∑(j=0∑iAjBi−j)xi
举例
-
1(1−x)m\frac{1}{(1-x)^m}(1−x)m1对应的序列1(1−x)m=(11−x)m=∑i≥0(i+m−1m−1)xi\frac{1}{(1-x)^m}=(\frac{1}{1-x})^m=\sum_{i\ge 0}\binom{i+m-1}{m-1}x^i(1−x)m1=(1−x1)m=i≥0∑(m−1i+m−1)xi
-
序列{0,1,4,9,⋯ ,n2,⋯ }\{0,1,4,9,\cdots,n^2,\cdots\}{0,1,4,9,⋯,n2,⋯}的生成函数:
令F(x)=∑i≥0i2xiF(x)=\sum_{i\ge 0}i^2x^iF(x)=∑i≥0i2xi,则xF(x)=∑i>0(i−1)2xixF(x)=\sum_{i\gt 0}(i-1)^2x^ixF(x)=i>0∑(i−1)2xiF(x)(1−x)=∑i>0(2i−1)xiF(x)(1-x)=\sum_{i\gt 0}(2i-1)x^iF(x)(1−x)=i>0∑(2i−1)xi由于1(1−x)2=1+2x+3x2+⋯\frac{1}{(1-x)^2}=1+2x+3x^2+\cdots(1−x)21=1+2x+3x2+⋯所以F(x)(1−x)=2∑i≥0ixi−x1−xF(x)(1-x)= 2\sum_{i\ge 0}ix^i-\frac{x}{1-x}F(x)(1−x)=2i≥0∑ixi−1−xx=2x(1−x)2−x1−x=\frac{2x}{(1-x)^2}-\frac{x}{1-x}=(1−x)22x−1−xx得到F(x)=x(x+1)(1−x)3F(x)=\frac{x(x+1)}{(1-x)^3}F(x)=(1−x)3x(x+1)
-
A,B,C,DA,B,C,DA,B,C,D四种物品无限个,要求取NNN个,使得AAA拿出偶数个,BBB拿出555的倍数个,CCC最多拿出444个,DDD最多拿111个,求方案数。
列一列生成函数:
g(x)=(1+x2+x4+⋯ )(1+x5+x10+⋯ )(1+x+x2+x3+x4)(1+x)=11−x211−x5(1+x+x2+x3+x4)(1+x)=11−x11−x=1(1−x)2\begin{aligned} g(x)&=(1+x^2+x^4+\cdots)(1+x^5+x^{10}+\cdots)(1+x+x^2+x^3+x^4)(1+x)\\ &= \frac{1}{1-x^2}\frac{1}{1-x^5}(1+x+x^2+x^3+x^4)(1+x)\\ &= \frac{1}{1-x}\frac{1}{1-x}\\ &= \frac{1}{(1-x)^2}\end{aligned}g(x)=(1+x2+x4+⋯)(1+x5+x10+⋯)(1+x+x2+x3+x4)(1+x)=1−x211−x51(1+x+x2+x3+x4)(1+x)=1−x11−x1=(1−x)21因此,对应的序列就是A(x)=1+2x+3x2+⋯A(x)=1+2x+3x^2+\cdotsA(x)=1+2x+3x2+⋯,[xn]A(x)=x+1[x^n]A(x)=x+1[xn]A(x)=x+1
-
一道组合题:化简A=∑j=0n∑k=j+1n(nj)(nk)(k−j)A=\sum_{j=0}^n\sum_{k=j+1}^n\binom{n}{j}\binom{n}{k}(k-j)A=j=0∑nk=j+1∑n(jn)(kn)(k−j)
A=∑r=1nr∑k−j=r(nj)(nk)=∑r=1nr(2nn+r)=n∑r=1n(2nn−r)−∑r=1n(n−r)(2nn−r)=n∑r=0n−1(2nr)−2n∑r=1n−1(2n−1n−r−1)=n∗(22n−(2nn))2−2n∑r=0n−2(2n−1r)=n∗(22n−(2nn))2−2n[22n−1−2(2n−1n−1)]2=n(2nn)2\begin{aligned} A&=\sum_{r=1}^nr\sum_{k-j=r}\binom{n}{j}\binom{n}{k}\\ &=\sum_{r=1}^nr\binom{2n}{n+r}\\ &=n\sum_{r=1}^n\binom{2n}{n-r}-\sum_{r=1}^n(n-r)\binom{2n}{n-r}\\ &=n\sum_{r=0}^{n-1}\binom{2n}{r}-2n\sum_{r=1}^{n-1}\binom{2n-1}{n-r-1}\\&=n*\frac{(2^{2n}-\binom{2n}{n})}{2}-2n\sum_{r=0}^{n-2}\binom{2n-1}{r}\\ &=n*\frac{(2^{2n}-\binom{2n}{n})}{2}-\frac{2n[2^{2n-1}-2\binom{2n-1}{n-1}]}{2}\\ &= \frac{n\binom{2n}{n}}{2} \end{aligned}A=r=1∑nrk−j=r∑(jn)(kn)=r=1∑nr(n+r2n)=nr=1∑n(n−r2n)−r=1∑n(n−r)(n−r2n)=nr=0∑n−1(r2n)−2nr=1∑n−1(n−r−12n−1)=n∗2(22n−(n2n))−2nr=0∑n−2(r2n−1)=n∗2(22n−(n2n))−22n[22n−1−2(n−12n−1)]=2n(n2n)
EGF
对于序列AiA_iAi,定义其指数生成函数为A(x)=∑i≥0Aii!xiA(x)=\sum_{i\ge 0}\frac{A_i}{i!}x^iA(x)=i≥0∑i!Aixi
事实上,EGFEGFEGF的应用更加巧妙,我们实际处理中,一般存的是Aii!\frac{A_i}{i!}i!Ai的值,当要求第iii项系数时,才把i!i!i!乘上去得到对应系数。
乘法
令C=A⋅BC=A·BC=A⋅B,则
C(i)=∑j=0i(ij)AjBi−j=i!(∑j=0i[xj]A(x)[xi−j]B(x))C(i)=\sum_{j=0}^i\binom{i}{j}A_jB_{i-j}=i!(\sum_{j=0}^i[x^j]A(x)[x^{i-j}]B(x))C(i)=j=0∑i(ji)AjBi−j=i!(j=0∑i[xj]A(x)[xi−j]B(x))
C(x)=∑i≥0Cii!xi=∑i≥0(∑j=0i[xj]A(x)[xi−j]B(x))xiC(x)=\sum_{i\ge 0}\frac{C_i}{i!}x_i=\sum_{i\ge 0}(\sum_{j=0}^i[x^j]A(x)[x^{i-j}]B(x))x_iC(x)=i≥0∑i!Cixi=i≥0∑(j=0∑i[xj]A(x)[xi−j]B(x))xi
可以看出,CCC的EGFEGFEGF实际上就是A,BA,BA,B的EGFEGFEGF的卷积.
常用EGF
EGFEGFEGF中常常用到exe^xex的泰勒展开,即ex=∑i≥0xii!e^x=\sum_{i\ge 0}\frac{x^i}{i!}ex=i≥0∑i!xi.
类似的,我们还有一些式子:ex+e−x2=∑imod  2=0xii!\frac{e^x+e^{-x}}{2}=\sum_{i\mod 2 = 0}\frac{x^i}{i!}2ex+e−x=imod2=0∑i!xiex−e−x2=∑imod  2=1xii!\frac{e^x-e^{-x}}{2}=\sum_{i\mod 2 = 1}\frac{x^i}{i!}2ex−e−x=imod2=1∑i!xi
举例
-
六个数字,三个数字111,两个数字666,一个数字888,求能组成多少个不同的四位数.
因为有排列,所以OGFOGFOGF显然是不可以了。考虑EGFEGFEGF,设Ge(x)=(1+x+x22!+x33!)(1+x+x22!)(1+x)G_e(x)=(1+x+\frac{x^2}{2!}+\frac{x^3}{3!})(1+x+\frac{x^2}{2!})(1+x)Ge(x)=(1+x+2!x2+3!x3)(1+x+2!x2)(1+x)其中,[x4]Ge(x)=38⋅x44![x^4]G_e(x)=38·\frac{x^4}{4!}[x4]Ge(x)=38⋅4!x4,所以方案数是38种。
而此问题实际上考虑的是具有重复元素的排列问题,即是在运用公式total=n!a1!a2!⋯am!total=\frac{n!}{a_1!a_2!\cdots a_m!}total=a1!a2!⋯am!n!