生成函数
普通生成函数
将数列 \(\{a_i\}\) 写成一个函数 \(A(x)=\sum{a_ix^i}\) 的形式叫做普通生成函数。
对于生成函数来说,绝大数运算法则都是同平常所说的函数一样的。
例如 \(A(x)+B(x) = \sum\limits{(a_i+b_i)x^i}\) 和 \(A(x)B(x)=\sum\limits_i\sum\limits_j(a_ib_j)x^{i+j}\)。
一些常见的数列都可以写作生成函数的形式,而且往往都有较为简单的形式:
-
\(\{1,1,1,\cdots\}\rightarrow 1+x+x^2+x^3+\cdots=\frac{1}{1-x}\)
-
\(\{1,2,3,\cdots\}\rightarrow 1+2x+3x^2+4x^3+\cdots=(1+x+x^2+x^3+\cdots)^\prime=(\frac{1}{1-x})^\prime=\frac{1}{(1-x)^2}\)
-
\(\{\binom{0}{n},\binom{1}{n},\binom{2}{n},\cdots\}=\binom{0}{n}+\binom{1}{n}x+\binom{2}{n}x^2+\cdots=(1+x)^n\)
-
\(\{1,p,p^2\dots\}\rightarrow1+px+(px)^2+\dots=\frac1{1-px}\)
普通生成函数例题
- 求 \(a_n=f(n)\) 的生成函数的封闭形式,其中 \(f(x)=\sum\limits_{i=0}^{k-1}{f_ix^i}\)。
sol:
\(\begin{aligned} \sum_{i\geq0}{f(i)x^i}&=\sum_{i\geq0}x^i\sum_{j=0}^{k-1}{f_ji^j} \\ &=\sum_{i\ge0}{x^i\sum_{j=0}^{k-1}{f_j\sum_{t=0}^j}{{j\brace t}i^{\underline{t}}}} \\ &=\sum_{t=0}^{k-1}\sum_{j=t}^{k-1}f_j{j\brace t}\sum_{t=0}^j{j\brace t}\sum_{i\ge0}{x^ii^{\underline t}} \\ &=\sum_{t=0}^{k-1}\sum_{j=t}^{k-1}f_j{j\brace t}x^t(\frac1{1-x})^{(t)} \\ &=\sum_{t=0}^{k-1}\sum_{j=t}^{k-1}f_j{j\brace t}\frac{x^t(-1)^{\underline t}}{(1-x)^{t+1}} \\ &=\sum_{t=0}^{k-1}\frac{x^t(-1)^{\underline t}}{(1-x)^{t+1}}\sum_{j=t}^{k-1}f_j{j\brace t} \end{aligned}\)
化成这样就挺封闭了。
-
P10780食物
sol:
先计算出每一种食物的生成函数:
-
承德汉堡:能选的数列为 \(\{1,0,1,0,\cdots\}\),生成函数为 \(\sum\limits_{i=0}^{\infty}x^{2i}\),用等比数列求和公式计算,它等于 \(\frac{1}{1-x^2}\)。
-
可乐:能选的数列为 \(\{1,1,0,0,\cdots\}\),生成函数为 \(1+x\)。
-
鸡腿:能选的数列为 \(\{1,1,1,0,\cdots\}\),生成函数为 \(1+x+x^2\)。
-
蜜桃多:能选的数列为 \(\{0,1,0,1,\cdots\}\),生成函数为 \(\sum\limits_{i=0}^{\infty}x^{2i+1}=\frac{x}{1-x^2}\)。
-
鸡块:能选的数列为 \(\{1,0,0,0,1,\cdots\}\),生成函数为 \(\sum\limits_{i=0}^{\infty}x^{4i}=\frac{1}{1-x^4}\)。
-
包子:能选的数列为 \(\{1,1,1,1,0,\cdots\}\),生成函数为 \(1+x+x^2+x^3\)。
-
土豆片炒肉:能选的数列为 \(\{1,1,0,0,\cdots\}\),生成函数为 \(1+x\)。
-
面包:能选的数列为 \(\{1,0,0,1,\cdots\}\),生成函数为 \(\sum\limits_{i=0}^{\infty}x^{3i}=\frac{1}{1-x^3}\)。
两个生成函数的乘积的 \(n\) 次项系数即为对应的两种物品共取 \(n\) 个的方案数,所以可以直接把生成函数乘起来,化简得到:\(F(x)=\frac{x}{(x-1)^4}\)。
使用广义二项式定理化简得到:
\(\begin{aligned}\frac{x}{(x-1)^4}&=x(x-1)^{-4}\\&=x\sum\limits_{i=0}^{\infty}\binom{-4}{i}x^i(-1)^{-4-i}\\&=x\sum\limits_{i=0}^{\infty}\binom{i+3}{i}(-1)^{i}x^i(-1)^{-4-i}\\&=\sum\limits_{i=0}^{\infty}\binom{i+3}{i}x^{i+1} \end{aligned}\)
题目要求第 \(n\) 项的系数,所以把 \(i+1\) 换成 \(n\),原式变为 \(\sum\limits_{n=1}^{\infty}\binom{n+2}{n-1}x^n\)。
显然,第 \(n\) 项的系数为 \(\binom{n+2}{n-1}=\binom{n+2}{3}=\frac{1}{6}n(n+1)(n+2)\),这就是答案。

浙公网安备 33010602011771号