浅析生成函数

浅析生成函数

更好的阅读体验戳此进入

定义

生成函数(Generating Function),又称母函数,其严谨一点的定义:序列 an 的生成函数是一种形式幂级数,每一项的系数会提供关于这个序列的信息。

更详细地解释一下,就是对于函数中第 i 项的系数就代表了序列第 i 项的值,但是不同于一般的函数 G(x),这里的 x 的取值并不会对其本身的意义有任何影响,这种函数就被称作形式幂级数

OGF(普通生成函数)

引入生成函数,最好的例子应该就是多重集的组合了,容斥思想的做法可以参考 浅析排列组合、卡特兰数、斯特林数、贝尔数、二项式定理与推论及其反演、子集反演、广义容斥、范德蒙德卷积 - 多重集的排列组合数。

而另一种思想,不难发现这就是个简单的背包,我们可以考虑对每种物品,假设第 i 种物品有 ni 个,共有 k 种,则:

i 个物品的生成函数为:Gi(x)=1+x1+x2++xni

若我们将所有生成函数乘在一起,则 i=1kGi(x) 的第 α 项即为多重集选择 α 个的组合数的答案。

考虑证明,感性理解一下显然对于两个多项式的卷积 fg,有 $ (f \ast g)k = \sum^k f_ig_{k - i} f i g k - i k $ 个的方案数。

而对于这种形如 G(x)=aixi 的生成函数,称其为普通生成函数,即 OGF。

OGF 在多项式相乘时的形式即为:i=0naibni

EGF(指数生成函数)

而对于多重集的非全排列,似乎就不可以通过容斥原理处理了(或者我不会),于是我们可以引入一种新的生成函数。

还是考虑类似的问题,即多重集的排列,了解这个我们可以先想到多重集的全排列,具体可以从上文的链接去看细节,这里仅简单提一下:

P=N!i=1knk!

也就是从排列数中去掉每一种的总个数,对于非全排列,也不难想到其即为从每种组合方案中进行排列并除以对应的分母。

于是引入指数生成函数,即 EGF,具体来讲其形式为:G(x)=aixii!

对于多重集的排列,则对于每个集合的 ni 构造:

Gi(x)=1+x1!+x22!++xnini!

然后全部乘在一起得到:

i=1kGi(x)

然后从中选择 m 个元素的方案数即该式的 m 次项系数乘上 m! 即为答案。

EGF 在多项式相乘时的形式为 1n!i=0n(ni)aibni。这个东西也比较显然,展开化简后可得。

CGF(组合生成函数)

组合生成函数,形如:

G(x)=aixii!2(i2)

CGF 在多项式相乘时的形式为 $ \dfrac{1}{n!2^{n \choose 2}}\sum_{i = 0}^n {n \choose i}2^{i(n - i)}a_ib_{n - i} 2^{i(n - i)} $ 就是在枚举两者之间的边的方向。

用于解决的是有标号有向图计数,资料不足剩余待补。

PGF(概率生成函数)

对于随机变量 $ X G(x) = \sum_i P{X = i }x^i $。

显然 G(1)=iPX=i=1

同时对 G(x) 求导有 G(x)=iPX=iixi1

G(1)=iPX=ii=E(X)

而对于高阶导数,或者说 k 阶导数,有 G(k)(1)=E(Xk),这个东西我们考虑对一个多项式求导,展开得到 G(k)(1)=iPX=ii=0k1(ik),也就是其 k 阶导数的意义为 k 次下降幂的期望。

同时对于方差有:σ2=E(X2)E(X)2=G(1)+G(1)(G(1))2

证明:

首先考虑 G(1),有 G(1)=E(X(X1)),也就是 iPX=ii(i1) 把这个转化一下就是:iPX=ii2iPX=ii,也就是 E(X2)E(X),那么有 E(X2)E(X)=G(1),又有 E(X)=G(1),那么 $ E(X^2) = E(X) + G''(1) = G'(1) + G''(1) \mathrm{QED} $。

然后 PGF 在多项式相乘的形式为 i=0nPX=iPY=ni,当然也可形象地记为 PX+Y=n

同时不难发现第二种记法同时体现出了其中的一个性质,即 FX(x)FY(x)=FX+Y(x)

感觉下一部分内容今天写不完了,先这些,下一部分写完之后再 update。

UPD

update-2023_02_07 初稿

本文作者:tsawke

本文链接:https://www.cnblogs.com/tsawke/p/17180271.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Tsawke  阅读(39)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起