生成函数
普通生成函数
首先对于普通生成函数,对于一个序列 \(a = [a_0, a_1, a_2, \cdots]\) ,其生成函数为 \(f(x) = \sum_{n=0}^{\infty} a_n x^n\) 。当然对于这个无穷级数,其实只有在 \(0 < x < 1\) 时有效,但是实际上这里的 \(x\) 只是一个占位符。
然后对于普通生成函数其加乘都和多项式相同。我们直接上例题:
首先我们令生成函数的序列的下标为选择多少个,然后 \(a_i\) 为选择 \(i\) 个时的方案数。
那么单考虑每一个水果,每一个生成函数的序列就是只有在 \([a, b]\) 为 \(1\) 。
然后直接把每一个序列乘在一起,得到的最终序列的第 \(m\) 位就是答案。
实际上就是因为如果乘法计算的是 \(i+j=k\) ,那么相当于就是 \(i,j\) 个水果的方案合并在一起。
当然上面的例子是手动模拟, 也可以采用继续推式子。比如下面这道题:
此时我们把每一部分的生成函数乘在一起,那么相当于生成函数为:
我们先想办法构造出 \(\frac{1}{(1-x)^4}\) 。
因为 \(\frac{1}{1-x} = \sum_{n=0}^{\infty} x^n\), 那么我们同时对两边求导:
然后经过简单的变化:
然后答案就是 \(\binom{m+2}{3}\) 了。
指数型生成函数
其形式为:
其余加法乘法照常。
其相对而言的实际意义就相比原来的组合问题,增加了不同排列的贡献。这是因为对于多次乘法:
其中 \(\frac{(i+j\cdots k)!}{i!j!\cdots k!}\) 就是多出来的排列的数量。
化简技巧
有的是否我们需要把 "无穷级数" 和其 "封闭性质" 相互转化 这里提供一些展开公式(泰勒展开):
| 无穷级数 | 封闭性质 | 推导 |
|---|---|---|
| \(1+x+x^2+x^3\cdots\) | \(\frac{1}{1-x}\) | 极限基本知识 |
| \(1+x^2+x^4+x^6\cdots\) | \(\frac{1}{1-x^2}\) | 把 \(x\) 替换为 \(x^2\) |
| \(1+x^3+x^6+x^9\cdots\) | \(\frac{1}{1-x^3}\) | 把 \(x\) 替换为 \(x^3\) |
| \(1+2x+3x^2+4x^3\cdots\) | \(\frac{1}{(1-x)^2}\) | 扩展二项式定理 |
| \(1+\frac{x}{1!}+\frac{x^2}{2!}+\frac{x^3}{3!}\cdots\) | \(e^x\) | 不会 |
| \(1-\frac{x}{1!}+\frac{x^2}{2!}-\frac{x^3}{3!}\cdots\) | \(e^{-x}\) | 把 \(x\) 替换为 \(-x\) |
| \(1+\frac{x^2}{2!}+\frac{x^4}{4!}+\frac{x^6}{6!}\cdots\) | \(\frac{e^x + e^{-x}}{2}\) | 上面两式相加 |
| \(x+\frac{x^3}{3!}+\frac{x^5}{5!}+\frac{x^7}{7!}\cdots\) | \(\frac{e^x - e^{-x}}{2}\) | 上面两式相减 |
关于扩展二项式定理,其实就是第 \(4\) 个式子的推广: