生成函数入门

普通生成函数

对于一个序列 \(a\) ,其生成函数形如(本质上是个多项式):

\[F(x)=\sum_{n}a_nx^n \]

用通俗一点的话来解释生成函数这个概念,其实就是把序列按照编号从小到大的顺序放到多项式次数从低到高的系数里。所以说,如果该序列有通项公式,那么其生成函数的系数就是通项公式。

又由于生成函数的本质是多项式,所以其加法和乘法等运算皆与多项式相同。

生成函数的封闭形式

我们发现对于 \(<1,1,1,1,...>\) 的生成函数

\(F(x)=1+x+x^2+...\)

\(xF(x)=x+x^2+x^3+...\)

那么不难发现,因为序列无穷长,其满足 \(xF(x)+1=F(x)\) ,可解得 \(F(x)=\frac{1}{1-x}\) ,这个解出来的东西一般称为一个生成函数的封闭形式。

再来看一个 \(<1,a,a^2,a^3,...>\) 的生成函数

\(F(x)=1+ax+a^2x^2...\)

\(axF(x)=ax+a^2x^2+a^3x^3+...\)

然后就有 \(axF(x)+1=F(x)\) ,又可解得 \(F(x)=\frac{1}{1-ax}\)

然后我们来做一下 OI wiki 上的例题:

求出下面数列的普通生成函数(两种形式表示)

\(1.a=<0,1,1,1,1,...>\)

\(2.a=<1,0,1,0,1,...>\)

\(3.a=<1,2,3,4,5,...>\)

\(4.a_n=\big(^m_n\big)\) (\(m\) 为常数,\(n\ge 0\))

\(5.a_n=\big(^{n+m}_{n}\big)\) (\(m\) 为常数,\(n\ge 0\))

一个一个来
\((1)\)

\(F(x)=x+x^2+x^3...\)

\(xF(x)=x^2+x^3+x^4+...\)

所以得到 \(xF(x)+x=F(x)\) ,得:

\[F(x)=\sum_{n\ge1}x^n=\frac{x}{1-x} \]

\((2)\)

\(F(x)=x^0+x^2+x^4+...\)

\(xF(x)=x^1+x^3+x^5+...\)

可以看出 \(F(x)+xF(x)=\sum_{n\ge 0}x^n=\frac{1}{1-x}\)

所以得到:

\[F(x)=\sum_{n\ge 0}x^2n=\frac{1}{(1-x)(1+x)}=\frac{1}{1-x^2} \]

\((3)\)

\(F(x)=1+2x+3x^2+...\)

\(xF(x)=x+2x^2+3x^3+...\)

可以发现 \(F(x)=xF(x)+\sum_{n\ge 0}x^n=xF(x)+\frac{1}{1-x}\)

解得:

\[F(x)=\sum_{n\ge 0}(n+1)x^n=\frac{1}{(1-x)^2} \]

\((4)\)

直接用二项式定理:\((a+b)^n=\sum^n_{i=0}\big(^n_i\big)a^{n-i}b^i\)

\(F(x)=\sum_{n\ge 0} \big(^m_n\big)x^n=(1+x)^m\)

\((5)\)

归纳证明:

假设:

\[F(x)=\sum_{n\ge 0}\big(^{n+m}_{n}\big)x^n=\frac{1}{(1-x)^{m+1} } \]

对于 \(m=0\), \(F(x)=\frac{1}{1-x}\) 命题成立。

对于 \(m>0\),

\[\frac{1}{(1-x)^{m+1} }=\frac{1}{(1-x)^m}\frac{1}{1-x} \]

\[=(\sum_{n\ge 0}\big(^{m+n-1}_n\big)x^n)(\sum_{n\ge 0}x^n) \]

\[=\sum_{n\ge 0}x^n\sum_{i=0}^{n}\big(^{m+i-1}_i\big) \]

\[=\sum_{n\ge 0}\big(^{m+n}_n\big)x^n \]

那就差不多啦。

指数级生成函数

对于序列 \(a\) 有指数级生成函数形如:

\[F(x)=\sum_n a_n\frac{x^n}{n!} \]

封闭形式

对于 \(<1,1,1,...>\) 的指数级生成函数: \(F(x)=\sum_{n\ge 0} a_n\frac{x^n}{n!}=e^x\)

具体来说,对 \(e^x\) 泰勒展开得到的就是这个指数级生成函数。暂且当做结论记住就好。

上一篇:YbtOJ-序列计数【组合数学,莫队】


下一篇:题解 【P7567 「MCOI-05」魔仙】