EGF中多项式exp的组合意义

EGF中多项式exp的组合意义

EGF一般用来处理多重集的排列问题,在其上可以定义多项式的exp运算,在处理一类问题的时候有独特的作用

我们考虑将n个有标号的元素分为k个非空 无序集合的方案数,记其EGF为 F k F_{k} Fk,再考虑 f i f_i fi表示在这个我们定义的集合中对集合元素的计数方式(也就是考虑元素在集合内的排列方式的个数,这是一个只跟集合大小有关的值),那么根据生成函数的定义,我们不难得到下式

F k ( n ) = n ! k ! ∑ ∑ i = 1 k a i = n ∏ j = 1 k f a j a j ! F_{k}(n)=\frac{n!}{k!}\sum_{\sum_{i=1}^{k}a_i=n}\prod_{j=1}^{k}\frac{f_{a_j}}{a_j!} Fk(n)=k!n!∑∑i=1kai=n∏j=1kaj!faj,最后除以 k ! k! k!是因为这k个集合是无序的,而原本的多个多项式卷积显然是有序的

现在我们记 F ( x ) ^ = ∑ i = 0 i n f f i x i i ! \hat{F(x)}=\sum_{i=0}^{inf}f_i\frac{x^i}{i!} F(x)^=∑i=0inffii!xi,也就是原本的 f i f_i fi的EGF

再记 G k ( x ) G_k(x) Gk(x)为 F k ( n ) F_k(n) Fk(n)的EGF,则有

G k ( x ) = ∑ n = 0 i n f F k ( n ) x n n ! G_k(x)=\sum_{n=0}^{inf}F_k(n)\frac{x^n}{n!} Gk(x)=∑n=0infFk(n)n!xn

= ∑ n = 0 i n f n ! k ! ( ∑ ∑ i = 1 k a i = n ∏ j = 1 k f a j a j ! ) x n n ! =\sum_{n=0}^{inf}\frac{n!}{k!}(\sum_{\sum_{i=1}^{k}a_i=n}\prod_{j=1}^{k}\frac{f_{a_j}}{a_j!})\frac{x^n}{n!} =∑n=0infk!n!(∑∑i=1kai=n∏j=1kaj!faj)n!xn

= 1 k ! ∑ n = 0 i n f ( ∑ ∑ i = 1 k a i = n ∏ j = 1 k f a j x a j a j ! ) =\frac{1}{k!}\sum_{n=0}^{inf}(\sum_{\sum_{i=1}^{k}a_i=n}\prod_{j=1}^{k}\frac{f_{a_j}x^{a_j}}{a_j!}) =k!1∑n=0inf(∑∑i=1kai=n∏j=1kaj!fajxaj)

= 1 k ! ( F ( x ) ^ ) k =\frac{1}{k!}(\hat{F(x)})^k =k!1(F(x)^)k

如果我们考虑所有 k ≥ 0 k\geq 0 k≥0,就有

∑ k ≥ 0 G k ( x ) = ∑ k ≥ 0 ( F ( x ) ^ ) k k ! = e x p F ( x ) ^ \sum_{k\geq 0}G_k(x)=\sum_{k\geq 0}\frac{(\hat{F(x)})^k}{k!}=exp\hat{F(x)} ∑k≥0Gk(x)=∑k≥0k!(F(x)^)k=expF(x)^

我们惊奇地发现, G ( x ) G(x) G(x)的指数生成函数居然就是 f x f_x fx的生成函数的exp!

总结一下,多项式exp的组合意义就是:有标号元素构成的集合划分为任意个非空子集的总方案数。

来几个具体的例子


考虑大小为n的排列的个数是 n ! n! n!,其指数生成函数是 P ( x ) = ∑ n ≥ 0 n ! x n n ! = ∑ n ≥ 0 x n = 1 1 − x P(x)=\sum_{n\geq 0}\frac{n!x^n}{n!}=\sum_{n\geq 0}x^n=\frac{1}{1-x} P(x)=∑n≥0n!n!xn=∑n≥0xn=1−x1

一个大小为n的圆排列个数是 ( n − 1 ) ! (n-1)! (n−1)!,其指数生成函数是 G ( x ) = ∑ n ≥ 1 ( n − 1 ) ! x n n ! = ∑ n ≥ 1 x n n = − ln ⁡ ( 1 − x ) = l n ( 1 1 − x ) G(x)=\sum_{n\geq 1}\frac{(n-1)!x^n}{n!}=\sum_{n\geq 1}\frac{x^n}{n}=-\ln(1-x)=ln(\frac{1}{1-x}) G(x)=∑n≥1n!(n−1)!xn=∑n≥1nxn=−ln(1−x)=ln(1−x1)

不难发现 P ( x ) = e x p G ( x ) P(x)=expG(x) P(x)=expG(x)

仔细理解一下,众所周知,一个大小为n的排列一定可以拆成若干个环,每一个环内部的排列数就是一个圆排列的方案数,所以大小为n的排列的方案数就是把 1 , 2... n 1,2...n 1,2...n分成若干个非空集合,每一个集合的圆排列方案数之积,这与我们上面讲到的exp的组合意义相符合

未完待续

相关推荐
好奇龙猫8 小时前
【大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(7)】
学习
漫随流水11 小时前
leetcode算法(151.反转字符串中的单词)
数据结构·算法·leetcode
ada7_11 小时前
LeetCode(python)78.子集
开发语言·数据结构·python·算法·leetcode·职场和发展
DeepVis Research12 小时前
【AGI/Simulation】2026年度通用人工智能图灵测试与高频博弈仿真基准索引 (Benchmark Index)
大数据·人工智能·算法·数据集·量化交易
努力学算法的蒟蒻12 小时前
day52(1.3)——leetcode面试经典150
算法·leetcode·面试
w陆压12 小时前
2.区分C++中相似但不同的类型
c++·c++基础知识
十五年专注C++开发12 小时前
CMake进阶:vcpkg中OpenSSLConfig.cmake详解
c++·windows·cmake·openssl·跨平台编译
leoufung12 小时前
LeetCode 97. 交错字符串 - 二维DP经典题解(C语言实现)
c语言·算法·leetcode
郑同学的笔记12 小时前
【Eigen教程02】深入Eigen矩阵引擎:模板参数、内存布局与基础操作指南
c++·线性代数·矩阵·eigen
亦复何言??12 小时前
机器人强化学习入门笔记(四)
笔记·机器人