生成函数学习笔记

因为内容太多就单独拎出来写一个 blog 了。

生成函数即母函数(generating function),是一种解决计数问题的强有力的工具。它能将一个序列的信息映射到一个形式幂级数 \(f(x)\) 上,其每一项的系数可以提供关于这个序列的信息。

生成函数一般分为普通型生成函数指数型生成函数两种。

普通型生成函数(OGF)

一个序列 \(a_0,a_1,a_2,\dots,a_n,\dots\)普通型生成函数 \(A(x)=a_0x^0+a_1x^1+\dots+a_nx^n+\dots\),其中 \(x\) 一般是某个 \((-1,1)\) 之间的数。

那么普通型生成函数能干嘛呢?首先看一个非常容易并且 sb 的例子:

\(4\) 个红宝石,\(5\) 个绿宝石,\(6\) 个蓝宝石以及无限个黄宝石,要从中选出 \(r\) 个宝石,其中红宝石最多选 \(2\) 个,绿宝石必须选偶数个,蓝宝石选出的个数必须在 \(2\)\(5\) 之间,黄宝石选的个数必须为 \(3\) 的倍数,求选择的方案数 \(a_r\)

考虑用生成函数求解这道题,用四个括号分别表示选四种宝石的情况,红宝石可以选 \(0,1,2\) 个,故第一个括号里放 \(1+x^1+x^2\),绿宝石可以选 \(0,2,4\) 个,故第二个括号里放 \(1+x^2+x^4\),蓝宝石可以选 \(2,3,4,5\) 个,故第三个括号里放 \(x^2+x^3+x^4+x^5\),黄宝石能选 \(0,3,6,9,\dots\) 个,故最后一个括号里放 \(1+x^3+x^6+x^9+\dots\)

把这四个括号相乘就可以得到 \(a\) 序列的生成函数 \(f(x)\),即 \(f(x)=(1+x+x^2)(1+x^2+x^4)(x^2+x^3+x^4+x^5)(1+x^3+x^6+x^9+\dots)\)

为什么呢?假设四种宝石分别选择 \(x_1,x_2,x_3,x_4\) 个,一种合法的 \((x_1,x_2,x_3,x_4)\) 等价于从第一个括号中选择 \(x^{x_1}\),第二个括号中选择 \(x^{x_2}\),从第三个括号中选择 \(x^{x_3}\),从第四个括号中选 \(x^{x_4}\) 的方案。这样的 \((x_1,x_2,x_3,x_4)\) 会对 \(f(x)\)\(x^r\) 前的系数产生 \(1\) 的贡献。故 \([x^r]f(x)\)(在生成函数中通常用这个符号表示 \(f(x)\)\(x^r\) 前的系数)满足条件的选宝石的方案数。

通过上面的例子我们可以看出,普通型生成函数可以用来解决无标号的计数问题,常用于优化背包之类的东西。

两个序列 \(a,b\) 的 OGF \(A(x),B(x)\) 的卷积 \(A(x)B(x)\) 与普通的多项式乘法没什么两样,其组合意义 \([x^n]A(x)\) 表示从集合 \(S\) 中选出 \(n\) 个数的方案数,\([x^n]B(x)\) 表示从集合 \(T\) 中选出 \(n\) 个数的方案数,则 \([x^n]A(x)B(x)\) 表示从 \(S\cup T\) 中选出 \(n\) 个数的方案数。


OGF 中有一个很重要也很基础的式子:\(\dfrac{1}{1-x}=1+x+x^2+\dots+x^n+\dots=\sum\limits_{n\geq 0}x^n\)

为什么?考虑等比数列求和公式 \(1+x+x^2+x^3+\dots+x^n=\dfrac{x^{n+1}-1}{x-1}\),当 \(n\) 趋近于无穷大的时候,由于 \(x\in (-1,1)\)\(x^{n+1}\) 趋近于 \(0\),故 \(1+x+x^2+x^3+\dots=\dfrac{-1}{x-1}=\dfrac{1}{1-x}\)

上式还有一个推广 \(\dfrac{1}{(1-x)^k}=\dbinom{k-1}{k-1}x^0+\dbinom{k}{k-1}x^1+\dbinom{k+1}{k-1}x^2+\dots+\dbinom{n+k-1}{k-1}x^n+\dots=\sum\limits_{n\geq 0}\dbinom{n+k-1}{k-1}x^n\)

