生成函数

普通生成函数

将数列 \(\{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}\)

普通生成函数例题

  1. \(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}\)

化成这样就挺封闭了。

  1. 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)\),这就是答案。

posted @ 2025-01-31 15:59  O_v_O  阅读(19)  评论(0)    收藏  举报