生成函数学习笔记

前置芝士

广义二项式定理

广义二项式系数 \(\binom{\alpha}{k}=\frac{\alpha(\alpha-1)\dots(\alpha-k+1)}{k!},\alpha\in\mathbb{R},k\in\mathbb{N}\)
广义二项式定理 \((x+y)^{\alpha}=\sum\limits_{k=0}^{\infty}\binom{\alpha}{k}x^{\alpha-k}y^{k}\)

上指标翻转

\[\begin{aligned} & \binom{n}{m}=(-1)^{m}\binom{m-n-1}{m} \end{aligned} \]

泰勒展开

\[\begin{aligned} & \frac{1}{1-x}=\sum_{k=0}^{\infty}x^{k}\\ & e^{x}=\sum_{n=0}^{\infty}\frac{1}{n!}x^{n} \end{aligned} \]

下面的公式其实都可以用上面的公式推出来。

\[\begin{aligned} & \frac{1}{(1-x)^2}=\sum_{k=0}^{\infty}(k+1)x^{k}\\ & \frac{1}{(1-x)^{3}}=\sum_{k=0}^{\infty}\frac{(k+2)(k+1)}{2}x^{k}\\ & \frac{1}{1+x}=\sum_{k=0}^{\infty}(-1)^{k}x^{k}\\ & xe^{x}=\sum_{n=0}^{\infty}\frac{1}{(n-1)!}x^{n}=\sum_{n=0}^{\infty}\frac{n}{n!}x^{n}\\ & e^{Cx}=\sum_{n=0}^{\infty}\frac{1}{n!}(Cx)^{n}=\sum_{n=0}^{\infty}\frac{C^{n}}{n!}x^{n}\\ \end{aligned} \]

最后还有一个奇怪的式子。

\[\begin{aligned} & \ln(1-x)=-\sum_{n\ge 1}\frac{1}{n}x^{n} \end{aligned} \]

生成函数 GF

基本思想

生成函数用于解决计数问题。生成函数的思想是组合意义符号化,简单来说就是把一个决策换成一个多项式,用多项式的乘法来代替不同决策的组合,最后得到原题的通项公式。

普通型生成函数 OGF

普通生成函数形如 $$\sum_{i\ge 0}A_{i}x^{i}$$ 通常用于无标号计数。

例一

举个例子方便理解:现在 XZY 有一家奶茶店。由于快过年了,XZY 要赶快关门,此时 ben 来买奶茶。XZY 还有三种配料,分别有 \(3\) 份、\(2\) 份、\(3\) 份。ben 将会任意挑选 \(4\) 份配料,求有多少种不同的配料组合。
我们将选择配料的决策转化为多项式,那么三种配料的选择分别对应 \(1+x+x^{2}+x^{3},1+x+x^{2},1+x+x^{2}+x^{3}\)。其中每一项 \(x\) 的指数就表示这一种配料我选的个数,而多项式乘法就恰好枚举出了每一种选择方案,那么做完多项式乘法之后 \(x\) 指数是 \(4\) 的那一项的系数就是我们的答案,这不难理解。

\[\begin{aligned} & (1+x+x^{2}+x^{3})^{2}(1+x+x^{2})\\ & =1+3x+6x^{2}+9x^{3}+10x^{4}+9x^{5}+6x^{6}+3x^{7}+x^{8}\\ \end{aligned} \]

那么我们选 \(0\)\(8\) 份配料的答案就都得到了,分别是 \(1,3,6,9,10,9,6,3,1\)。本题的答案就是 \(10\)

例二

接下来我们拓展到更全面的问题:食物
我们考虑用生成函数表示出每一个物品然后乘起来,他们分别是

\[\begin{aligned} & \sum_{k=0}^{\infty}x^{2k}=\sum_{k=0}^{\infty}(x^{2})^{k}=\frac{1}{1-x^2}\\ & 1+x\\ & 1+x+x^{2}\\ & \sum_{k=0}^{\infty}x^{2k+1}=x\sum_{k=0}^{\infty}x^{2k}=\frac{x}{1-x^2}\\ & \sum_{k=0}^{\infty}x^{4k}=\frac{1}{1-x^4}\\ & 1+x+x^{2}+x^{3}\\ & 1+x\\ & \sum_{k=0}^{\infty}x^{3k}=\frac{1}{1-x^3}\\ \end{aligned} \]

