指数型生成函数
指数型生成函数
前置知识:泰勒展开
一个连续且可导的函数,可以用一个无穷次多项式在某一点附近还原。
以 \(x=0\)(麦克劳林级数)为例,可得如下表达式:
由于 \((e^x)^{(n)}(0)=1\),我们还可得到指数函数 \(e^x\) 的泰勒展开:
定义
对于数列 \(\{a_n\}\),其指数型生成函数(Exponential Generating Fuction,EGF) 定义为:
这其实就是泰勒展开。
二项卷积定理
设数列 \(\{a_n\}\) 的 EGF 为 \(A(x)\),数列 \(\{b_n\}\) 的 EGF 为 \(B(x)\)。令 \(C(x) = A(x) \cdot B(x)\),则:
注意:EGF 的乘法在代数上具有交换律,但在组合计数中我们应当将其视作有序,因为交换后组合意义可能发生改变。
证明:

基础 EGF 速查


求取方法
-
求导
-
套用常用展开
指数函数:\(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 的加和,即:
这恰好对应 \(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)\)(上文已证),不妨对两边同时求导,得:
左边是卷积,对于 \(x^n\) 项考虑展开之:
右边是 \(\frac{g(n) \cdot n}{n!} = \frac{g(n)}{(n-1)!}\)。
两边同乘 \((n-1)!\),得:
由于 \(g(0)=1\),提出 \(f(n)\),得:
这个直接递推是 \(O(n^2)\) 的,可以获得 55 pts。
- AT_fps_24_l 順列 2(识别循环计数模型 & 整体思想)
考虑将题目按照 \(i \to p_i\) 的方式建图,可知这张有向图中不含自环与二元环,即点数 \(< 3\) 的环。
考虑固定环中一点,则构成点数为 \(k\) 的环的方案数即为 \((k-1)!\),于是可得
然后
令 \(H(x) = \exp(- \frac{x^2}{2} - x)\)。
考虑对 \(H(x)\) 求导:
比较系数,得:
边界:\(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\):
于是 \(Ans = (N-2)! \cdot [x^{N-2}]G(x)\),结合多项式科技就做完了。但是我不会
总结:
OGF 的做题逻辑:抽象出物品模型->写出每个物品的生成函数->写成封闭形式后全部相乘->广义二项式定理(或其他别的技巧)还原幂级数。
EGF 的做题逻辑:抽象出物品模型->写出 \(F(x)\) 或 \(G(x)\)->写成封闭形式后 \(\exp\)->求导(或多项式科技)还原幂级数。
浙公网安备 33010602011771号