指数型生成函数

指数型生成函数

前置知识:泰勒展开

一个连续且可导的函数,可以用一个无穷次多项式在某一点附近还原。

\(x=0\)(麦克劳林级数)为例,可得如下表达式:

\[f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(0)}{n!} x^n \]

由于 \((e^x)^{(n)}(0)=1\),我们还可得到指数函数 \(e^x\) 的泰勒展开:

\[e^x = 1 + \frac{x}{1!} + \frac{x^2}{2!} + ... = \sum_{n=0}^{\infty} \frac{x^n}{n!} \]

定义

对于数列 \(\{a_n\}\),其指数型生成函数(Exponential Generating Fuction,EGF) 定义为:

\[A(x) = \sum_{n=0}^{\infty} \frac{a_n}{n!} x^n \]

这其实就是泰勒展开。

二项卷积定理

设数列 \(\{a_n\}\) 的 EGF 为 \(A(x)\),数列 \(\{b_n\}\) 的 EGF 为 \(B(x)\)。令 \(C(x) = A(x) \cdot B(x)\),则:

\[c_n = \sum_{k=0}^n {n \choose k} a_k b_{n-k} \]

注意:EGF 的乘法在代数上具有交换律,但在组合计数中我们应当将其视作有序,因为交换后组合意义可能发生改变。

证明

8

基础 EGF 速查

image

image

求取方法

  • 求导

  • 套用常用展开

指数函数:\(e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!}\)

对数函数:\(-\ln(1-x) = \sum_{n=1}^{\infty} \frac{x^n}{n}\)

三角函数:\(\sin x = \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!} x^{2n+1}\)

  • 复合生成函数的组合意义法

对于连通图 / 集合划分问题,我们有 \(\operatorname{exp}\) 操作。

定义 \(\operatorname{exp}(x) = e^x\),则若单个联通块的 EGF 为 \(F(x)\),则其整体的 EGF 即为 \(\operatorname{exp}(F(x))\)

证明

根据乘法原理,先有序地放置 \(k\) 个块,得到它们的 EGF \(F(x)^k\)

由于块之间是无序的(但元素是有序的,因此这里不可使用 OGF),所以 EGF 应当是 \(\frac{F(x)^k}{k!}\)

显然 \(k\) 需要枚举,因此根据加法原理,总的 EGF 是所有 \(k\) 个块 EGF 的加和,即:

\[\sum_{k=0}^{\infty} \frac{F(x)^k}{k!} \]

这恰好对应 \(e^x\) 的泰勒展开!故总 EGF 可写作 \(\operatorname{exp}(F(x))\)证毕

例题选讲

  • AT_abc234_f [ABC234F] Reordering(dp 模拟多项式卷积

每个字符的 EGF 显然是 \(\sum_{n=0}^{\infty} \frac{x^n}{n!}\)(系数为 \(1\)),然后把它们全都乘起来即可。思维难度不大,主要是学习一下这个代码技巧:

for(int c=0;c<26;c++){
	if(!cnt[c])
		continue;
	for(int j=n;j>=0;j--){
		if(!dp[j])
			continue;
		for(int i=1;i<=cnt[c]&&i+j<=n;i++)
			dp[i+j]=(dp[i+j]+(dp[j]*inv[i]%MOD))%MOD;
	}
}
  • P4841 [集训队作业2013] 城市规划(识别连通计数模型 & 求导比较系数

请注意,此题解不是正解,正解需要用到多项式科技,但笔者尚未学习

看到图论,考虑 \(\exp\) 计数。令 \(G(x)\) 表示不保证图联通的方案数,\(F(x)\) 表示保证图联通的方案数。

显然,\(g(x) = 2^{n \choose 2}\)\(g(x)\)\(G(x)\) 的系数),组合意义就是选取 \(2\) 个节点连边,可选择连或不连。

又显然有 \(\exp(F(x)) = G(x)\)(上文已证),不妨对两边同时求导,得:

\[\text{LHS} = \exp(F(x))' = \exp(F(x)) \cdot F'(x) = G(x) \cdot F'(x) \\ \Downarrow \\ G(x) F'(x) = G'(x) \]

左边是卷积,对于 \(x^n\) 项考虑展开之:

\[\sum_{k=1}^n \frac{g(n-k)}{(n-k)!} \cdot \frac{f(k)}{(k-1)!} \]

右边是 \(\frac{g(n) \cdot n}{n!} = \frac{g(n)}{(n-1)!}\)

两边同乘 \((n-1)!\),得:

\[g(n) = \sum_{k=1}^n {n-1 \choose k-1} g(n-k) f(k) \]

由于 \(g(0)=1\),提出 \(f(n)\),得:

\[f(n) = g(n) - \sum_{k=1}^{n-1} {n-1 \choose k-1} g(n-k) f(k) \]

这个直接递推是 \(O(n^2)\) 的,可以获得 55 pts。

  • AT_fps_24_l 順列 2(识别循环计数模型 & 整体思想

考虑将题目按照 \(i \to p_i\) 的方式建图,可知这张有向图中不含自环与二元环,即点数 \(< 3\) 的环。

考虑固定环中一点,则构成点数为 \(k\) 的环的方案数即为 \((k-1)!\),于是可得

\[F(k) = \sum_{k \ge 3}^{\infty} \frac{x^k}{k} = - \ln(1-x) - \frac{x^2}{2} - x \]

然后

\[G(x) \\ = \exp(F(x)) \\ = \exp(- \ln(1-x) - \frac{x^2}{2} - x) \\ = \exp(- \ln(1-x)) \cdot \exp(- \frac{x^2}{2} - x) \\ = \frac{\exp(- \frac{x^2}{2} - x)}{1-x} \]

\(H(x) = \exp(- \frac{x^2}{2} - x)\)

考虑对 \(H(x)\) 求导:

\[\text{LHS} = H'(k) \\ = \sum_{n=1}^{\infty} n c_n x^{n-1} \\ = \sum_{n=0}^{\infty} (n+1) c_{n+1} x^n \]

\[\text{RHS} = (-x-1)H(x) \\ = - \sum_{n=0}^{\infty} c_n x^n - \sum_{n=0}^{\infty} c_n x^{n+1} \\ = - c_0 - \sum_{n=1}^{\infty} (c_{n-1}+c_n) x^n \]

比较系数,得:

\[c_i = \frac{-c_{i-1}-c_{i-2}}{i} \]

边界:\(c_0=1,c_1=-c_0=-1\)

由于 \(\frac{1}{1-x} = \sum_{n=0}^{\infty} x^n\),每一项系数为 \(1\),因此卷积后总 EGF 的系数就是 \(c_i\) 的前缀和。

  • P5219 无聊的水题 I(识别树-prufer序列模型 & 放宽限制思想

看到恰好,考虑转化为“至多”。

答案即为度数至多为 \(M\) 的减去至多 \(M-1\) 的。

套路的,每个数字贡献显然为 \(1\)

\[F(x) = \sum_{n=0}^{\infty} \frac{x^n}{n!} \]

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

于是 \(Ans = (N-2)! \cdot [x^{N-2}]G(x)\),结合多项式科技就做完了。但是我不会


总结:

OGF 的做题逻辑:抽象出物品模型->写出每个物品的生成函数->写成封闭形式后全部相乘->广义二项式定理(或其他别的技巧)还原幂级数。

EGF 的做题逻辑:抽象出物品模型->写出 \(F(x)\)\(G(x)\)->写成封闭形式后 \(\exp\)->求导(或多项式科技)还原幂级数。

posted @ 2026-08-09 19:38  _KidA  阅读(13)  评论(0)    收藏  举报