生成函数

OGF

一般地,我们定义A(x)=∑i≥0aixiA(x)=\sum_{i\ge 0}a_ix^iA(x)=i0aixi为序列aaa的生成函数。

例如当序列aaaai=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+=1x1.

注意,在这种形式幂级数中,不考虑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)=i0(Ai+Bi)xi

乘法

A⋅BA·BAB

(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(AB)(x)=i0(j=0iAjBij)xi

举例
  1. 1(1−x)m\frac{1}{(1-x)^m}(1x)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(1x)m1=(1x1)m=i0(m1i+m1)xi

  2. 序列{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)=i0i2xi,则xF(x)=∑i>0(i−1)2xixF(x)=\sum_{i\gt 0}(i-1)^2x^ixF(x)=i>0(i1)2xiF(x)(1−x)=∑i>0(2i−1)xiF(x)(1-x)=\sum_{i\gt 0}(2i-1)x^iF(x)(1x)=i>0(2i1)xi由于1(1−x)2=1+2x+3x2+⋯\frac{1}{(1-x)^2}=1+2x+3x^2+\cdots(1x)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)(1x)=2i0ixi1xx=2x(1−x)2−x1−x=\frac{2x}{(1-x)^2}-\frac{x}{1-x}=(1x)22x1xx得到F(x)=x(x+1)(1−x)3F(x)=\frac{x(x+1)}{(1-x)^3}F(x)=(1x)3x(x+1)

  3. 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)=1x211x51(1+x+x2+x3+x4)(1+x)=1x11x1=(1x)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

  4. 一道组合题:化简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=0nk=j+1n(jn)(kn)(kj)

    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=1nrkj=r(jn)(kn)=r=1nr(n+r2n)=nr=1n(nr2n)r=1n(nr)(nr2n)=nr=0n1(r2n)2nr=1n1(nr12n1)=n2(22n(n2n))2nr=0n2(r2n1)=n2(22n(n2n))22n[22n12(n12n1)]=2n(n2n)

EGF

对于序列AiA_iAi,定义其指数生成函数A(x)=∑i≥0Aii!xiA(x)=\sum_{i\ge 0}\frac{A_i}{i!}x^iA(x)=i0i!Aixi

事实上,EGFEGFEGF的应用更加巧妙,我们实际处理中,一般存的是Aii!\frac{A_i}{i!}i!Ai的值,当要求第iii项系数时,才把i!i!i!乘上去得到对应系数。

乘法

C=A⋅BC=A·BC=AB,则
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=0i(ji)AjBij=i!(j=0i[xj]A(x)[xij]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)=i0i!Cixi=i0(j=0i[xj]A(x)[xij]B(x))xi

可以看出,CCCEGFEGFEGF实际上就是A,BA,BA,BEGFEGFEGF的卷积.

常用EGF

EGFEGFEGF中常常用到exe^xex的泰勒展开,即ex=∑i≥0xii!e^x=\sum_{i\ge 0}\frac{x^i}{i!}ex=i0i!xi.

类似的,我们还有一些式子:ex+e−x2=∑imod  2=0xii!\frac{e^x+e^{-x}}{2}=\sum_{i\mod 2 = 0}\frac{x^i}{i!}2ex+ex=imod2=0i!xiex−e−x2=∑imod  2=1xii!\frac{e^x-e^{-x}}{2}=\sum_{i\mod 2 = 1}\frac{x^i}{i!}2exex=imod2=1i!xi

举例
  1. 六个数字,三个数字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)=384!x4,所以方案数是38种。

    而此问题实际上考虑的是具有重复元素的排列问题,即是在运用公式total=n!a1!a2!⋯am!total=\frac{n!}{a_1!a_2!\cdots a_m!}total=a1!a2!am!n!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值