生成函数1(基础理论)

· · 个人记录

前言:这篇博客只是简单地介绍一下生成函数的基本知识

前置芝士:《组合数学》第二、五章 \quad微积分基础

注意:生成函数都是在一个形式幂级数上操纵的,所以可以不用考虑收敛的问题

牛顿二项式定理 证明

牛顿二项式定理:\displaystyle (x+y)^a=\sum_{k=0}^{\infty}\binom{a}{k}x^ay^{a-k}\quad\quad 其中 x,y,a\in \mathbb{R},|\dfrac{x}{y}|<1

一些简单的变形:\displaystyle (1+z)^a=\sum_{k=0}^{\infty}\binom{a}{k}z^k

a=-n,那么有:\displaystyle \binom{a}{k}=\binom{-n}{k}=\frac{-n(-n-1)...(-n-k+1)}{k!}=(-1)^k\frac{n(n+1)...(n+k-1)}{k!}=(-1)^k\binom{n+k-1}{k}

又因为:\displaystyle (1+z)^{-n}=\frac{1}{(1+z)^n}

\displaystyle \frac{1}{(1+z)^n}=\sum_{k=0}^{\infty}(-1)^k\binom{n+k-1}{k}z^k \frac{1}{1+z}=\sum_{k=0}^{\infty}(-1)^kz^k

-z替换z得到:

\displaystyle \frac{1}{(1-z)^n}=\sum_{k=0}^{\infty}\binom{n+k-1}{k}z^k \frac{1}{1-z}=\sum_{k=0}^{\infty}z^k

普通生成函数(OGF)

h_0,h_1,h_2,...,h_n为无穷数列,它的普通生成函数为无穷级数:

g(x)=h_0+h_1x+h_2x^2+...+h_nx^n+...

一些例子:

1,1,1,...$的OGF:$\displaystyle g(x)=1+x+x^2+...+x^n+...=\frac{1}{1-x} \displaystyle \binom{m}{0},\binom{m}{1},...,\binom{m}{m}$的OGF:$\displaystyle g(x)=\sum_{i=0}^{m}\binom{m}{i}x^i=(1+x)^m

OGF的运算:

\displaystyle (\sum_{n=0}^{\infty}a_nx^n)\pm(\sum_{n=0}^{\infty}b_nx^n)=\sum_{n=0}^{\infty}(a_n\pm b_n)x^n \displaystyle (\sum_{n=0}^{\infty}a_nx^n)(\sum_{n=0}^{\infty}b_nx^n)=\sum_{n=0}^{\infty}(\sum_{i=0}^{n}a_ib_{n-i})x^n \displaystyle \frac{d}{dx}(\sum_{n=0}^{\infty}a_nx^n)=\sum_{n=0}^{\infty}(n+1)a_{n+1}x^n
\displaystyle \frac{d}{dx}(a_nx^n)=a_nnx^{n-1}
\displaystyle \int (\sum_{n=0}^{\infty}a_nx^n)dx=\sum_{n=1}^{\infty}a_{n-1}\frac{x_n}{n}+C

注意这里求的是不定积分,还有一个常数项的问题

\displaystyle \int (a_nx^n)dx=a_n\frac{x_{n+1}}{n}

积分和求导通常是用来偏移项的

一个具体的例子:通过OGF解决计数问题

确定苹果、香蕉、橘子和梨的n组合的个数,其中:苹果数是偶数,香蕉数是5的倍数,橘子数最多是4个,梨的个数是0/1

h_n表示n组合数的方案,令数列h的OGF为g(x),考虑为每一种水果引入一个因子

\displaystyle g(x)=(1+x^2+x^4+...)(1+x^5+x^{10}+...)(1+x+x^2+x^3+x^4)(1+x) \displaystyle =\frac{1}{1-x^2}\frac{1}{1-x^5}\frac{1-x^5}{1-x}(1+x)=\frac{1}{(1-x)^2}=\sum_{n=0}^{\infty}\binom{n+1}{n}x^n=\sum_{n=0}^{\infty}(n+1)x^n

所以h_n=n+1,这样就通过纯代数的方法解决了一个组合问题

指数生成函数(EGF)

定义无穷数列h_0,h_1,...,h_n的指数生成函数为:

\displaystyle g(x)=h_0+h_1x+h_2\frac{x^2}{2!}+...h_n\frac{x^n}{n!}+...

注意这些单项式出现在泰勒级数中:

