生成函数初学
生成函数初学
定义
生成函数:指无穷级数与函数的对应,其中无穷级数表示一个无限的数列的和。
我们定义一个生成函数 \(f(x)\) 是收敛的,当且仅当 \(f(x)\) 随着 \(x\) 的定向变化趋向于一个确定的极限值。如令 \(f(x)=\dfrac{1}{x}\),当 \(x\rightarrow \infty\) 时,\(f(x)=\dfrac{1}{x}\rightarrow 0\),为定值。
同理,与其相反地,我们定义一个生成函数 \(g(x)\) 是发散的,当且仅当 \(g(x)\) 随着 \(x\) 的定向变化趋向于无穷,即 \(g(x)\) 的值没有极限。如 \(g(x)=2x\),\(x\rightarrow \infty\) 时,\(g(x)=2x\rightarrow \infty\)。
生成函数的主要应用是求排列组合。
下面以一道例题引入。
有 \(n\) 种物品可供选择,其中第 \(i\) 种物品有 \(c_i\) 个,现在要从中选取 \(k\) 个物品,求方案数。
我们用 \(x_i\) 表示第 \(i\) 个物品。对于第 \(i\) 种物品构造一个式子,形如:
也即:
第 \(i\) 个式子有 \(c_i+1\) 项,其中式子的第 \(j\) 项表示第 \(i\) 种物品 \(x_i\) 取了 \(j-1\) 个。
我们将取物品的过程看作对每一种物品分开考虑选取再合起来,那么可以将由上述方式得到的 \(n\) 个式子相乘,得到
因为只考虑选取物品的个数,不考虑选取的物品具体是哪一种,所以所有的角标可以去除,即
将表达式展开,不难得出 \(x^k\) 项前的系数即为答案。
普通型生成函数
普通型生成函数的一般形式:
令 \(a_i=1\),就得到了最常见的普通型生成函数:
令 \(S=f(x)\),则 \(xS=x+x^2+x^3+x^4\cdots\)
两式相减,得到 \((x-1)S=-1\),故 \(f(x)=S=-\dfrac{1}{x-1}=\dfrac{1}{1-x}\)。
考虑在最常见的普通型生成函数做一些变形。
- \(x\rightarrow -x\),\(f(x)=\sum\limits_{i=0}^\infty {(-1)^ix^i}=\dfrac{1}{1+x}\);
- \(x\rightarrow 2x\),\(f(x)=\sum\limits_{i=0}^\infty {2^ix^i}=\dfrac{1}{1-2x}\);
插入:牛顿二项式定理
对任意实数 \(a,b,n\),有
一般来说,使用时通常有 \(b=1\),那么有
拓展一下,可以得出
P2000 拯救世界
将题意中的十条限制用式子表示出来,即
这十个式子都可以用等比数列转化形式,相乘可得
分子部分每一个式子在分母部分都有相同的式子,可以直接约去,最后分母还剩下 \((1-x)^5\)。
所以相当于我们要求 \(\dfrac{1}{(1-x)^5}\) 展开后第 \(n\) 项的系数,即 \(ans=\dbinom{5-1}{n+5-1}=\dbinom{4}{n+4}\)。
指数型生成函数(泰勒级数)
指数型生成函数的一般形式:
同样令 \(a_i=1\),可以得到最简单的指数型生成函数,记为 \(e^x\)。
拓展一下,不难得出
- \(e^{-x}=1-x+\tfrac{x^2}{2!}-\tfrac{x^3}{3!}+\tfrac{x^4}{4!}\cdots\)
- \(\dfrac{e^x+e^{-x}}{2}=1+\tfrac{x^2}{2!}+\tfrac{x^4}{4!}+\tfrac{x^6}{6!}+\cdots\)
- \(\dfrac{e^x-e^{-x}}{2}=x+\tfrac{x^3}{3!}+\tfrac{x^5}{5!}+\cdots\)
考虑这样一个问题。
给定 \(n\) 个集合,现在要分别从集合 \(1,2,\cdots n\) 中分别取出 \(k_i\) 个数。记 \(K=\sum k_i\),将选出的 \(K\) 个数构成排列,求方案数。
同样对每一个集合用一个式子表示,但每一个集合中选取的数要求无序。故对于第 \(i\) 个集合,用以下式子表示:
也即
同样做乘法,取第 \(K\) 项的系数,但这只是选数的方案数,还需乘上 \(K!\) 得到排列数。
hdu - 2065
A,C 两个字符只能出现偶数次,生成函数为 \(\dfrac{e^x+e^{-x}}{2}\)。
B,D 两个字符可以出现任意数次,生成函数为 \(e^x\)。
乘起来就是
然后计算第 \(n\) 项的系数,为 \(\dfrac{4^n+2\times 2^n}{4}=4^{n-1}+2^{n-1}\)

浙公网安备 33010602011771号