首页 > 其他分享 >生成函数

生成函数

时间:2023-01-07 14:00:27浏览次数:33  
标签:方案 frac 函数 sum 2x 生成 nx ge

生成函数

1.OGF

1.1.递归式和OGF

Example 1.

考虑一个问题,一开始池塘里有 \(50\) 只青蛙,视作第 \(0\) 年。

每年青蛙会翻四倍,然后跳出池塘 \(100\) 只,问第 \(n\) 年池塘有多少青蛙。

这个问题很容易找到一个递推式:\(a_{n+1}=4a_n-100,n\ge 0\)。

如果说暴力求得所有 \(a_i\),复杂度是 \(O(n)\) 的,但是得到了很多不必要的信息。

为了阻止这样时间的浪费,我们想要找到 \(a_n\) 的通项公式。

先写成递归式的样子

\[a_{n+1}=4a_n-100\tag{1} \]

初值是 \(a_0=50\)。

这样可以得到无穷多个等式,我们用生成函数的技巧优化成一个等式。

Definition 1. 令 \(\{f_n\}_{n\ge 0}\) 为一个实数序列,形式幂级数 \(F(x)=\sum_{n\ge 0}f_nx^n\) 被称作序列 \(\{f_n\}_{n\ge 0}\) 的普通生成函数 \(\text{Ordinary Generating Funcion}\),简称 \(\text{OGF}\)。

\(\text{OGF}\) 是最平凡的,所以有时也直接省略 \(\text{ordinary}\),直接称作生成函数。

为了将生成函数代入上面的式子,只需要在等式两边同时乘上 \(x^{n+1}\),并对所有 \(n\ge 0\) 求和。

然后就可以得到

\[\sum_{n\ge 0}a_{n+1}x^{n+1}=\sum_{n\ge 0}4a_nx^{n+1}-\sum_{n\ge 0}100x^{n+1}.\tag 2 \]

左边可以写成 \(G(x)-a_0\),右边可以写成 \(4xG(x)-\frac{100x}{1-x}\),所以可以得到

\[G(x)-50=4xG(x)-\frac{100x}{1-x}.\tag 3 \]

重新排列 \((3)\) 可以得到

\[G(x)=\frac{50}{1-4x}-\frac{100x}{(1-x)(1-4x)}.\tag 4 \]

\(x^n\) 的系数就是 \(a_n\),所以要求这个式子 \(x^n\) 的系数。

分开拆右式两项

\[\frac{50}{1-4x}=50\sum_{n\ge 0}(4x)^n=50\sum_{n\ge 0}4^nx^n,\notag\\ \frac{100x}{(1-x)(1-4x)}=100x\cdot\bigg(\sum_{n\ge 0}x^n\bigg)\cdot\bigg(\sum_{n\ge 0}4^nx^n\bigg).\notag \]

上面那个式子的系数是容易的,下面的是一个卷积形式。

这个有两种处理办法。

第一种是直接展开卷积式,发现是一个等比数列求和的形式

第二种,考虑找到常数 \(A,B\) 满足

\[\frac{A}{1-x}+\frac{B}{1-4x}=\frac{100x}{(1-x)(1-4x)}. \]

肯定能找到,因为通分过去就是右边那样。

然后通分解方程即可得到 \(A=\frac{100}3,B=\frac{-100}3\),所以

\[\begin{align} \frac{100x}{(1-x)(1-4x)}&=\frac{100}3\cdot \frac 1{1-4x}-\frac{100} 3\cdot \frac 1 {1-x}\notag\\ &=\frac{100}3\bigg(\sum_{n\ge 0}4^nx^n-\sum_{n\ge 0}x^n\bigg)\notag\\ &=\sum_{n\ge 0}(4^n-1)x^n \frac{100} 3. \end{align} \]

所以综合起来得到

\[a_n=50 \cdot4^n-100\cdot\frac{4^n-1}{3}.\tag 5 \]

代入发现是对的,接下来总结一下解递归式的流程。

  1. 定义序列 \(\{a_n\}_{n\ge 0}\) 的生成函数 \(G(x)\)。
  2. 把递归式变成生成函数的一个等式,常用技巧是乘上 \(x^n,x^{n+1},x^{n+k}\) 之类的,然后对所有 \(n\ge 0\) 求和。
  3. 解出 \(G(x)\)。
  4. 找到 \(G(x)\) 中 \(x^n\) 的系数 \(a_n\)。

Example 2.

一开始往银行里存 \(1000\) 块钱,每年利润 \(5\%\),然后新的一年再存 \(500\),问 \(n\) 年之后账户有多少钱。

先写出递归式,然后按照上面的流程来。

\(a_0=1000,a_{n+1}=1.05\cdot a_n+500\)。

\[\sum_{n\ge 0}a_{n+1}x^{n+1}=\sum_{n\ge 0}1.05a_nx^{n+1}+\sum_{n\ge 0}500x^{n+1}.\tag 6 \]

然后就有

\[G(x)-1000=1.05xG(x)-\frac{500x}{(1-x)}. \]

移项之后

\[G(x)=\frac{1000}{1-1.05x}-\frac{500x}{(1-x)(1-1.05x)}.\tag 7 \]

注意有

\[\frac{500x}{(1-x)(1-1.05x)}=500x\cdot\bigg(\sum_{n\ge 0}x^n\bigg)\cdot\bigg(\sum_{n\ge 0}1.05^nx^n\bigg).\tag 8 \]

然后就和上一题一样解这个 \(G(x)\) 即可,过程是非常类似的。

最后得到 \(a_n=1.05^n\cdot 11000-10000\)。

下个例子说明生成函数也能解有更多项的递归式。

Example 3.

令 \(a_0=0,a_1=1,a_{n+2}=3a_{n+1}-2a_n,n\ge 0\),求通项公式。

令 \(G(x)=\sum_{n\ge 0}a_nx^n\),等式两边乘上 \(x^{n+2}\) 并对 \(n\ge 0\) 求和得到

\[\sum_{n\ge 0}a_{n+2}x^{n+2}=3\sum_{n\ge 0}a_{n+1}x^{n+2}-2\sum_{n\ge 0}a_nx^{n+2}, \]

写成 \(G(x)\) 的形式并解出来

\[G(x)=\frac{x}{1-3x+2x^2}=\frac{A}{x-1}+\frac{B}{2x-1}.\tag 9 \]

解到 \(A=1,B=-1\) 之后代入得到

\[G(x)=\frac {-1}{1-x}+\frac 1 {1-2x}.\tag {10} \]

把两项分别展开即可得到

\[G(x)=-\sum_{n\ge 0}x^n+\sum_{n\ge 0}2^nx^n=\sum_{n\ge 0}(2^n-1)x^n \]

因此就有 \(a_n=2^n-1\)。

1.2.OGF的卷积

Lemma 4. \(\{a_n\}_{n\ge 0}\) 和 \(\{b_n\}_{n\ge 0}\) 为两个序列,让 \(A(x)\) 和 \(B(x)\) 分别为这两个序列的 \(\text{OGF}\),定义 \(c_n=\sum_{i=0}^n a_ib_{n-i}\),\(C(x)=\sum_{n\ge 0}c_nx^n\),那么有

\[A(x)B(x)=C(x). \]

换句话说,就是 \(A(x)B(x)\) 中 \(x^n\) 的系数 \(c_n\) 是 \(\sum_{i=0}^n a_ib_{n-i}\)。

Proof. 把 \(A(x),B(x)\) 分别展开成 \(a_0+a_1x+a_2x^2+...\) 和 \(b_0+b_1x+b_2x^2+...\),考虑其中任意两项的乘积 \(a_ix^i\cdot b_jx^j\),系数为 \(a_ib_j\),能加在 \(x^n\) 的系数当且仅当 \(j=n-i\),因此得证。

上面的引理的组合解释如下

Theorem 5. 令 \(a_n\) 为在大小为 \(n\) 的集合上组合成一个结构的方案数,\(b_n\) 为在大小为 \(n\) 的集合上组合成另一个结构的方案数,\(c_n\) 为把 \(1\) 到 \(n\) 组成的集合划分成 \(S=\{1,2,...,i\}\),\(T=\{i+1,i+2,...,n\}\),允许为空,在 \(S\) 上组合成第一种结构,在 \(T\) 上组成第二种结构的方案数。那么令 \(A(x),B(x),C(x)\) 为序列 \(a,b,c\) 的生成函数,那么有

\[A(x)B(x)=C(x). \]

Proof. 有 \(a_i\) 种方案在 \(S\) 上组合成第一种结构,\(b_{n-i}\) 在 \(T\) 上组合成第二种结构,对任意 \(i\in[0,n]\) 都成立,所以 \(c_n=\sum_{i=0}^na_ib_{n-i}\),因此得证。

Example 6. 一个学期有 \(n\) 天,有多少方案能把 \(n\) 天划分成两个部分,在第一部分选 \(1\) 天休息,在第二部分选 \(2\) 天休息。

令 \(f_n\) 为答案,容易发现 \(f_n=\sum_{k=1}^{n-2}k\binom {n-k} 2\),这个又显然是一个卷积式。

构造 \(A(x)=\sum_{k\ge 0}kx^k,B(x)=\sum_{k\ge 0}\binom k 2 x^k\)。

那么有封闭形式

\[A(x)=\frac x{(1-x)^2},\notag\\ B(x)=\frac {x^2}{(1-x)^3}.\notag \]

令 \(F(x)\) 为序列 \(f\) 的生成函数,所以

\[F(x)=A(x)B(x)=\frac{x^3}{(1-x)^5}=x^3\sum_{n\ge 0}\binom {n+4}4x^n=\sum_{n\ge 3}\binom {n+1} 4 x^n. \]

所以 \(f_n=\binom {n+1} 4\)。

Example 7. 考虑把 \(n\) 天分成两个部分,每个部分任意选多少天休息,求方案数。

令 \(g_n\) 为答案,\(C(x)\) 为每一部分的生成函数,那么 \(C(x)=\sum_{k\ge 0}2^kx^k=\frac 1 {1-2x}\)。

因此有

\[F(x)=C(x)C(x)=\frac 1{(1-2x)^2}. \]

暴力展开得到

\[F(x)=\frac 1 2\cdot \sum_{n\ge 1}n\cdot 2^nx^{n-1}=\sum_{n\ge 0}(n+1)2^nx^n. \]

所以 \(g_n=(n+1)\cdot 2^n\)。

Example 8. 找到把 \(n\) 天分成三个部分,第一部分任选多少天休息,第二部分选奇数天休息,第三部分总天数为偶数的方案数。

令 \(g_n\) 为答案,\(A(x),B(x),C(x)\) 为三部分的生成函数。

那么有

\[A(x)=\sum_{n\ge 0}2^nx^n=\frac 1{1-2x}\notag\\ B(x)=\sum_{n\ge 1}2^{n-1}x^n=\frac x{1-2x}\notag\\ C(x)=1+\frac x{1-2x}=\frac {1-x}{1-2x}\notag \]

令 \(G(x)\) 是 \(g\) 的生成函数,那么 \(G(x)=A(x)B(x)C(x)=\frac {x(1-3x)}{(1-2x)^3}\)。

把分子拆成两部分暴力算就可以了。

\((1-2x)^{-3}\) 可以尝试暴力展开算,也可以直接用二项式定理展开

\[(1-2x)^{-3}=\sum_{n\ge 0}\binom {-3} n(-2x)^n=\sum_{n\ge 0}\binom {n+2} 2 2^nx^n. \]

第二个等号是因为 \(\binom r k=(-1)^k\binom {k-r-1} k\)。

所以

\[G(x)=\sum_{n\ge 0}\binom {n+2} 2 2^nx^{n+1}-3\sum_{n\ge 0}\binom {n+2} 2 2^nx^{n+2}. \]

最后得出 \(g_n=2^{n-3}n(5-n)\),对于 \(n\ge 0\)。

原书上的推理好像是错的(

Example 9. 令 \(p_{\le k}(n)\) 表示 \(n\) 分拆成最大为 \(k\) 的若干个数的方案数,那么有

\[\sum_{n\ge 0}p_{\le k}(n)x^n=\prod_{i=1}^k\frac 1 {1-x^i}\tag {11}\\ =(1+x+x^2+x^3+...)(1+x^3+x^4+x^6+...)...(1+x^k+x^{2k}+x^{3k}+...). \]

拆开之后发现方案数正确是显然的。

然而这个式子同时还可以表示 \(n\) 分拆成最多 \(k\) 个数的方案数。

考虑归纳,枚举这 \(k\) 部分的最小值为 \(a\),那么就在最后一个括号取 \(x^{ak}\),然后 \(k\) 个数中等于最小值的没了,变成规模至少减一的子问题。

Example 10. 令 \(p(n)\) 表示 \(n\) 的所有分拆方案数,那么有

\[\sum_{n\ge 0}p(n)x^n=\prod_{k=1}^{\infin}\frac 1 {1-x^k}\tag {12} \]

这个东西有时候很有用。

Example 11. 令 \(p_{\text{odd}}(n)\) 为把 \(n\) 拆分为奇数的方案数,\(p_{\text{d}}(n)\) 为把 \(n\) 拆分为互不相同的数,那么这两个数相等。

证明两个数相等只要证明生成函数相等即可。

拆分为奇数的方案数是

\[F(x)=\sum_{n\ge 0}p_{\text{odd}}(n)x^n=\prod_{i\ge 1,i \ odd}\frac 1 {1-x^i} \]

拆分互不相同的方案数是

\[G(x)=\sum_{n\ge 0}p_{\text d}(n)x^n=\prod_{i\ge 1}(1+x^i)=\prod_{i\ge 1}\frac {1-x^{2i}}{1-x^i}. \]

暴力展开,发现 \(G(x)\) 中所有 \(\frac 1 {1-x^i}\) 在 \(i\) 为奇数的时候系数为 \(1\),\(i\) 为偶数的时候系数为 \(0\),得证。

1.3.OGF的复合

复合生成函数 \(F(G(x))=\sum_{n\ge 0} f_nG(x)^n\),由于形式幂级数求和只有在任意 \(x^n\) 的系数都只为有限个数求和时才有定义,所以需要满足 \(G(x)\) 的常数项为 \(0\)。

Definition 12. 令 \(F(x)=\sum_{n\ge 0}f_nx^n\) 为一个形式幂级数,\(G(x)\) 为一个常数项为 \(0\) 的形式幂级数,那么我们定义

\[F(G(x))=\sum_{n\ge 0}f_n(G(x))^n=f_0+f_1G(x)+f_2G(x)^2+... \]

下一个定理是生成函数复合的主要应用

Theorem 13. 令 \(a_n\) 为在 \(n\) 元集合上构建一个结构的方案数,\(a_0=0\),\(h_n\) 表示把 \(1\) 到 \(n\) 的集合分成若干不相交的线段,每个建造一个 \(a\) 结构的方案,令 \(A(x)=\sum_{n\ge 0}a_nx^n,H(x)=\sum_{n\ge 0}h_nx^n\),有

\[H(x)=\frac 1 {1-A(x)}. \]

不同于 Theorem 5,这里不允许有空的,同时钦定了 \(h_0=1\)。

Proof. 由于 \(A(x)^k\) 为把 \(n\) 个分成恰好 \(k\) 个算方案的生成函数,所以对 \(k\ge 1\) 的这个求和即可。

所以有

\[H(x)=1+\sum_{k\ge 1}A(x)^k=\sum_{k\ge 0}A(x)^k=\frac 1{1-A(x)}. \]

Example 14. \(n\) 个士兵占成一列,划分成若干段,每一段选一个领导者,方案数为 \(h_n\),求 \(h_n\)。

就是上面那个定理直接带就行了,\(A(x)=\sum_{k\ge 1}kx^k=\frac x{(1-x)^2}\)。

\[H(x)=\frac {1}{1-A(x)}=\frac {1}{1-\frac {x}{(1-x)^2}}=1+\frac x{1-3x+x^2} \]

\(1-3x+x^2\) 因式分解不出来,但是是有两个不同的实数根的,解方程得到 \(\alpha =\frac {3+\sqrt 5} 2,\beta=\frac {3-\sqrt 5} 2\)。

所以设 \(A,B\),有

\[\frac 1{1-3x+x^2}=\frac {1}{(x-\alpha)(x-\beta)}=\frac A{x-\alpha}-\frac {B}{x-\beta}. \]

解方程得到 \(A=B=\frac 1 {\sqrt 5}\)。

代入,然后经过一些简单的化简,得到

\[\frac 1{1-3x+x^2}=\frac 1 {\sqrt 5}\bigg(\frac {\alpha}{1-\alpha x}-\frac {\beta}{1-\beta x}\bigg). \]

因此 \(x^n\) 的系数即是 \(\frac 1{\sqrt 5}(\alpha^{n+1}-\beta^{b+1})\)。

所以 \(h_n=\frac 1{\sqrt 5}(\alpha ^{n+1}-\beta^{n+1}),n>0\),\(n=0\) 时 \(h_0=1\)。

下一个定理系数和分出来的个数有关。

Theorem 15. 令 \(a_n\) 为在 \(n\) 元集合上构建一个结构的方案数,\(a_0=0\),\(b_n\) 为在 \(n\) 元集合上构建第二种结构的方案数,\(b_0=1\),\(g_n\) 表示把 \(1\) 到 \(n\) 的集合分成若干不相交的线段,每个建造一个 \(a\) 结构,然后再在所有线段上构造一个 \(b\) 结构的方案,\(g_0=1\),令 \(A(x),B(x),G(x)\) 分别为 \(a,b,g\) 的生成函数,那么

\[G(x)=B(A(x)). \]

Proof. 假设划分成了 \(k\) 条线段,那么有 \(b_k\) 的方案数构造 \(b\) 结构,\(a\) 的方案数是 \([x^n]A(x)^k\),对 \(G(x)\) 的贡献就是 \(b_kA(x)^k\),对所有 \(k\) 求和,就有 \(G(x)=\sum_{k\ge 0}b_kA(x)^k\),因此得证。

Example 16. \(n\) 个士兵站成一列,分成若干段,然后从中选若干段晚上值班,问方案数。

每一段的方案数都是 \(1\),所以 \(A(x)\) 就是 \(\frac 1{1-x}\),\(b_k=2^k\),所以 \(B(x)=\frac 1{1-2x}\)。

代入上一个定理,就可以得到

\[G(x)=B(A(x))=\frac 1{1-\frac {2x}{1-x}}=\frac {1-x}{1-3x}=\frac 1{1-3x}-\frac x{1-3x},\notag\\ G(x)=\sum_{n\ge 0}3^nx^n-\sum_{n\ge 1}3^{n-1}x^n=1+\sum_{n\ge 1}2\cdot3^{n-1}x^n. \]

因此对于 \(n\ge 1\),\(g_n=2\cdot 3^{n-1}\)。

2.EGF

2.1.递归式和EGF

有的时候 \(\text{OGF}\) 推不出封闭形式,可能需要 \(\text{EGF}\)。

Example 17. 令 \(a_0=1\),\(a_{n+1}=(n+1)(a_n-n+1)\),对于 \(a_n\) 求通项公式。

\(\text{OGF}\) 发现做不出来,在这里引出 \(\text{EGF}\)。

Definition 18. 令 \(\{f_n\}_{n\ge 0}\) 为一个实数序列,形式幂级数 \(F(x)=\sum_{n\ge 0}f_n\frac {x^n}{n!}\) 被称作序列 \(f\) 的指数生成函数。

叫这个名字的原因是 \(f_n=1\) 的序列的 \(\text{EGF}\) 是 \(e^x\)。

考虑上面那个问题,令 \(A(x)=\sum_{n\ge 0}a_n\frac {x^n}{n!}\) 为序列 \(a\) 的指数生成函数,然后对于式子两边乘上 \(\frac {x^{n+1}}{(n+1)!}\),并对 \(n\ge 0\) 求和得到

\[\sum_{n\ge 0}a_{n+1}\frac {x^{n+1}}{(n+1)!}=\sum_{n\ge 0}a_n\frac {x^{n+1}}{n!}-\sum_{n\ge 0}(n-1)\frac{x^{n+1}}{n!}.\tag {13} \]

写成生成函数

\[A(x)-1=xA(x)-x^2e^x+xe^x,\notag\\ A(x)=\frac {1}{1-x}+xe^x=\sum_{n\ge 0}x^n+\sum_{n\ge 0}\frac {x^{n+1}}{n!}. \]

然后要先把这个还原成 \(\sum_{n\ge 0}a_n\frac {x^n}{n!}\) 的形式,把 \(a_n\) 作为系数。

最后可以得到 \(a_n=n!+n\)。

Example 19. 令 \(f_0=0\),\(f_{n+1}=2(n+1)f_n+(n+1)!\),对 \(n\ge 0\)。求 \(f_n\) 的通项公式。

令 \(F(x)=\sum_{n\ge 0}f_n\frac {x^n}{n!}\),两边乘上 \(\frac {x^{n+1}}{(n+1)!}\),然后对于 \(n\ge 0\) 求和得到

\[\sum_{n\ge 0}f_{n+1}\frac{x^{n+1}}{(n+1)!}=2x\sum_{n\ge 0}f_n\frac{x^n}{n!}+\sum_{n\ge 0}x^{n+1}.\tag {14} \]

写成生成函数

\[F(x)=2xF(x)+\frac {x}{1-x},\notag\\ F(x)=\frac x{(1-x)(1-2x)},\notag\\ F(x)=\sum_{n\ge 0}(2^n-1)x^n. \]

因此 \(f_n=(2^n-1)n!\)。

2.2.EGF的卷积

Lemma 20. 令 \(a,b\) 为两个序列,\(A(x)=\sum_{n\ge 0}a_n\frac{x^n}{n!},B(x)=\sum_{n\ge 0}b_n\frac{x^n}{n!}\),定义序列 \(c\) 满足 \(c_n=\sum_{i=0}^n\binom n ia_ib_{n-i}\),令 \(C(x)\) 是序列 \(c\) 的指数生成函数,那么

\[A(x)B(x)=C(x) \]

也就是 \(C(x)\) 中 \(\frac{x^n}{n!}\) 的系数 \(c_n\) 为 \(\sum_{i=0}^n\binom n i a_ib_{n-i}\)。

Proof. 只要考虑 \(A(x)\) 的每一项和 \(B(x)\) 的每一项对 \(C(x)\) 的贡献就行了。

\[a_i\frac {x^i}{i!}\cdot b_j\frac {x^j}{j!}=a_ib_j\frac{x^{i+j}}{i!j!}\cdot \frac{(i+j)!}{(i+j)!}=\frac{x^{i+j}}{(i+j)!}\cdot\binom{i+j}i. \]

所以得证。

Theorem 21. 令 \(a_n\) 为在大小为 \(n\) 的集合上组合成一个结构的方案数,\(b_n\) 为在大小为 \(n\) 的集合上组合成另一个结构的方案数,\(c_n\) 为把 \(1\) 到 \(n\) 组成的集合划分成 \(S,T,S\cup T=[n],S\cap T=\empty\),允许为空,在 \(S\) 上组合成第一种结构,在 \(T\) 上组成第二种结构的方案数。那么令 \(A(x),B(x),C(x)\) 为序列 \(a,b,c\) 的指数生成函数,那么有

\[A(x)B(x)=C(x). \]

Proof. 如果 \(S\) 有 \(i\) 个元素,那么选择的方案数是 \(\binom n i\),而卷积的系数相比于 \(\text{OGF}\) 恰好也只多一个 \(\binom n i\),所以把 \(\text{OGF}\) 的证明拿过来就好了。

Example 22. 有 \(n\) 个球员,教练要分成一队和二队,随便分,一队的每个人有三种球衣可以选,二队的只有一种,然后每一队还得给每个人的球衣编号从 \(1\) 到 \(sz\),问方案数。

把两队的 \(\text{EGF}\) 分别求出来卷积即可,因为选 \(k\) 个人的方案数是组合数。

令 \(a,b\) 为两个队伍的方案数序列,那么 \(a_k=k!3^k,b_k=k!\)。

写成生成函数 \(A(x),B(x)\)

\[A(x)=\sum_{k\ge 0}k!3^k\frac{x^k}{k!}=\frac 1{1-3x}.\notag\\ B(x)=\sum_{k\ge 0}k!\frac{x^k}{k!}=\frac 1{1-x}. \]

卷积得到

\[C(x)=A(x)B(x)=\frac 1{1-3x}\cdot \frac 1{1-x}. \]

可以得到在 \(\frac{x^n}{n!}\) 前的系数 \(c_n=\frac{n!(3^{n+1}-1)}2\)。

\(\text{EGF}\) 还有一个好处就是求导非常方便。

\[\bigg(\frac{x^{n+1}}{(n+1)!}\bigg)'=\frac{x^n}{n!},\notag\\ \bigg(\sum_{n\ge 0}a_n\frac{x^n}{n!}\bigg)'=\sum_{n\ge 0}a_{n+1}\frac {x^n}{n!}. \]

实际上是实现了一个系数的左移。

Example 23. 令 \(B(x)\) 为贝尔数 \(B_n\) 的指数生成函数,证明 \(B(x)=e^{e^x-1}\)。

贝尔数的转移式是 \(B_{n+1}=\sum_{i=0}^n \binom n iB_i,n\ge 0\),\(B_0=1\),等式两边乘上 \(\frac {x^n}{n!}\),并对 \(n\ge 0\) 求和

\[\sum_{n\ge 0}B_{n+1}\frac{x^n}{n!}=\sum_{n\ge 0}\sum_{i=0}^n \binom n i B_i\frac{x^n}{n!} \]

可以视作 \(B(x)\) 和 \(e^x\) 卷积得到了 \(B'(x)\)。

\[B'(x)=B(x)e^x,\notag\\ \frac{B'(x)}{B(x)}=e^x,\notag \]

两边取积分

\[\ln B(x)=e^x+c. \]

令 \(x=0\),所以必须选 \(c=-1\),因此 \(\ln B(x)=e^x-1,B(x)=e^{e^x-1}\)。

2.3.EGF的复合

\(\text{EGF}\) 的复合其实和 \(\text{OGF}\) 的复合几乎一样,只是从选线段变成了选集合,多了个组合数系数,推导过程也及其类似。

Theorem 24. 令 \(a_n\) 为在 \(n\) 元集合上构建一个结构的方案数,\(a_0=0\),\(h_n\) 表示把 \(1\) 到 \(n\) 的集合分成若干不相交的集合,每个建造一个 \(a\) 结构的方案,令 \(A(x)=\sum_{n\ge 0}a_nx^n,H(x)=\sum_{n\ge 0}h_nx^n\),有

\[H(x)=e^{A(x)}. \]

Proof. 枚举划分成 \(k\) 个集合,由于任何方案中,都能把选的集合任意交换,会重复 \(k!\) 次,所以

\[H(x)=1+\sum_{k\ge 1}\frac{A(x)^k}{k!}=\sum_{k\ge 0}\frac {A(x)^k}{k!}=e^{A(x)}. \]

Example 25. 有多少种不同的方案能把 \(n\) 个人划分成若干组,每个组随便排顺序坐在一个圆桌上。

\(k\) 个人排顺序的方案数是 \((k-1)!\),所以 \(a_k=(k-1)!\),求 \(A(x)\) 就是

\[A(x)=\sum_{k\ge 1}(k-1)!\cdot\frac{x^k}{k!}=\sum_{k\ge 1}\frac{x^k}{k}=\ln\bigg(\frac 1{1-x}\bigg). \]

后面那个等式是泰勒展开得到的。

代入上面的定理就是

\[H(x)=e^{\big(\ln\frac {1}{1-x}\big)}=\frac 1 {1-x}=\sum_{n\ge 0}x^n=\sum_{n\ge 0}n!\cdot \frac{x^n}{n!}. \]

也就是 \(h_n=n!\),这个式子归纳验证显然是对的。

Example 26. \(f_n\) 表示把 \(1\) 到 \(n\) 的集合分成若干大小为 \(3,4,9\) 的不相交子集的方案数,求 \(f\) 的 \(\text{EGF }F(x)\)。

令 \(a_n,b_n,c_n\) 分别表示只用 \(3,4,9\) 划分 \(1\) 到 \(n\) 的集合的方案数,\(A(x),B(x),C(x)\) 为对应的指数生成函数。

那么显然最后的 \(F(x)=A(x)B(x)C(x)\)。

\(A(x),B(x),C(x)\) 的计算方法是一样的,这里只算 \(A(x)\)。

直接代入 Theorem 24,令 \(T(x)\) 表示一个集合形成一个大小为 \(3\) 的集合的方案数的指数生成函数。

那么有 \(T(x)=\frac {x^3}{3!}\),因为只有 \(n=3\) 的时候方案数为 \(1\),其他都是 \(0\)。

\[A(x)=e^{T(x)}=e^{\frac {x^3} {3!}}. \]

另外两个也类似,最后

\[F(x)=A(x)B(x)C(x)=e^{\frac{x^3}{3!}+\frac{x^4}{4!}+\frac{x^9}{9!}} \]

Theorem 27. 令 \(a_n\) 为在 \(n\) 元集合上构建一个结构的方案数,\(a_0=0\),\(b_n\) 为在 \(n\) 元集合上构建第二种结构的方案数,\(b_0=1\),\(g_n\) 表示把 \(1\) 到 \(n\) 的集合分成若干不相交的子集,每个建造一个 \(a\) 结构,然后再在所有线段上构造一个 \(b\) 结构的方案,\(g_0=1\),令 \(A(x),B(x),G(x)\) 分别为 \(a,b,g\) 的指数生成函数,那么

\[G(x)=B(A(x)). \]

Proof. 和上一个版本的区别只在于要乘上一个 \(b_k\) 的系数,所以式子是

\[G(x)=1+\sum_{k\ge 1}b_k\frac {A(x)^k}{k!}=B(A(x)). \]

Example 28. 有 \(n\) 张不同的卡片,分成若干个非空集合使得每个集合大小都是偶数,先给每个集合内部定一个顺序,再给这些集合定一个顺序。

\(a_n\) 表示把 \(n\) 个数作为一个大小为偶数的集合的方案数,那么 \(n\) 为偶数时 \(a_n=n!\),否则 \(a_n=0\)。

\(b_n\) 表示给 \(n\) 个集合定顺序的方案数,显然 \(b_n=n!\) 在任何 \(n\) 上成立。

令 \(A(x),B(x)\) 分别为它们的指数生成函数,就有

\[A(x)=\sum_{n\ge 0}a_n\frac{x^n}{n!}=\sum_{n\ge 2,n \ even}n!\frac{x^n}{n!}=\frac{x^2}{1-x^2},\notag\\ B(x)=\sum_{n\ge 0}b_n\frac{x^n}{n!}=\sum_{n\ge 0}x^n=\frac 1 {1-x}.\notag \]

令方案数为 \(g_n\),对应的指数生成函数为 \(G(x)\),代入定理就有

\[\begin{align} G(x)&=B(A(x))=\frac{1}{1-\frac{x^2}{1-x^2}}=\frac{1-x^2}{1-2x^2}\notag\\ &=1+\frac{x^2}{1-2x^2}+1+x^2\sum_{n\ge 0}(2x^2)^n=1+\sum_{n\ge 0}2^nx^{2n+2}.\notag \end{align} \]

所以当 \(n\) 为奇数的时候 \(g_n=0\),\(n\) 为偶数时令 \(n=2k\),\(g_n=2^{k-1}(2k)!\)。

因此对于偶数 \(n\),\(g_n=2^{\frac n 2}\cdot n!\)。

完结撒花!

标签:方案,frac,函数,sum,2x,生成,nx,ge
From: https://www.cnblogs.com/hellojim/p/17032554.html

相关文章

  • Python----函数进阶
    函数的返回值作为参数传递给其他函数deffunc():return50deffunc1(num):print(num+100)func1(func())函数返回多个值deffunc():#返回值可以是......
  • Vue项目中怎样把参数(对象)转成formdata传给后端? 封装函数 亲测有效
    普通传参格式如下:  想要的formData参数格式如下:  首先封装参数(对象)转换为formData格式getFormData(object){constformData=newFormData()......
  • 生成 有向无环图
    importjava.util.ArrayList;importjava.util.List;/***@authorCC11001100*/publicclassVector<T>{privateTname;privateList<Vector<T>>fro......
  • __builtin_函数的使用
    typedefunsignedintui1.intffs(uix){//该函数判断n的二进制末尾最后一个1的位置,从一开始return__builtin_ffs(x);}2.intpopcount(uix){//该函数时判断n......
  • Allure05-生成独立的allure测试报告
    生成独立的allure测试报告pycharm生成的测试报告无法直接打开pycharm自带容器(内置页面服务器),可以直接打开但allurereport下index.html文件是不能直接打开的,出现页面都是......
  • 积性函数
    唯一分解定理\(n=\prod\limits_{i=1}^mp_i^{k_i}\),此质因数分解式唯一。通常我们令\(p\)单调递增,称\(p\)的次数构成了的向量为质数-指数向量,即数字的另一种表示形......
  • Docker通过容器生成镜像
    参考地址:https://blog.csdn.net/JineD/article/details/106343404根据镜像启动容器:dockerrun  根据启动容器创建新镜像:dockercommit  将由容器生成的镜像push......
  • LLVM IR与C++ MUL函数代码
    LLVMIR与C++MUL函数代码使用LLVMIR写程序熟悉LLVMIR最好的办法就是使用IR写几个程序。在开始写之前,建议先花30分钟-1个小时再粗略阅读下官方手册(https://llvm.org/do......
  • PostGIS之几何创建函数
    1.概述PostGIS是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在SQL中运行空间查询PostGIS官网:AboutPostGIS|PostGISPostGIS官方教程:PostGIS......
  • 005.Function函数式接口(Function函数式接口生成定长随机字符串 ,定长随机字符串生成策
    1.定长随机字符串生成策略packagecom.imooc.lambda;importjava.util.Random;importjava.util.function.Function;/***Function函数式接口生成定长随机字符串......