\displaystyle e^x=\sum_{n=0}^{\infty}\frac{x^n}{n!}=1+x+\frac{x^2}{2!}+...+\frac{x^n}{n!}+...

这也是指数生成函数被称为EGF的原因,这个式子也非常重要

另一个很有启发性的定义:

考虑这样一个奇怪的卷积\displaystyle h_n=\sum_{i=0}^{n}\binom{n}{i}f_ig_{n-i}

直接把\binom{n}{i}展开,并且把n!移到左边,得到:

\displaystyle \frac{h_n}{n!}=\sum_{i=0}^{n}\frac{f_i}{i!}\times \frac{g_{n-i}}{(n-i)!}

那么就能够发现h的EGF正是f的EGF与g的EGF的卷积

EGF的运算:

\displaystyle (\sum_{n=0}^{\infty}a_n\frac{x^n}{n!})(\sum_{n=0}^{\infty}b_n\frac{x^n}{n!})=\sum_{n=0}^{\infty}(\sum_{i=0}^{n}\binom{n}{i}a_ib_{n-i})x^n \displaystyle \frac{x}{dx}(\sum_{n=0}^{\infty}a_n\frac{x^n}{n!})=\sum_{n=0}^{\infty}a_{n+1}\frac{x^{n}}{n!}
\displaystyle \frac{x}{dx}(a_n\frac{x^n}{n!})=a_n\frac{x_{n-1}}{(n-1)!}
\displaystyle \int (\sum_{n=0}^{\infty}a_n\frac{x^n}{n!})dx=\sum_{n=1}^{\infty}a_{n-1}\frac{x^n}{n!}+C

一些例子:

1,a^2,a^3,...,a^n...$的指数生成函数为:$\displaystyle \sum_{i=0}^{\infty}a^n\frac{x^n}{n!}=\sum_{i=0}^{n}\frac{(ax)^n}{n!}=e^{ax}
  • k^n$表示有$k$种不同类型的对象且每一种对象都有无穷重数的多重集合的$n$排列数,因此这个计数数列的指数生成函数就是$e^{kx}
P(n,0),P(n,1),P(n,2),...,P(n,n)$的指数生成函数为:$\displaystyle \sum_{i=0}^{n}P(n,i)\frac{x^i}{i!}=\sum_{i=0}^{n}\frac{n!}{(n-i)!i!}x^i=(1+x)^n
  • 注意到这和\displaystyle \binom{n}{0},\binom{n}{1},...,\binom{n}{n}的普通生成函数一样

定理:设S是多重集合\{n_1\times a_1,n_2\times a_2,...,n_k\times a_k\},设h_nSn排列数,那么h的指数生成函数为:

g(x)=f_{n_1}(x)f_{n_2}(x)...f_{n_k}(x) f_{n_i}(x)=1+x+\frac{x^2}{2!}+...+\frac{x^n}{n_i!}

证明:

把所有的f_{n_i}展开,得到g(x)每一项的形式:\displaystyle \frac{x^{m_1}}{m_1!}\frac{x^{m_2}}{m_2!}...\frac{x^{m_k}}{m_k!}=\frac{x^{m_1+m_2+...+m_k}}{m_1!m_2!...m_k!}

其中0\leq m_i\leq n_i\quad n=m_1+m_2+...+m_k

那么\displaystyle=\frac{x^n}{m_1!m_2!...m_k!}=\frac{n!}{m_1!m_2!...m_k!}\frac{x^n}{n!}

也就是\displaystyle h_n=\frac{n!}{m_1!m_2!...m_k!}

同时根据多重集合的排列公式可知:\displaystyle \frac{n!}{m_1!m_2!...m_k!}同时也是满足m_1+m_2+...+m_k的多重集合的n排列数。所以两者等价,定理得证

一个具体的例子:通过EGF解决计数问题

用红、白和蓝三种颜色给一个1\times n的棋盘染色,要求染成红色的方格数是偶数,确定给这个棋盘染色的方案数

h_n表示这样的着色数,则h_n等于有三种颜色的多重集合的排列数,每一种颜色的重数是无穷,且要求红色出现的次数是偶数。为每一种颜色构造一个因子

\displaystyle g(x)=(1+\frac{x^2}{2!}+\frac{x^4}{4!}+...)(1+\frac{x}{1!}+\frac{x^2}{2!}+...)^2=\frac{1}{2}(e^x+e^{-x})e^xe^x=\frac{1}{2}(e^{3x}+e^x) \displaystyle =\frac{1}{2}(\sum_{n=0}^{\infty}3^n\frac{x^n}{n!}+\sum_{n=0}^{\infty}\frac{x^n}{n!})=\sum_{n=0}^{\infty}\frac{3^n+1}{2}\frac{x^n}{n!}