乘起来得到

\[\begin{aligned} & \frac{1}{1-x^2}(1+x)(1+x+x^{2})\frac{x}{1-x^2}\frac{1}{1-x^4}(1+x+x^{2}+x^{3})(1+x)\frac{1}{1-x^3}\\ & =\frac{x}{(1-x)^4}\\ \end{aligned} \]

接下来把这个式子展开

\[\begin{aligned} & \frac{x}{(1-x)^4}\\ & =x(1-x)^{-4}\\ & =x\sum_{k=0}^{\infty}\binom{-4}{k}(-x)^{k}1^{-4-k}\\ & =x\sum_{k=0}^{\infty}(-1)^{k}\binom{k+3}{k}(-1)^{k}x^{k}\\ & =\sum_{k=0}^{\infty}\binom{k+2}{3}x^{k}\\ & =\sum_{k=0}^{\infty}\frac{k(k+1)(k+2)}{3!}x^{k}\\ \end{aligned} \]

故答案为 \(\frac{k(k+1)(k+2)}{6}\)

指数型生成函数 EGF

指数型生成函数形似 $$\sum_{i\ge 0}A_{i}\frac{x^{i}}{i!}$$ 通常用于有标号计数。
这么定义是为了方便运算,因为对于有标号计数若我们此时有两个对象 \(F,G\),合并则会有式子

\[\begin{aligned} \text{记}n=i+j\\ & H(n)=\binom{n}{i}F(i)\times G(j)\\ & \frac{H(n)}{(n)!}=\frac{F(i)}{i!}\times\frac{G(j)}{j!} \end{aligned} \]

如此定义后,我们就不需要考虑运算时系数的影响。
并且我们发现将 \(x_i\) 除以 \(i!\) 相当于从 \(x_i\) 中拿出一个 \(i!\) 然后乘给 \(A_i\),也就是算上了全排(有标号)的贡献。

例一

ben 正打算决定好选择的奶茶配料时,突然想起奶茶的配料加入的顺序不同,做出的奶茶也是不一样的。同上,现在分别有 \(3,2,3\) 份配料,取 \(4\) 份,求能配出多少种不同的奶茶。
我们同样写出其生成函数,把它们乘起来

\[\begin{aligned} & =(1+x+\frac{x^2}{2!}+\frac{x^3}{3!})^2(1+x+\frac{x^2}{2!})\\ & =1+3x+\frac{9x^{2}}{2!}+\frac{26x^{3}}{3!}+\frac{70x^4}{4!}+\frac{170x^5}{5!}+\frac{350x^6}{6!}+\frac{560x^7}{7!}+\frac{560x^8}{8!}\\ \end{aligned} \]

则答案为 \(70\)

例二

同样的,我们拓展到更加全面的问题:P2012 拯救世界2

\[\begin{aligned} & e^{4x}(\frac{e^{x}-e^{-x}}{2})^{4}(\frac{e^{x}+e^{-x}}{2})^{4}\\ & =(\frac{e^{2x}-1}{2})^{4}(\frac{e^{x}+e^{-x}}{2})^{4}\\ & =(\frac{e^{3x}-e^{-x}}{4})^{4}\\ & =\frac{e^{12x}-4e^{8x}+6e^{4x}-4+e^{-4x}}{256}\\ & =-\frac{1}{64}+\sum_{k=0}^{\infty}\frac{12^{k}-4\times 8^{k}+6\times 4^{k}+(-4)^{k}}{256}\frac{x^{k}}{k!} \end{aligned} \]

答案即为 \(\frac{12^{k}-4\times 8^{k}+6\times 4^{k}+(-4)^{k}}{256}\),但是本题 \(n\) 比较大,并且模数不是质数,我们需要用光速幂优化求值,将底数统一。

\[\begin{aligned} & \frac{12^{k}-4\times 8^{k}+6\times 4^{k}+(-4)^{k}}{256}\\ & =\frac{3^{k}\times 2^{2k}-2^{3k+2}+3\times 2^{2k+1}+(-1)^{k}2^{2k}}{2^{8}}\\ & =3^{k}\times 2^{2k-8}-2^{3k-6}+3\times 2^{2k-7}+(-1)^{k}2^{2k-8} \end{aligned} \]

posted @ 2024-02-03 15:56  JR_ytxy  阅读(54)  评论(0)    收藏  举报