生成函数理论初步
定义
定义一个数列 \(\{a_n\}^\infty_{n=0}\) 的
普通生成函数(OGF)为:
指数生成函数(EGF)为:
Dirichlet生成函数为(DGF)为:
例如数列 \(\{1,1,\dots\}_{n=0}^\infty\) 的
普通生成函数(OGF)为:
指数生成函数(EGF)为:
Dirichlet生成函数为(DGF)为:
扩展
普通生成函数(OGF)
生成函数就是数列的和函数,这里的 \(=\) 是形式收敛
我们知道,\(\{a_n\}_{n=0}^\infty\) 的普通生成函数是 \(f(x)=\sum\limits^\infty_{n=0}a_nx^n\)
那如果我们要求 \(\{a_{n+1}\}_{n=0}^\infty\) 的生成函数呢
所以,\(\{a_{n+1}\}_{n=0}^\infty\) 的OGF为:\(\dfrac{f(x)-a_0}{x}\)
由此,我们可以推出数列:\(\{a_{n+k}\}_{n=0}^\infty\) 的OGF为:\(\dfrac{f(x)-a_0-a_1x-\dots-a_{k-1}x^{k-1}}{x^k}\)
事实上,我们有时候不仅需要求 \(\{a_{n+k}\}_{n=0}^\infty\) 的OGF,还需要求 \(\{na_n\}_{n=0}^\infty\) 的OGF,相当于我们用一个常数 \(n\) 去乘这个数列
我们知道,\(\text{d}(x^n)=nx^{n-1}\)
\(f^\prime(x)=\sum\limits^\infty_{n=0}na_nx^{n-1}\)
所以 \(\{na_n\}_{n=0}^\infty\) 的OGF是:\(x\text{D}f\) (以下设 \(\text{D}=\dfrac{\text{d}}{\text{d}x}\))
则 \(\{n^ka_n\}_{n=0}^\infty\) 的OGF是:\((x\text{D})^kf\)
由此我们可以再得出一个更强的结论:\(\{g(x)a_n\}_{n=0}^\infty\) 的OGF是:\(g(x\text{D})f\)
有时候我们需要将两个数列或是他们的生成函数相乘,此时又代表着什么意义呢?
设 \(f(x)=\sum\limits^\infty_{n=0}a_nx^n\) 与 \(g(x)=\sum\limits^\infty_{n=0}b_nx^n\) 分别是数列 \(\{a_n\}^\infty_{n=0}\) 和 \(\{b_n\}^\infty_{n=0}\) 的生成函数
则
比较系数,发现 \(x^n\) 这一项的系数等于 \(\sum\limits^n_{k=0}a_kb_{n-k}\)
所以 \(f(x)g(x)\) 是数列 \(\left\{\sum\limits^n_{k=0}a_kb_{n-k}\right\}_{n=0}^\infty\) 的生成函数,我们可以从组合意义上来帮助理解,这里不做过多叙述
一个简单的推论:\(\dfrac{1}{(1-x)^k}\) 是数列 \(\left\{\dbinom{n+k-1}{n}\right\}_{n=0}^\infty\) 的OGF
接下来是一个更强的结论:
设有 \(m\) 个数列 \(\{a1_n\}^\infty_{n=0},\{a2_n\}^\infty_{n=0},\dots,\{am_n\}^\infty_{n=0}\) 他们的生成函数分别是 \(f1(x),f2(x),\dots,fm(x)\)
则 \(f1(x)f2(x)\dots fm(x)\) 是数列 \(\left\{\sum\limits_{n_1+n_2+\dots+n_m=n}a1_{n_1}a2_{n_2}\dots am_{n_m}\right\}_{n=0}^\infty\) 的OGF
指数生成函数(EGF)
由定义,数列 \(\{a_n\}^\infty_{n=0}\) 的EGF为: \(f(x)=\sum\limits^\infty_{n=0}\dfrac{a_n}{n!}x^n\)
像上文一样,我们首先依然是要求 \(\{a_{n+1}\}^\infty_{n=0}\) 的EGF
注:做求导运算的时候一定注意 \(n!\) 是一个常数
由上式立即可得:\(\{a_{n+k}\}^\infty_{n=0}\) 的EGF为 \(\text{D}^kf\)
数乘:\(\{na_{n}\}^\infty_{n=0}\) 的EGF为:
此结果依然可得出一个推论:\(\{g(x)a_n\}_{n=0}^\infty\) 的EGF是 \(g(x\text{D})f\)
接下来是乘法运算:
设 \(f(x)=\sum\limits^\infty_{n=0}\dfrac{a_n}{n!}x^n\) 与 \(g(x)=\sum\limits^\infty_{n=0}\dfrac{b_n}{n!}x^n\) 分别是数列 \(\{a_n\}^\infty_{n=0}\) 和 \(\{b_n\}^\infty_{n=0}\) 的指数生成函数,则:
观察可知,对于 \(x^n\) 这一项来说,它的系数是 \(\sum\limits^n_{i=0}\dfrac{a^ib^{n-i}}{i!(n-i)!}\)
我们把分子分母上的式子同乘 \(\dbinom{n}{i}\),会发现分母变为了 \(n!\),分子变为了 \(\dbinom{n}{i}a^ib^{n-i}\)
所以,\(f(x)g(x)\) 是数列 \(\left\{\sum\limits^n_{k=0}\dbinom{n}{k}a^kb^{n-k}\right\}_{n=0}^\infty\) 的EGF
Dirichlet生成函数(DGF)
以下 \(p\) 均为素数
DGF在数论中比较常见,所以它跟其他的生成函数不同,我们由定义,直接讨论 \(f(s)g(s)\) 的Dirichlet生成函数
按照往常的思路,依然是先观察系数,发现 \(n^s\) 这一项的系数是 \(\left\{\sum\limits_{d|n}a_db_{\frac{n}{d}}\right\}_{n=1}^\infty\)
所以,\(f(s)g(s)\) 是数列 \(\left\{\sum\limits_{d|n}a_db_{\frac{n}{d}}\right\}_{n=1}^\infty\) 的DGF
推广到一般:若 \(f(s)\) 是数列 \(\{a_n\}^\infty_{n=1}\) 的DGF,则 \(f^k(s)\) 是数列 \(\left\{\sum\limits_{a_1a_2\cdots a_k=n}a_{n_1}a_{n_2}\cdots a_{n_k}\right\}_{n=1}^\infty\) 的DGF
如若函数 \(f\) 是一个积性数论函数,则数列 \(\{f(n)\}_{n=1}^\infty\) 的DGF是:
其中,\(p\) 是 \(n\) 的素因子
注意到上式 \(p^{-ks}=\dfrac{1}{(p^k)^s}\),原式即得证
应用
OGF的应用
从数量不限的苹果香蕉橘子梨中选取 \(n\) 个水果,要求苹果数是偶数,香蕉数是 \(5\) 的倍数,橘子最多有 \(4\) 个,梨最多有 \(1\) 个,记这样的装法有 \(h_n\) 种,求 \(h_n\)
设 \(f(x)\) 为 \(h_n\) 的OGF,则:
其中 \((1)\) 处:\(1+x+x^2+x^3+x^4=\dfrac{1+x+x^2+\cdots}{1+x^5+x^{10}+\cdots}=\dfrac{1-x^5}{1-x}\)
\((2)\) 处可用大除法算得
之后比较系数可得:\(h_n=n+1\)
EGF的应用
用红白蓝三种颜色对 \(1\) 行 \(n\) 列的棋盘上的所有方格进行涂色,若要求涂成红色的方格数为偶数,则有多少种涂色方法?
设 \(h_n\) 表示方法数,根据EGF的性质,立即给出
\((1)\) 处:
比较系数,得 \(h_n=\dfrac{3^n+1}{2}\)
确定每位数字都是奇数,且 \(1\) 和 \(3\) 都出现偶数次的 \(n\) 位数的个数
设 \(h_n\) 表示方法数
比较系数,\(h_n=\dfrac{5^n+2·3^n+1}{4}\)
从 \(a,b,c\) 中可重复的选取 \(4\) 个字母,其中至少有两个 \(a\),设能组成的不同的字符串的个数是 \(h_n\),求 \(h_n\)
\((1)\) 处:
DGF的应用
介绍一个黑科技:常值函数,为什么说它黑呢?看看下面这个例子
常值函数 \(f:\mathbb{Z}^+\to1\) 是一个积性数论函数,从而 \(\{1\}^\infty_{n=1}\) 的DGF是:
我们回忆一下积性数论函数 \(\mu(n)\)
它的DGF是
也即:\(\tilde{\mu}(s)\zeta(s)=1\)