证明:对开头那个式子两边同时去 \(k-1\) 阶导可得 \(LHS=\dfrac{(k-1)!}{(1-x)^k}\)\(RHS=\sum\limits_{n\geq 0}\dfrac{(n+k-1)!}{n!}x^n\),于是 \(\dfrac{1}{(1-x)^k}=\sum\limits_{n\geq 0}\dbinom{n+k-1}{k-1}x^n\)

这里再给出几个常见的 OGF:

  • \(\{1,1,1,\dots,1\}\to\dfrac{1}{1-x}\)
  • \(\{\dbinom{n}{0},\dbinom{n}{1},\dbinom{n}{2},\dots\dbinom{n}{n}\}\to(1+x)^n\)
  • \(\{0,1,\dfrac{1}{2},\dfrac{1}{3},\dfrac{1}{4},\dots\}\to\ln(\dfrac{1}{1-x})=-\ln(1-x)\)
  • \(\{1,1,\dfrac{1}{2!},\dfrac{1}{3!},\dfrac{1}{4!},\dots\}\to e^x\)

下面给出几个例题:

例 1:用生成函数推导斐波那契数列通项

\(F(x)\) 为 Fibonacci 序列的生成函数。根据 \(f_i=f_{i-1}+f_{i-2}\) 可知:

\(F(x)=\sum\limits_{n\geq 0}f_nx^n=x+\sum\limits_{n\geq 2}(f_{n-1}+f_{n-2})x^n=x+\sum\limits_{n\geq 2}(f_{n-1}x^{n-1}\times x+f_{n-2}x^{n-2}\times x^2)\)

\(=x+x\times\sum\limits_{n\geq 0}f_nx^n+x^2\times \sum\limits_{n\geq 0}f_nx^n\)

\(F=x+xF+x^2F\)

移个项可得 \(F\times(1-x-x^2)=x\)

于是 \(F=\dfrac{x}{1-x-x^2}\)

这式子看起来挺简洁的,我们称其为“封闭形式

将下面的东西暴力因式分解得到 \(F=\dfrac{x}{(1-\dfrac{1+\sqrt{5}}{2}x)(1-\dfrac{1-\sqrt{5}}{2}x)}\)

考虑待定系数法,设 \(F=A\times\dfrac{1}{(1-\dfrac{1-\sqrt{5}}{2}x)}+B\times\dfrac{1}{(1-\dfrac{1+\sqrt{5}}{2}x)}\)

\(A\times(1-\dfrac{1+\sqrt{5}}{2}x)+B\times(1-\dfrac{1-\sqrt{5}}{2}x)=x\)

\(\begin{cases}A+B=0&\\-A\times\dfrac{1+\sqrt{5}}{2}-B\times\dfrac{1-\sqrt{5}}{2}=1\end{cases}\)

解得 \(A=-\dfrac{1}{\sqrt{5}},B=\dfrac{1}{\sqrt{5}}\)

\(F=-\dfrac{1}{\sqrt{5}}\times\dfrac{1}{(1-\dfrac{1-\sqrt{5}}{2}x)}+\dfrac{1}{\sqrt{5}}\times\dfrac{1}{(1-\dfrac{1+\sqrt{5}}{2}x)}\)

再把下面的东西打开可得 \(F=\sum\limits_{n\geq 0}-\dfrac{1}{\sqrt{5}}\times(\dfrac{1-\sqrt{5}}{2}x)^n+\dfrac{1}{\sqrt{5}}\times(\dfrac{1+\sqrt{5}}{2}x)^n\)

\(f_n=\dfrac{(\dfrac{1+\sqrt{5}}{2})^n-\dfrac{1-\sqrt{5}}{2})^n}{\sqrt{5}}\)

这就是 \(f_n\) 通项公式的由来。

例 2

(2004年中国女子数学奥林匹克)

一副三色纸牌共 \(32\) 张,其中红黄蓝每种颜色的纸牌各 \(10\) 张,编号分别为 \(1,2,3,\dots,10\),大小王各一张,编号均为 \(0\)。从这副牌中取若干张牌,然后如下列规则计算分值:每张编号为 \(k\) 的牌记 \(2^k\) 分。若它们的分值之和等于 \(2004\),则称其为一个“好牌组”,求“好牌组”的个数。

首先显然可以构造生成函数 \(f(x)=(1+x^{2^0})^2(1+x^{2^1})^3(1+x^{2^2})^3\dots(1+x^{2^{10}})^3\)