所以就得到了:\displaystyle h_n=\frac{3^n+1}{2}

部分分式

这个知识本身和计数无关,但利用它能够把许多复杂的分数形式的函数,化简为一些较好求的函数之和

具体来说:把\dfrac{f(x)}{g(x)}化简为:\displaystyle \sum_{i}\frac{a_i}{h_i(x)}的形式

其中h_i(x)的次数要小于g(x),s,所以通常先将g(x)进行因式分解

举个例子:

利用部分分式分解式子:\dfrac{1}{x^2+2x-3}

将分母分解因式得到:(x+3)(x-1)

\dfrac{1}{x^2+2x-3}=\dfrac{A}{x+3}+\dfrac{B}{x-1}

那么有A(x-1)+B(x+3)=1

x=-3得到:\displaystyle A=-\frac{1}{4};令x=1得到:\displaystyle B=\frac{1}{4}

所以\displaystyle \frac{1}{x^2+2x-3}=\frac{1}{4}(\frac{1}{x-1}-\frac{1}{x+3})

生成函数和数列

只介绍较为基础的(主要是我菜)用生成函数求解数列通项公式

关于特征根、特征多项式、求解一般的齐次/非齐次递推关系,等我回了再来更吧(咕咕咕)

非常常见的例子:f_0=0,f_1=1,f_n=f_{n-1}+f_{n-2}(n>1),求其通项公式

为数列f(即斐波那契数列)构造普通型生成函数F

\displaystyle F(x)=f_0x^0+f_1x^1+f_2x^2+f_3x^3+... \displaystyle xF(x)=\quad \quad \,\,\,f_0x^1+f_1x^2+f_2x^3+... \displaystyle x^2F(x)=\quad \quad \quad \quad \quad \,f_0x^2+f_1x^3+...

根据f_n=f_{n-1}+f_{n-2},可以发现第一行就等于后两行之和,再加上一个x

F(x)=xF(x)+x^2F(x)+x,然后呢?直接解出这个方程

\displaystyle F(x)=\frac{x}{1-x-x^2}

考虑利用部分分式将F(x)化简,设1-x-x^2=(x-a)(x-b)

a,b$就是方程$1-x-x^2=0$的两个根,所以$a=\dfrac{-1+\sqrt{5}}{2},b=\dfrac{-1-\sqrt{5}}{2}

所以1-x-x^2=(x-\dfrac{-1+\sqrt{5}}{2})(x-\dfrac{-1-\sqrt{5}}{2})

然后呢?想想我们要干什么?要通过生成函数去表示出f的第n项,也就是要带有x^n,但F(x)最高不就只有2次项吗,怎么凭空变出来这些项呢?

注意F是我们构造出来的生成函数,根据\displaystyle \dfrac{1}{1-ax}=\sum_{n=0}^{\infty}a^nx^n

所以要把分母化成(1-ax)(1-bx)这种形式,实际上就是上面解出来的数的倒数

所以1-x-x^2=(1-\dfrac{1+\sqrt{5}}{2}x)(1-\dfrac{1-\sqrt{5}}{2}x)

类似上面,通过特殊值法就能够解出A=\dfrac{1}{\sqrt{5}}B=-\dfrac{1}{\sqrt{5}}

这样就能得到\displaystyle f_n=\frac{1}{\sqrt{5}}((\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n)

求出\displaystyle s_n=\sum_{i=0}^{n}a_n

\{s_n\}的OGF为S\{a_n\}的OGF为F

\displaystyle S(x)=\sum_{n=0}^{\infty}s_nx^n=\sum_{n=0}^{\infty}(\sum_{i=0}^{n}a_i)x^n=\sum_{i=0}^{\infty}a_i\sum_{n=i}^{\infty}x^n=\sum_{i=0}^{\infty}a_i\frac{x^i}{1-x}=\frac{1}{1-x}F(x)

求出s_n=a_{n}-a_{n-1}

同样设OGF,那么有:

\displaystyle S(x)=\sum_{n=0}^{\infty}(a_n-a_{n-1})x^n=\sum_{n=0}^{\infty}a_nx^n-\sum_{n=1}^{\infty}a_{n-1}x^n=\sum_{n=0}^{\infty}a_nx^n-x\sum_{n=0}^{\infty}a_nx^n=F(x)(1-x)