一般生成函数和指数生成函数

一开始搞不懂指数生成函数到底是什么组合意义……

一般生成函数(OGF)

一般生成函数常用于多重集选择组合问题。

例:多重集中有 \(n\) 种不同的元素,每种分别有 \(a_1,a_2,\cdots,a_n\) 个,求从中选出 \(m\) 个的组合方案数。

我们设第 \(i\) 种元素的一般生成函数为 \(G_i(x)=1+x+x^2+\cdots+x^{a_i}\)

\(F(x)=\prod\limits_{i=1}^{n}G_i(x)=\big(1+x+\cdots+x^{a_1}\big)\big(1+x+\cdots+x^{a_2}\big)\cdots\big(1+x+\cdots+x^{a_n}\big)\),那么 \(F(x)\)\(m\) 次项的系数即为答案。

指数生成函数(EGF)

指数型母函数适用于解决多重集选择排列问题。

例:多重集中有 \(n\) 种不同的元素,每种分别有 \(a_1,a_2,\cdots,a_n\) 个,求从中选出 \(m\) 个并排列的方案数。

注意并不是求出组合方案数再乘上 \(m!\) 就可以得到排列方案数了,因为选出的这 \(m\) 个元素有可能有相同的。

但是先确定组合再确定排列这个思路是没有问题的。

考虑一种组合的方案,其中第 \(i\) 种元素选了 \(b_i\) 个(\(\sum\limits_{i=1}^n b_i=m\))。那么这种组合方案所贡献出的排列方案为 \(\dfrac{m!}{b_1!b_2!\cdots b_n!}\),相当于我先从 \(m\) 个位置中选出第 \(1\) 种元素放的位置,再选出第 \(2\) 种元素放的位置……以此类推。

所以如果我们设第 \(i\) 中元素的指数生成函数为 \(G_i(x)=1+x+\dfrac{x^2}{2!}+\cdots+\dfrac{x^{a_i}}{a_i!}\)

\(F(x)=\prod\limits_{i=1}^nG_i(x)=\left(1+x+\dfrac{x^2}{2!}\cdots+\dfrac{x^{a_1}}{a_1!}\right)\left(1+x+\dfrac{x^2}{2!}\cdots+\dfrac{x^{a_2}}{a_2!}\right)\cdots\left(1+x+\dfrac{x^2}{2!}\cdots+\dfrac{x^{a_n}}{a_n!}\right)\)

恰好发现 \(F(x)\) 也是答案的指数生成函数,那么 \(F(x)\)\(m\) 次项系数再乘回个 \(m!\) 即为答案。

同时你也发现了它的另一种类似的组合意义:将 \(m\) 个不同的元素分成若干组,第 \(i\) 组至多有 \(a_i\) 个,求分组方案数。

这个组合意义和我们上面说的这段话类似:

我先从 \(m\) 个位置中选出第 \(1\) 种元素放的位置,再选出第 \(2\) 种元素放的位置……以此类推

所以说两种组合意义实际上是相通的。

posted @ 2022-10-31 09:44  ez_lcw  阅读(221)  评论(0编辑  收藏  举报