非专业生成函数学习小记
下文中的序列从 \(0\) 开始标号。
普通生成函数 / OGF
定义序列 \(A\) 的普通生成函数为:
我们考虑普通生成函数的作用。
首先,这里的 \(x\) 只是一个记号,起到将同类项合并起来的作用。
也就是说:
普通生成函数具有一些常见的封闭形式,比如对于序列 \([1,1,1,\dots]\),其普通生成函数:
对于序列 \([1,p,p^2,\dots]\),其普通生成函数:
例题
首先,我们需要求出斐波那契数列的生成函数。
根据题目中的定义,斐波那契数列 \(F=[0,1,1,2,3,5,8,\dots]\),故其普通生成函数:
根据定义,我们可以得知:
以及:
此时我们发现,\(f(x) + f(x) \times x + 1= \dfrac{f(x)}{x}\)。
两边同乘 \(x\),\(f(x) \times x + f(x) \times x^2 + x = f(x)\)。
也就是说,\(f(x) \times (x^2 + x - 1) + x = 0\)。
最后得到 \(f(x) = \dfrac{x}{1 - x - x^2}\)。
我们希望求出:
注意这里我们可能会带上 \(F_0\),但 \(F_0 = 0\) 对答案不会有影响。
这和我们推出普通生成函数乘积的性质几乎一样,也就是说,答案为:
注意,虽然这里将 \(f(x)^0\) 带上没有区别,但题目中要求了 \(a\) 的长度 \(\geq 1\)。
写成封闭形式:
最后带入,可得:
接下来我们需要从封闭形式变回原先的形式。
先考虑对分母 \(1-2x-x^2\) 求出两个根:\(x_1 = -1-\sqrt{2}\) 和 \(x_2 = -1+\sqrt{2}\)。
也就是说,\(\dfrac{x}{1-2x-x^2}=-\dfrac{x}{(x-x_1)(x-x_2)}\)
裂项,得 \(-\dfrac{x}{(x-x_1)(x-x_2)}=\dfrac{x}{x_2 - x_1} \times \dfrac{(x-x_2)-(x-x_1)}{(x-x_1)(x-x_2)}\)。
化简一下,就是 \(\dfrac{x}{x_2 - x_1} \times (\dfrac{1}{x-x_1} - \dfrac{1}{x-x_2})\)。
我们发现 \(\dfrac{1}{1-px}\) 具有良好的性质,考虑变形:
也就是:
化一下:
由于题目中的 \(n \geq 1\),所以答案为 \(\dfrac{1}{x_2-x_1} \times(\dfrac{1}{x_2^n} - \dfrac{1}{x_1^n})\)。
也就是,\(\dfrac{\sqrt{2}}{4} \times ((\dfrac{1}{-1+\sqrt{2}})^n - (\dfrac{1}{-1-\sqrt{2}})^n)\)。
即 \(\dfrac{\sqrt{2}}{4} \times ((1+\sqrt{2})^n - (1-\sqrt{2})^n)\)。
但是还没有结束,因为我们需要找到 \(\sqrt{2}\) 的实际值。
我们发现 \(\sqrt{2}\) 在模 \(10^9+7\) 意义下可以取 \(59713600\) 或 \(940286407\)。
事实上,我们会安排其中一个作为 \(\sqrt{2}\),另一个为 \(-\sqrt{2}\)。
所以 \(ans \equiv 14928400 \times (59713601^n - 940286408^n) \pmod {10^9+7}\)。
指数生成函数 / EGF
定义序列 \(A\) 的指数生成函数为:
我们考虑指数生成函数的作用。
首先,这里的 \(x\) 只是一个记号,起到将同类项合并起来的作用。
也就是说:
指数生成函数具有一些常见的封闭形式,比如对于序列 \([1,1,1,\dots]\),其指数生成函数:
对于序列 \([1,p,p^2,\dots]\),其指数生成函数:
例题
首先考虑指数生成函数乘积的作用,发现其可以回答排列两种元素的方案数。
显然固定个数的一种基因内部只有一种排列方法,故写出三种生成函数。
任意次数 \([1,1,1,1,\dots]\):\(\sum\limits_{i=0}^{+ \infty} \dfrac{x^i}{i!} = e^x\)。
奇数次 \([0,1,0,1,\dots]\):\(\sum\limits_{i=0}^{+ \infty} \dfrac{x^{2i+1}}{(2i+1)!} = \dfrac{\sum\limits_{i=0}^{+ \infty} \frac{x^i}{i!} - \sum\limits_{i=0}^{+ \infty} \frac{(-x)^i}{i!}}{2} = \dfrac{e^x-e^{-x}}{2}\)。
偶数次 \([1,0,1,0,\dots]\):\(\sum\limits_{i=0}^{+ \infty} \dfrac{x^{2i}}{(2i)!} = \dfrac{\sum\limits_{i=0}^{+ \infty} \frac{x^i}{i!} + \sum\limits_{i=0}^{+ \infty} \frac{(-x)^i}{i!}}{2} = \dfrac{e^x+e^{-x}}{2}\)。
也就是说,答案的生成函数应该为 \(\dfrac{(e^x(e^x - e^{-x})(e^x + e^{-x}))^4}{256}\)。
化简一下,应该是 \(\dfrac{(e^{3x} - e^{-x})^4}{256}\),即:
也就是说,答案为:
或者为了更清楚一点,答案为:
然而 \(n \geq 1\),所以答案为:
但是模数是 \(10^9\),我们无法找到逆元,于是需要进行分类讨论。
\(n \leq 3\) 时,直接暴力计算即可。但是根据这题的实际意义,此时答案都是 \(0\)。
\(n \geq 4\) 时,答案可以表示成:

浙公网安备 33010602011771号