考虑化简这个函数,在前面补一个 \(1+x\),再补三个 \(1-x\) 可得

\(f(x)=\dfrac{(1-x)^3(1+x^{2^0})^3(1+x^{2^1})^3(1+x^{2^2})^3\dots(1+x^{2^{10}})^3}{(1+x)(1-x)^3}\)

上面的部分显然可以用滚雪球的方式转化为 \(({1-x^{2^{11}}})^3\)

于是 \(f(x)=\dfrac{(1-x^{2^{11}})^3}{(1-x^2)(1-x)^2}\)

将下面的部分展开可得 \(f(x)=(1-x^{2^{11}})^3\times(1+x^2+x^4+x^6+\dots)(1+2x+3x^2+4x^3+\dots)\)

考察 \(f(x)\)\(x^{2004}\) 前的系数,显然第一个括号只能取 \(x^0\),而如果第二个括号取了 \(x^{i}\),第三个括号就要取 \(x^{2004-i}\),系数为 \(2005-i\)。故最终答案即为 \(2005+2003+2001+\dots+3+1=1003^2=1006009\)

要是能现场切掉就好了(可以女装进考场)

例 3:P2000 拯救世界

考虑将十条限制依次用生成函数表示出来:

kkk:

金:\(1+x^6+x^{12}+\dots=\dfrac{1}{1-x^6}\)

木:\(1+x+x^2+x^3+\dots+x^9=\dfrac{1-x^{10}}{1-x}\)

水:\(1+x+x^2+x^3+\dots+x^5=\dfrac{1-x^6}{1-x}\)

火:\(1+x^4+x^8+\dots=\dfrac{1}{1-x^4}\)

土:\(1+x+x^2+x^3+\dots+x^7=\dfrac{1-x^8}{1-x}\)

lzn:

金:\(1+x^2+x^4+x^6+\dots=\dfrac{1}{1-x^2}\)

木:\(1+x=\dfrac{1-x^2}{1-x}\)

水:\(1+x^8+x^{16}+\dots=\dfrac{1}{1-x^8}\)

火:\(1+x^{10}+x^{20}+\dots=\dfrac{1}{1-x^{10}}\)

土:\(1+x+x^2+x^3=\dfrac{1-x^4}{1-x}\)

将十个 OGF 依次乘起来,可得:

\(\dfrac{1}{1-x^6}\times\dfrac{1-x^{10}}{1-x}\times\dfrac{1-x^6}{1-x}\times\dfrac{1}{1-x^4}\times\dfrac{1-x^8}{1-x}\times\dfrac{1}{1-x^2}\times\dfrac{1-x^2}{1-x}\times\dfrac{1}{1-x^8}\times\dfrac{1}{1-x^{10}}\times\dfrac{1-x^4}{1-x}\)

该消的消了,最后喜闻乐见地只剩下了个 \(\dfrac{1}{(1-x)^5}\)

然后你套公式可以得到答案为 \(\dbinom{n+4}{4}\),上个高精这题就做完了。

例 4. P4451 [国家集训队]整数的lqp拆分

首先有一个非常 naive 的 \(dp\) 状态:\(dp_{i,j}\) 表示选了 \(i\) 个数和为 \(j\) 的权值和。

显然 \(dp_{i,j}=\sum\limits_{k=1}^jdp_{i-1,j-k}\times F_k\)

也就是说 \(dp_i=F^i\)

现在我们要求 \(\sum\limits_{i=1}^{\infty}dp_{i,n}\)

也就是求 \([x^n]1+F+F^2+F^3+\dots\)

\(1+F+F^2+F^3+\dots=\dfrac{1}{1-F}\)

我们知道,\(F=\dfrac{x}{1-x-x^2}\)

代入可得 \(\dfrac{1}{1-F}=\dfrac{1-x-x^2}{1-2x-x^2}=1+\dfrac{x}{1-2x-x^2}\)

常数项忽略不计,故我们只需搞清楚 \(\dfrac{x}{1-2x-x^2}\) 的展开式即可。

将底下分母因式分解可得 \(1-2x-x^2=-(x-(-1+\sqrt{2}))(x-(-1-\sqrt{2}))\)

于是 \(\dfrac{1}{1-F}=1-\dfrac{x}{(x-(-1+\sqrt{2}))(x-(-1-\sqrt{2}))}\)

