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的组合意义相符合
第二类斯特林数 { n , k } \{n,k\} {n,k}的组合意义就是把n个数分成k个集合的方案数,这里一个集合的计数就是1,也就是说在上面推导过程中 F ( x ) ^ = { 1 , 1 , 1.... } \hat{F(x)}=\{1,1,1....\} F(x)^={1,1,1....}
其指数生成函数是 G k ( x ) = ∑ n ≥ 0 S ( n , k ) x n n ! = 1 k ! ( e x p ( x ) − 1 ) k G_{k}(x)=\sum_{n\geq 0}S(n,k)\frac{x^n}{n!}=\frac{1}{k!}(exp(x)-1)^k Gk(x)=∑n≥0S(n,k)n!xn=k!1(exp(x)−1)k
贝尔数的组合意义是把n个数分成若干个非空集合的方案数,其生成函数是 B ^ ( x ) = e x p ( e x − 1 ) \hat{B}(x)=exp(e^x-1) B^(x)=exp(ex−1)
不难理解,贝尔数与第二类斯特林数的区别就在于对分成的非空集合的个数的限制,那么 B ( x ) ^ = ∑ k ≥ 0 G k ( x ) \hat{B(x)}=\sum_{k\geq0}G_k(x) B(x)^=∑k≥0Gk(x)也就是时分自然的,这也与上面的理论相符合
举一反三,我们考虑n个点带标号的生成树个数的EGF为 F ( x ) ^ \hat{F(x)} F(x)^,那么n个点带标号的森林的个数就是 e x p F ( x ) ^ exp \hat{F(x)} expF(x)^,意义就是将n个点分成若干个树的方案数
求n个点的有标号简单无向连通图的数量
这个可能并不是那么好直接想出来,但是按照我们刚刚的理论,可以考虑先求出n个点的有标号简单无向图的数量(不要要求连通),然后直接对其EGF直接取 ln \ln ln就可以了
这个是非常好求的,就是一张完全图里面每一个点都有删或不删两种选择,其EGF就是 ∑ n ≥ 0 2 ( n 2 ) x n n ! \sum_{n\geq 0}2^{\binom{n}{2}}\frac{x^n}{n!} ∑n≥02(2n)n!xn
所以答案就是 [ x n ] ln ( ∑ n ≥ 0 2 ( n 2 ) x n n ! ) [x^n]\ln(\sum_{n\geq 0}2^{\binom{n}{2}}\frac{x^n}{n!}) [xn]ln(∑n≥02(2n)n!xn)