指数型生成函数(EGF)初步

考虑如下卷积:

\[h_n = \sum_{i = 0}^n { n \choose i } f_i g_{n - i} \]

它不同于我们普通的卷积,它内部带有一个组合数,通常用来处理有标号的计数问题。考虑按定义式拆开那个组合数,有:

\[\frac{h_n}{n!} = \sum_{i = 0}^n \frac{f_i}{i!} \frac{g_{n - i}}{(n - i)!} \]

你会发现,如果我们换元,写出 \(\{ f_n / n! \}\) 的生成函数 \(F(x)\),同理写出 \(G(x)\)\(H(x)\),那么有:

\[H(x) = F(x) G(x) \]

这大大地化简了原卷积式。我们称 \(F(x)\)\(\{ f_n \}\)指数型生成函数,即 EGF。

那么,为什么叫指数型生成函数呢?因为有:

\[\sum_{n \geq 0} \frac{x^n}{n!} = e^x \]

证明是容易的,将 \(e^x\)\(x = 0\) 处泰勒展开即可。

什么?你不会泰勒展开?记住下面的公式即可:

\[f(x) = \sum_{i = 0} ^ n \frac{f^{(i)}(x_0)}{i!} + R_n(x) \]

其中,\(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_n = \sum_{i = 1}^n { n - 1 \choose i - 1 } b_{n - i} \]

注意这里约定 \(b_0 = 0\)

观察这个式子,你会发现右边的式子很像我们前面介绍的卷积,它是 \(\{ b_n \}\)\(\{ 1 \}\) 的卷积右后的结果。记 \(\{ b_n \}\) 的 EGF 为 \(B(x)\),那么有:

\[B(x) = 1 + \int B(x) e^x \mathrm{d} x \]

两边求导,有:

\[\frac{\mathrm{d} B(x)}{ \mathrm{d} x} = B(x) e^x \]

移项,有:

\[\frac{\mathrm{d} B(x)}{ B(x) } = e^x \mathrm{d} x \]

两边积分,有:

\[\operatorname{ln} B(x) = e^x + C \]

\(x = 0\) 带入,得常数 \(C = -1\),这样我们就求出了 \(B(x)\)。具体地,有:

\[B(x) = \operatorname{exp}(e^x - 1) \]

这就是 EGF 的一个经典应用。

参考资料:铃悬的数学小讲堂——生成函数进阶与简单的图计数

未完待续...

posted @ 2025-04-22 21:28  Eliauk_FP  阅读(126)  评论(0)    收藏  举报