老套路,使用待定系数法,设 \(\dfrac{x}{(x-(-1+\sqrt{2}))(x-(-1-\sqrt{2}))}=A\times\dfrac{1}{x-(-1+\sqrt{2})}+B\times\dfrac{1}{x-(-1-\sqrt{2})}\)

\(A\times(x-(-1-\sqrt{2}))+B\times(x-(-1+\sqrt{2}))=x\)

\(\begin{cases}A+B=1&\\-A\times(-1-\sqrt{2})-B\times(-1+\sqrt{2})=0\end{cases}\)

解得 \(A=\dfrac{2-\sqrt{2}}{4},B=\dfrac{2+\sqrt{2}}{4}\)

\(\dfrac{x}{(x-(-1+\sqrt{2}))(x-(-1-\sqrt{2}))}=\dfrac{2-\sqrt{2}}{4}\times\dfrac{1}{x-(-1+\sqrt{2})}+\dfrac{2+\sqrt{2}}{4}\times\dfrac{1}{x-(-1-\sqrt{2})}\)

它又等于 \(\dfrac{\sqrt{2}}{4}(\dfrac{1}{\dfrac{x}{\sqrt{2}-1}-1}+\dfrac{1}{\dfrac{x}{\sqrt{2}+1}+1})=-\dfrac{\sqrt{2}}{4}(\dfrac{1}{1-(1+\sqrt{2})x}-\dfrac{1}{1-(1-\sqrt{2})x})\)

故答案为 \(\dfrac{\sqrt{2}}{4}((1+\sqrt{2})^n-(1-\sqrt{2})^n)\)

打表 可知 \(2\)\(\bmod (10^9+7)\) 意义下的二次剩余为 \(59713600\),于是就可以 \(\mathcal O(\log n)\) 计算上述式子了。

指数型生成函数(EGF)

一个序列 \(a_0,a_1,a_2,\dots,a_n,\dots\)指数型生成函数 \(\hat{A}(x)=a_0\times\dfrac{x^0}{0!}+a_1\times\dfrac{x^1}{1!}+a_2\times\dfrac{x^2}{2!}+\dots+a_n\times\dfrac{x^n}{n!}+\dots\)

你可以简单理解为,一个序列的 EGF 第 \(n\) 项的系数为 \(a_n\) 的值除以 \(n!\)

你可能会问:指数型生成函数和普通型生成函数除了长得不一样,还有什么区别吗?

我们还是拿前面使用的取宝石的例子:有 \(4\) 个红宝石,\(5\) 个绿宝石,\(6\) 个蓝宝石以及无限个黄宝石,要从中选出 \(r\) 个宝石并将它们排成一排,其中红宝石最多选 \(2\) 个,绿宝石必须选偶数个,蓝宝石选出的个数必须在 \(2\)\(5\) 之间,黄宝石选的个数必须为 \(3\) 的倍数,求选择的方案数 \(a_r\)

在之前的例子中,我们只需选出即可,也就是说,假设你四种颜色的宝石分别选择了 \(x_1,x_2,x_3,x_4\) 个,不论 \(x_1,x_2,x_3,x_4\) 是多少,都对答案有 \(1\) 的贡献。但这次不同,这次你还需将 \(r\) 个宝石排成一排,根据排列组合的知识,这次 \(x_1,x_2,x_3,x_4\) 对答案的贡献应为 \(\dfrac{r!}{x_1!x_2!x_3!x_4!}\)

那么这个东西怎么求呢?假设我们不考虑对宝石个数的限制,那么 \(a_r=\sum\limits_{x_1+x_2+x_3+x_4=r}\dfrac{r!}{x_1!x_2!x_3!x_4!}\),令 \(f(x)=\dfrac{x^i}{i!}\),那么 \(a_r=r!\times[x^r]f^4(x)\)

对宝石个数加上限制也是同样道理,红宝石可以选 \(0,1,2\) 个,故第一个括号里放 \(1+x+\dfrac{x^2}{2!}\),绿宝石可以选 \(0,2,4\) 个,故第二个括号里放 \(1+\dfrac{x^2}{2!}+\dfrac{x^4}{4!}\),蓝宝石可以选 \(2,3,4,5\) 个,故第三个括号里放 \(\dfrac{x^2}{2!}+\dfrac{x^3}{3!}+\dfrac{x^4}{4!}+\dfrac{x^5}{5!}\),黄宝石能选 \(0,3,6,9,\dots\) 个,故最后一个括号里放 \(1+\dfrac{x^3}{3!}+\dfrac{x^6}{6!}+\dfrac{x^9}{9!}+\dots\)

