指数型生成函数(EGF)初步
考虑如下卷积:
它不同于我们普通的卷积,它内部带有一个组合数,通常用来处理有标号的计数问题。考虑按定义式拆开那个组合数,有:
你会发现,如果我们换元,写出 \(\{ f_n / n! \}\) 的生成函数 \(F(x)\),同理写出 \(G(x)\) 和 \(H(x)\),那么有:
这大大地化简了原卷积式。我们称 \(F(x)\) 为 \(\{ f_n \}\) 的 指数型生成函数,即 EGF。
那么,为什么叫指数型生成函数呢?因为有:
证明是容易的,将 \(e^x\) 在 \(x = 0\) 处泰勒展开即可。
什么?你不会泰勒展开?记住下面的公式即可:
其中,\(f^{(i)}(x_0)\) 表示 \(f(x)\) 在 \(x = x_0\) 处的 \(i\) 次导,\(R_n(x)\) 为泰勒公式的余项。
有个好玩的性质是,EGF 求导相当于左移,积分相当于右移,这点需要牢记。
好的,现在我们已经学会了指数型生成函数,来看一个例子吧!
考虑下面的问题:将一个集合 \(S = \{ 1, 2, 3, \dots , n - 1, n\}\) 划分成若干个集合,求本质不同的划分个数。这个问题的答案也被叫做 贝尔数,记作 \(b_n\)。
考虑写出 \(b_n\) 的递推式,考虑枚举元素 \(n\) 所在的集合大小,除去这个集合中的元素后 \(S\) 中剩下的元素构成的集合形成了一个新的子问题,那么递推式为:
注意这里约定 \(b_0 = 0\)。
观察这个式子,你会发现右边的式子很像我们前面介绍的卷积,它是 \(\{ b_n \}\) 和 \(\{ 1 \}\) 的卷积右后的结果。记 \(\{ b_n \}\) 的 EGF 为 \(B(x)\),那么有:
两边求导,有:
移项,有:
两边积分,有:
将 \(x = 0\) 带入,得常数 \(C = -1\),这样我们就求出了 \(B(x)\)。具体地,有:
这就是 EGF 的一个经典应用。
参考资料:铃悬的数学小讲堂——生成函数进阶与简单的图计数。
未完待续...

浙公网安备 33010602011771号