其他分享
首页 > 其他分享> > 浅谈生成函数

浅谈生成函数

作者:互联网

生成函数

生成函数(generating function),又称母函数,是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。
生成函数有许多不同的种类,但大多可以表示为单一的形式

\[F(x) = \sum_{n}a_nk_n(x) \]

其中 \(k_n(x)\) 被称为核函数,不同的核函数会导出不同的生成函数,分成3类

普通生成函数:\(k_n(x)=x^n\) (OGF
指数生成函数:\(k_n(x)=\dfrac {x^n} {n!}\) (EGF
狄利克雷生成函数:\(k_n(x)=\dfrac {1} {n^x}\) (DGF

另外,对于生成函数 \(F(x)\),我们用 \([k_n(x)]F(x)\) 来表示它的第 \(n\) 项的核函数对应的系数,也就是 \(a_n\)

容易发现其中的 \(x\) 对于原式中的结果并没有什么影响,我们想要的应该是固定项前面的系数

普通生成函数

形式:

\[F(x) = \sum_{n}a_n x^n \]

\(a\) 既可以是有穷序列,也可以是无穷序列

若干例子:
序列 \(a=\langle 1,2,3\rangle\) 的OGF:\(1+2x+3x^2\)
序列 \(a=\langle 1,1,1,\dots,1\rangle\) 的OGF:\(\displaystyle\sum_{n} x^n\)
序列 \(a=\langle 1,2,4,8,16,\dots\rangle\) 的OGF:\(\displaystyle \sum_n 2^nx^n\)
序列 \(a=\langle 1,3,5,7,9,\dots\rangle\) 的OGF:\(\displaystyle \sum_n (2n+1)x^n\)

基本运算

考虑两个序列 \(a,b\) 的普通生成函数,分别为 \(F(x),G(x)\),那么有

\[F(x)\pm G(x)=\sum_n (a_n\pm b_n)x^n \]

因此 \(F(x)\pm G(x)\) 是序列 \(\\langle a_n\pm b_n \rangle\)

考虑乘法运算,也就是卷积:

\[F(x)G(x)=\sum_n x^n \sum_{i=0}^n a_ib_{n-i} \]

封闭形式

这是OGF比较好玩的一个东西,就是说每次写成一个多项式真的很难受,但是如果能够把这个形式幂级数写成其它的形式可能就会好很多

对于上述例二,容易发现:

\[xF(x)+1=F(x) \]

很容易想到移项后可以得到:\(F(x)=\dfrac {1}{1-x}\)
可能会有点疑惑,这个东西怎么还能是负数?
实际上发现,如果要让前面的形式幂级数在 \(\infty\) 处收敛,x的范围应在 \(\in (-1,1)\)
但是还是不需要去理它,因为我们生成函数的本质不在于这个 \(x\) 的取值,或者说对于这个封闭形式,只是一种方便推过去和推回来的过程罢了,并不是对原式的具体阐述

有若干种物品 ,每种物品只有1件,求取 \(n\) 件物品的总方案数。

每种物品的生成函数是 \(1\times x^0+1\times x^1\)
那么若干个物品乘起来就是 \((x+1)^n\)
然后用二项式定理展开一下就可以得到:

\(\displaystyle (x+1)^n=\sum_{i=0}^n \binom {n} {i}x^i\)

如果学过组合数学就会发现这个确实很对

当然也有比较恶心的

有若干种物品 ,每种物品可以取任意件,求取 \(n\) 件物品的总方案数

和上个题一样,每个物品的生成函数是:\(\displaystyle\sum_{i=0}^n x^i\) 很快就能发现,又等于 \(\dfrac 1 {1-x}\)

这样的话 \(m\) 件物品的生成函数就是

\[\begin{aligned} \dfrac {1} {(1-x)^m}=&(1-x)^m\\ =&\sum_{i=0}^{\infty} \dfrac {-m \times (-m-1) \dots (-m-i+1)} {i!}(-x)^i\\ =&\sum_{i=0}^{\infty} \dfrac {(-1)^i \times m \times (m+1)\dots (m+i-1)} {i!}(-1)^ix^i\\ =&\sum_{i=0}^{\infty} \dfrac {(m+i-1)!} {i!(m-1)!}x^i\\ =&\sum_{i=0}^{\infty} \binom {m + i - 1} {m - 1}x^i \end{aligned} \]

同时可以用隔板法理解,答案是相同的

来个重头戏:斐波那契数列:

前置知识:

\(\displaystyle\dfrac {1} {1-kx}=\sum_{i=0}k^ix^i\)

设 \(F(x)\) 表示斐波那契数列的生成函数

首先第一步拆分,容易得到:

\[\begin{aligned} A =& 1+1x+2 x^2 + 3x^3+5x^4+8x^5\\ xA =& ~~~~~~~~~ x+ 1x^2+2x^3+3x^4+5x^5\\ x^2A=&~~~~~~~~~~~~~~~~1x^2+1x^3+2x^4+3x^5 \end{aligned} \]

容易发现下面两个相加就只和第一个差出来一个数1

\(A-xA-x^2A=1\)

整理一下:\(A=\dfrac {1}{1-x-x^2}\)

然后发现这和上面补充的前置知识太相似了,如果能做到和前面的那个完全一样就好了

然后就是很多套路性的转化了

第一个因式分解,\(1-x-x^2=(1-ix)(1-jx)\)

解得 \(i=\dfrac {1+\sqrt 5} {2}~~j =\dfrac {1-\sqrt 5} {2}\)

但是这时候还是两个 \(\dfrac {1} {1-kx}\) 的卷积,容易发现既然根式都出来了,上面的1也顺路拆了算了

令 \(ai+bj=1\),得到 \(a=\dfrac {1} {{\sqrt 5}}i~~b=-\dfrac {1} {\sqrt 5}j\)
带回原来的式子里,裂项以后拆成一个巨无霸式子:

\(A=\dfrac {i} {\sqrt 5}\dfrac {1}{1-ix}-\dfrac{j}{\sqrt 5}\dfrac{1}{1-jx}\)

写的更加简便一点:

\(\displaystyle A = \dfrac {M} {1-ax}+\dfrac {N} {1-bx}=\sum_{k=0}(Ma^k + Nb^k)x^k\)

同时 \(M=\dfrac {\sqrt 5 i} {5},N=-\dfrac {\sqrt 5 j} {5},a=i,b=j\)
然后就是前面的基本多项式运算了

\(\displaystyle F(x)=\sum_{k=0}((\dfrac {\sqrt 5 i} {5}) \times (\dfrac {1+\sqrt 5} 2)^k-\dfrac {\sqrt 5 j} {5}\times (\dfrac {1-\sqrt 5} {2})^k)x^k\)

经过一点点化简就能得到:

\[ \frac{x}{1-x-x^2}=\sum_{n\ge 0}x^n \frac{1}{\sqrt{5}}\left( \left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n \right) \]

到这里其实要说的也就差不多了

标签:浅谈,dfrac,sum,sqrt,生成,displaystyle,函数
来源: https://www.cnblogs.com/RevolutionBP/p/16307338.html