然后对四个式子求个卷积 \(F(x)\),最后 \(a_r=r!\times[x^r]F(x)\)

通过上面的式子我们可以看出,指数型生成函数用来解决有标号的计数问题,看到“排列”之类的字眼就可以想到用 EGF 来解决。


我们定义两个序列 \(a_n,b_n\)二项加法卷积 \(c_n=\sum\limits_{i+j=n}\dbinom{n}{i}a_ib_j\)

\(\hat{A}(x),\hat{B}(x),\hat{C}(x)\) 分别为 \(a,b,c\) 的 EGF,那么可以得到二项加法卷积与 EGF 一个很重要的联系: \(\hat{C}(x)=\hat{A}(x)\times\hat{B}(x)\),也就是 \(c\) 的 EGF 为 \(a,b\) 的 EGF 的卷积。

证明:\(c_n=\sum\limits_{i+j=n}\dbinom{n}{i}a_ib_j=\sum\limits_{i+j=n}\dfrac{n!}{i!j!}\times a_ib_j=\sum\limits_{i+j=n}n!\times\dfrac{a_i}{i!}\times\dfrac{b_j}{j!}\)

\(\dfrac{c_n}{n!}=\sum\limits_{i+j=n}\dfrac{a_i}{i!}\times\dfrac{b_j}{j!}\),记 \(\hat{c}_n=\dfrac{c_n}{n!},\hat{a}_n=\dfrac{a_n}{n!},\hat{b}_n=\dfrac{b_n}{n!}\),那么 \(\hat{c}\)\(\hat{a}\)\(\hat{b}\) 的卷积,即 \(\hat{C}(x)=\hat{A}(x)\times\hat{B}(x)\)

这样我们就可以将 EGF 当作普通多项式乘法来算,别忘了最后乘个 \(n!\)

还是记几个常见的 EGF 吧:

  • \(\{1,1,1,\dots,1\}\to e^x\)
  • \(\{1,-1,1,-1,\dots\}\to e^{-x}\)
  • \(\{1,c,c^1,c^2,c^3,\dots\}\to e^{cx}\)
  • \(\{1,0,1,0,1\dots\}\to\dfrac{e^x+e^{-x}}{2}\)
  • \(\{0,1,0,1,0\dots\}\to\dfrac{e^x-e^{-x}}{2}\)
  • \(\{1,n,n^{\underline{2}},n^{\underline{3}}\dots\}\to(1+x)^n\)(注:\(n^{\underline{m}}=\dfrac{n!}{(n-m)!}\),这个被称之为“下降幂”,以后会学到)

那么 EGF 以及两个序列的二项加法卷积有什么组合意义吗?

还是假设有两个集合 \(A,B\),设 \(a_n\) 为从 \(A\) 中选出 \(n\) 个元素排成一列的方案数,\(b_n\) 为从 \(B\) 中选出 \(n\) 个元素排成一列的方案数。那么 \(c_n\) 就是从 \(A\cup B\) 中选出 \(n\) 个元素排成一列的方案数。

简单说一下为什么,枚举 \(A\cup B\) 中选出的 \(n\) 个元素中有多少个属于 \(A\),假设有 \(t\) 个。那么从 \(n\) 个位置中选择 \(c\) 个给 \(A\) 的方案数为 \(\dbinom{n}{t}\)\(A\) 中选出的 \(t\) 个元素的相对顺序有 \(a_t\) 种可能,\(B\) 中选出的 \(n-t\) 个元素的相对顺序有 \(b_{n-t}\) 种可能,故 \(c_t=\sum\limits_{t=0}^n\dbinom{n}{t}\times a_t\times b_{n-t}\)

现在知道为什么 EGF 能用来解决有标号的计数问题了吧

再举个例子,假设我们要合并 \(\{1,1\}\)\(\{2,2\}\) 这两个集合。

如果是 OGF 那么只能合并为 \(\{1,1,2,2\}\)

如果是 EGF 那么有 \(\{1,1,2,2\},\{1,2,1,2\},\{1,2,2,1\},\{2,1,1,2\},\{2,1,2,1\},\{2,2,1,1\}\)\(6\) 种合并方式。

由于 EGF 例题很少,就看个简单的例子罢:

用红蓝绿三种颜色,涂一个长度为 \(n\) 的纸条,要求红色和蓝色的个数是偶数,求方案数 \(a_n\)

涂一个长度为 \(n\) 的纸条,其本质显然是排列。

