生成函数
生成函数即母函数,是组合数学中尤其是计数方面的一个重要理论和工具。
生成函数有普通型生成函数和指数型生成函数两种,其中普通型用的比较多。形式上说,普通型生成函数用于解决多重集的组合问题,而指数型母函数用于解决多重集的排列问题。
生成函数的应用简单来说在于研究未知(通项)数列规律,用这种方法在给出递推式的情况下求出数列的通项,生成函数是推导Fibonacci数列的通项公式方法之一,另外组合数学中的Catalan数也可以通过生成函数的方法得到 ——百度百科
参考博客:https://blog.youkuaiyun.com/wu_tongtong/article/details/78854572
1.普通型生成函数(多重集的组合问题)
1.1单下标序列生成函数
A(x)=∑n=0∞anxnA(x)=\displaystyle\sum_{n=0}^{\infty}a_nx^nA(x)=n=0∑∞anxn
1.2双下标序列生成函数
A(x1,x2)=∑n=0∞a(n,m)x1nx2mA(x_1,x_2)=\displaystyle\sum_{n=0}^{\infty}a_{(n,m)}x_1^nx_2^mA(x1,x2)=n=0∑∞a(n,m)x1nx2m
2.常见的普通型生成函数
2.1二项式系数
序列a(n,m)=(nm)=Cnm,m∈[0,n]a_{(n,m)}= \binom{n}{m}=C_n^m,m\in[0,n]a(n,m)=(mn)=Cnm,m∈[0,n]
其生成函数A(x,y)=∑k=0nCnkxn−kyk=(x+y)nA(x,y)=\displaystyle\sum_{k=0}^{n}C_n^kx^{n-k}y^{k}=(x+y)^nA(x,y)=k=0∑nCnkxn−kyk=(x+y)n
2.2斐波那契数列
序列Fn=15⋅((1+52)n−(1−52)n)F_n=\cfrac{1}{\sqrt{5}}·\big((\cfrac{1+\sqrt{5}}{2})^n-(\cfrac{1-\sqrt{5}}{2})^n\big)Fn=51⋅((21+5)n−(21−5)n)
或者表示为
F(n)=F(n−1)+F(n)F(n)=F(n-1)+F(n)F(n)=F(n−1)+F(n)
F(0)=0,F(1)=1F(0)=0,F(1)=1F(0)=0,F(1)=1
S(n)=F(1)+F(2)+⋯+F(n)=F(n+2)−1S(n)=F(1)+F(2)+\cdots+F(n)=F(n+2)-1S(n)=F(1)+F(2)+⋯+F(n)=F(n+2)−1
当且仅当nnn能被3整除时,F(n)F(n)F(n)是偶数
其生成函数A(x)=∑n=0∞Fnxn=11−x−x2A(x)=\displaystyle\sum_{n=0}^{\infty}F_nx^n=\cfrac{1}{1-x-x^2}A(x)=n=0∑∞Fnxn=1−x−x21
2.3
序列an=1a_n=1an=1
其生成函数A(x)=∑n=0∞anxn=11−xA(x)=\displaystyle\sum_{n=0}^{\infty}a_nx^n=\cfrac{1}{1-x}A(x)=n=0∑∞anxn=1−x1
显然序列bn=nb_n=nbn=n
其生成函数B(x)=A′(x)=∑n=0∞bnxn=(11−x)2B(x)=A'(x)=\displaystyle\sum_{n=0}^{\infty}b_nx^n=(\cfrac{1}{1-x})^2B(x)=A′(x)=n=0∑∞bnxn=(1−x1)2
并可以往下递推A′′(x),A′′′(x)⋯A''(x),A'''(x)\cdotsA′′(x),A′′′(x)⋯
3.定理
3.1.
设从n元集合S={M1a1,M2a2,M3a3,⋯ ,Mnan}S=\{M_1a_1,M_2a_2,M_3a_3,\cdots,M_na_n\}S={M1a1,M2a2,M3a3,⋯,Mnan}中取出k个元素组成新的序列bkb_kbk,第i个元素aia_iai有MiM_iMi个
新序列bkb_kbk的生成函数为∏i=0n(∑m∈Mixm)\displaystyle\prod_{i=0}^{n}\big(\sum_{m\in M_i}^{}x^m\big)i=0∏n(m∈Mi∑xm)
例:用重量分别为1、2、4克的砝码各两个可以组成多少种不同的重量,每种重量的方案数分别为多少?
1克砝码(1+x+x2)(1+x+x^2)(1+x+x2) 1为不选,xxx为选一个,x2x^2x2为选两个
2克砝码(1+x2+x4)(1+x^2+x^4)(1+x2+x4) 1为不选,x2x^2x2为选一个,x4x^4x4为选两个
4克砝码(1+x4+x8)(1+x^4+x^8)(1+x4+x8) 1为不选,x4x^4x4为选一个,x8x^8x8为选两个
所以生成函数为A(x)=(1+x+x2)(1+x2+x4)(1+x4+x8)A(x)=(1+x+x^2)(1+x^2+x^4)(1+x^4+x^8)A(x)=(1+x+x2)(1+x2+x4)(1+x4+x8)
展开为A(x)=1+x+2x2+x3+3x4+2x5+4x6+4x7+4x8+⋯+x21A(x)=1+x+2x^2+x^3+3x^4+2x^5+4x^6+4x^7+4x^8+\cdots+x^{21}A(x)=1+x+2x2+x3+3x4+2x5+4x6+4x7+4x8+⋯+x21
不难发现指数为砝码组成的重量,系数为方案数
3.2.
An(x)=1(1+x)(1+x+x2)⋯(1+x+x2+⋯+xn−1)=∏j=1n(1−xj)(1−x)nA_n(x)=1(1+x)(1+x+x^2)\cdots(1+x+x^2+\cdots+x^{n-1})=\cfrac{\displaystyle\prod_{j=1}^{n}(1-x^j)}{(1-x)^n}An(x)=1(1+x)(1+x+x2)⋯(1+x+x2+⋯+xn−1)=(1−x)nj=1∏n(1−xj)
4.指数型生成函数(多重集的排列问题)
A(x)=∑n=0∞anxnn!A(x)=\displaystyle\sum_{n=0}^{\infty}a_n\cfrac{x^n}{n!}A(x)=n=0∑∞ann!xn
5.常见的指数型生成函数
5.1
序列an=1a_n=1an=1
其生成函数A(x)=∑n=0∞xnn!=exA(x)=\displaystyle\sum_{n=0}^{\infty}\cfrac{x^n}{n!}=e^xA(x)=n=0∑∞n!xn=ex
5.2
序列an=pna_n=p^nan=pn
其生成函数A(x)=∑n=0∞pnxnn!=epnA(x)=\displaystyle\sum_{n=0}^{\infty}p^n\cfrac{x^n}{n!}=e^{pn}A(x)=n=0∑∞pnn!xn=epn
5.3
序列an={1x=2k0x=2k+1(k∈N)a_n=\begin{cases}1&\text{x=2k}\\
0&\text{x=2k+1}\end{cases}(k\in N)an={10x=2kx=2k+1(k∈N)
其生成函数A(x)=∑n=0∞[n%2=0]xnn!=1+x22!+x44!+⋯=ex+e−x2A(x)=\displaystyle\sum_{n=0}^{\infty}[n\%2=0]\cfrac{x^n}{n!}=1+\cfrac{x^2}{2!}+\cfrac{x^4}{4!}+\cdots=\cfrac{e^x+e^{-x}}{2}A(x)=n=0∑∞[n%2=0]n!xn=1+2!x2+4!x4+⋯=2ex+e−x
5.4
序列an={0x=2k1x=2k+1(k∈N)a_n=\begin{cases}0&\text{x=2k}\\
1&\text{x=2k+1}\end{cases}(k\in N)an={01x=2kx=2k+1(k∈N)
其生成函数A(x)=∑n=0∞[n%2=1]xnn!=x1+x33!+⋯=ex−e−x2A(x)=\displaystyle\sum_{n=0}^{\infty}[n\%2=1]\cfrac{x^n}{n!}=\cfrac{x}{1}+\cfrac{x^3}{3!}+\cdots=\cfrac{e^x-e^{-x}}{2}A(x)=n=0∑∞[n%2=1]n!xn=1x+3!x3+⋯=2ex−e−x
5.5 伯努利数
序列bib_ibi是伯努利数
其生成函数B(x)=∑i=0bixii!=xex−1B(x)=\displaystyle\sum_{i=0}b_i\cfrac{x^i}{i!}=\cfrac{x}{e^x-1}B(x)=i=0∑bii!xi=ex−1x
6.定理
设SSS是多重集合{n1⋅a1,n2⋅a2⋯ ,ni⋅ai,⋯ }\{n_1·a_1,n_2·a_2\cdots,n_i·a_i,\cdots\}{n1⋅a1,n2⋅a2⋯,ni⋅ai,⋯},第i种元素aia_iai有nin_ini个,nin_ini为非负数
设hnh_nhn为S的n排列数,数列{h0,h1,⋯ ,hn⋯ }\{h_0,h_1,\cdots,h_n\cdots\}{h0,h1,⋯,hn⋯}的指数型生成函数为
A(x)=1(1+1x)(1+x1+x22!)⋯(1+x1+⋯+xkk!)⋯=∑i=0∞hixii!A(x)=1(1+\cfrac{1}{x})(1+\cfrac{x}{1}+\cfrac{x^2}{2!})\cdots(1+\cfrac{x}{1}+\cdots+\cfrac{x^k}{k!})\cdots=\displaystyle\sum_{i=0}^{\infty}h_i\cfrac{x^i}{i!}A(x)=1(1+x1)(1+1x+2!x2)⋯(1+1x+⋯+k!xk)⋯=i=0∑∞hii!xi
对式子展开后,每一个单项式形式为
xm1xm2⋯xmkm1!m2!⋯mk!=xm1+m2+⋯+mkm1!m2!⋯mk!\cfrac{x^{m_1}x^{m_2}\cdots x^{m_k}}{m_1!m_2!\cdots m_k!}=\cfrac{x^{m_1+m_2+\cdots+m_k}}{m_1!m_2!\cdots m_k!}m1!m2!⋯mk!xm1xm2⋯xmk=m1!m2!⋯mk!xm1+m2+⋯+mk
我们设n=m1+m2+⋯+mkn=m_1+m_2+\cdots+m_kn=m1+m2+⋯+mk
所以上式又等于xnm1!m2!⋯mk!=n!xnm1!m2!⋯mk!n!=n!m1!m2!⋯mk!⋅xnn!\cfrac{x^n}{m_1!m_2!\cdots m_k!}=\cfrac{n!x^n}{m_1!m_2!\cdots m_k!n!}=\cfrac{n!}{m_1!m_2!\cdots m_k!}·\cfrac{x^n}{n!}m1!m2!⋯mk!xn=m1!m2!⋯mk!n!n!xn=m1!m2!⋯mk!n!⋅n!xn
故hn=∑n=m1+m2+⋯+mkn!m1!m2!⋯mk!h_n=\displaystyle\sum_{n=m_1+m_2+\cdots+m_k}\cfrac{n!}{m_1!m_2!\cdots m_k!}hn=n=m1+m2+⋯+mk∑m1!m2!⋯mk!n!
例1:用红白蓝三种颜色染色一个1×n的格子,其中红色要求染色偶数次,求染色方法数
A(x)=(1+x22!+x44!+⋯ )(1+x+x22!+⋯ )(1+x+x22!+⋯ )=ex+e−x2⋅ex⋅ex=e3x+ex2=12(∑n=0∞3nxnn!+∑n=0∞xnn!)=12∑n=0∞(3n+1)xnn!\begin{aligned}A(x)&=(1+\cfrac{x^2}{2!}+\cfrac{x^4}{4!}+\cdots)(1+x+\cfrac{x^2}{2!}+\cdots)(1+x+\cfrac{x^2}{2!}+\cdots)\\
&=\cfrac{e^x+e^{-x}}{2}·e^x·e^x\\
&=\cfrac{e^{3x}+e^x}{2}\\
&=\cfrac{1}{2}(\sum_{n=0}^{\infty}3^n\cfrac{x^n}{n!}+\sum_{n=0}^{\infty}\cfrac{x^n}{n!})\\
&=\cfrac{1}{2}\sum_{n=0}^{\infty}(3^n+1)\cfrac{x^n}{n!}
\end{aligned}A(x)=(1+2!x2+4!x4+⋯)(1+x+2!x2+⋯)(1+x+2!x2+⋯)=2ex+e−x⋅ex⋅ex=2e3x+ex=21(n=0∑∞3nn!xn+n=0∑∞n!xn)=21n=0∑∞(3n+1)n!xn
故染色方法数hn=3n+12h_n=\cfrac{3^n+1}{2}hn=23n+1
例2:用1、2、3、4四个数字组成一个五位数,其中1出现两次或三次,2最多出现一次,4出现偶数次
A(x)=(x22!+x33!)(1+x)(1+x+x22!+⋯ )(1+x22!+x44!+⋯ )=(3x2+x36)(1+x)ex(ex+e−x2)=112(3x2+4x3+x4)(e2x+1)=112(3x2+4x3+x4)(∑n=0∞2nxnn!+1)\begin{aligned}A(x)&=(\cfrac{x^2}{2!}+\cfrac{x^3}{3!})(1+x)(1+x+\cfrac{x^2}{2!}+\cdots)(1+\cfrac{x^2}{2!}+\cfrac{x^4}{4!}+\cdots)\\
&=(\cfrac{3x^2+x^3}{6})(1+x)e^x(\cfrac{e^x+e^{-x}}{2})\\
&=\cfrac{1}{12}(3x^2+4x^3+x^4)(e^{2x}+1)\\
&=\cfrac{1}{12}(3x^2+4x^3+x^4)(\sum_{n=0}^{\infty}2^n\cfrac{x^n}{n!}+1)\\
\end{aligned}A(x)=(2!x2+3!x3)(1+x)(1+x+2!x2+⋯)(1+2!x2+4!x4+⋯)=(63x2+x3)(1+x)ex(2ex+e−x)=121(3x2+4x3+x4)(e2x+1)=121(3x2+4x3+x4)(n=0∑∞2nn!xn+1)
故组成方案数h5=112⋅5!(3⋅233!+4⋅222!+21)=140h_5=\cfrac{1}{12}·5!(3·\cfrac{2^3}{3!}+4·\cfrac{2^2}{2!}+\cfrac{2}{1})=140h5=121⋅5!(3⋅3!23+4⋅2!22+12)=140