于是使用 EGF。”红色和蓝色的个数是偶数“,也就是说红色和蓝色的选法的 EGF 应为 \(\dfrac{e^x+e^{-x}}{2}\);对绿色的个数没有限制,故绿色的选法的 EGF 应为 \(e^x\)

把三个东西一乘起来,可得 \((\dfrac{e^x+e^{-x}}{2})^2\times e^x=\dfrac{e^{3x}+2e^x+e^{-x}}{4}\)

而我们得到的式子为 \(a_n\) 的 EGF,由 EGF 推回到原序列应将每项都乘以 \(n!\),故 \(a_n=\dfrac{3^n+2+(-1)^n}{4}\)

exp 的组合意义:生成集合

在学多项式各种操作的时候我们都学过一个东西叫做多项式 exp,可我们当时并没有对其含义进行系统的解释。

现在给出多项式 exp 的组合意义:集合的集合。

考虑序列 \(a_i\) 表示由 \(i\) 个元素组成的集合个数,记 \(F(x)\) 为序列 \(a\) 的 EGF。

再设 \(c_n\)总共含 \(n\) 个元素的、由集合组成的集合 \(S\) 的个数,其中每个元素都带标号。

那么 \(e^{F(x)}\) 就是 \(c_n\) 的 EGF。

为什么?考虑 \(e^{F(x)}\) 的泰勒展开式:\(e^{F(x)}=\sum\limits_{n\geq 0}\dfrac{F^n(x)}{n!}\),相当于枚举 \(S\) 中有多少个集合,由于带标号,故用 \(a_n\) 的 EGF \(F^n(x)\) 来计算。但由于集合与集合之间是无序的,故最后除以 \(n!\)

那么这个东西有哪些实际应用呢?再看下面两个例题:

例1:求含 \(n\) 个点的有标号的无向连通图与森林的个数

\(f_n\) 为含 \(n\) 个点的有标号的无向连通图的个数。

再设 \(g_n\) 为含 \(n\) 个点的图的个数,显然 \(g_i=2^{\binom{n}{2}}\)

而由于每张无向图都是由若干个连通块组成的,如果我们把“连通块”看作上文中的“集合”,那么一张无向图就是上文中的“集合的集合”,又 \(f_i\) 就是含 \(i\) 个点的连通块的个数。记 \(F(x)\) 为序列 \(f\) 的 EGF,\(G(x)\) 为序列 \(g\) 的 EGF,那么有 \(G(x)=e^{F(x)}\)

而现在我们已知 \(G(x)\),要求 \(F(x)\),显然只需求个多项式 \(\ln\) 就行了。

森林的情况也同理,设 \(f_n\) 为含 \(n\) 个点的有标号的森林的个数。

再设 \(g_n\) 为含 \(n\) 个点的树的个数,根据 Prufer 序列有 \(g_n=n^{n-2}\)

而由于每个森林都是由若干棵树组成的,效仿上面的过程,我们也可以把树看作“集合”,森林看作“集合的集合”。记 \(F(x)\) 为序列 \(f\) 的 EGF,\(G(x)\) 为序列 \(g\) 的 EGF,那么有 \(F(x)=e^{G(x)}\)

多项式 \(\exp\) 一遍也完事了。

例 2:贝尔数 \(B_n\) 表示将 \(1\)\(n\) 划分为若干个非空集合的方案数,其中集合之间无序。求 \(B_n\)

看到这个题立马乐了,这不是最经典的“集合的集合”的问题吗。记 \(f_i\) 为大小为 \(i\) 的集合的个数,由于集合中元素与元素之间无序,且集合不能为空,故 \(f_i=[i>0]\),也就是说 \(f_i\) 的 EGF 为 \(F(x)=e^x-1\)。再根据 \(B_n\) 的 EGF 为 \(e^{F(x)}\) 可求得 \(B_n=n![x^n]e^{e^x-1}\)

当然还有别的做法,在【多项式Ⅱ】中应该会提及。

总结

生成函数是一种强有力的解决组合计数问题的工具,它能将一个序列的信息映射到一个形式幂级数 \(F(x)\) 上,并使用多项式乘法的方式实现序列之间的转化。

生成函数分 OGF 和 EGF 两种,前者一般用于解决“组合”之类的问题,后者一般用于解决“排列”之类的问题。

posted @ 2021-01-28 11:45  tzc_wk  阅读(563)  评论(2编辑  收藏  举报