简单写一下基本概念。
多项式
简介
对于求和式 \(\sum a_nx^n\),如果是有限项相加,称为多项式,记作 \(f(x) = \sum_{n=0}^ma_nx^n\)。
可列项相加的求和式称为级数。在和式 \(\sum_{n=0}^\infty a_nx^n\) 中,每项均为非负整数次幂函数乘一个常数系数,这种形式的级数称为幂级数。
多项式的度
对于一个多项式 \(f(x)\) ,称其最高次项的次数称为该多项式的度,也称次数,记作 \(\deg f\)。
多项式运算
加减运算
\[F(x)+G(x)=\sum_{n\ge 0}(a_n+b_n)x^n \]乘法运算(卷积运算)
\[\begin{aligned} F(x)\cdot G(x) &=\sum_{i\ge0}a_ix^i\sum_{j\ge0}b_jx^j \\ &=\sum_{n\ge0}x^n\sum_{i=0}^na_ib_{n-i} \end{aligned} \]生成函数
简介
生成函数(Generating Function),又称母函数,是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。
形式幂级数简单来说,就是我们只关注这个幂级数的系数和未知数的指数,而不关注未知数的取值,这就是形式幂级数。
生成函数大多可以表示为一个统一的形式:
\[F(x) = \sum_na_nk_n(x) \]其中 \(k_n(x)\) 被称为核函数,不同的核函数会导出不同的生成函数,从而有着不同的性质,解决不同的问题。
分类
普通生成函数
形如
\[F(x) = \sum_{n\ge0}a_nx^n \]的生成函数,就是普通生成函数,它的核函数 \(k_n(x) = x^n\)。
常见生成函数
在运用生成函数的过程中,我们不会一直使用形式幂级数的形式,而会适当转化为封闭形式来更好地化简。
例如,\(<1,1,1,\dots>\) 的普通生成函数 \(F(x) = \sum_{n\ge0}x^n\),我们发现
\[\begin{aligned} xF(x)+1 &= F(x)\\ F(x)&=\frac{1}{1-x} \end{aligned} \]这就是 \(\sum_{n\ge0}x^n\) 的封闭形式。
这个式子仅在 \(x\in(-1,1)\) 的时候成立,如果大于就不行了,因为大于 \(1\) 了这个式子就是发散的了。实际做题中我们不需要考虑是否发散,因为生成函数是一个形式幂级数,我们不考虑 \(x\) 的取值。
此外,还有一些常见的生成函数:
- \[ \frac{1}{1-x}=1+x+x^2+\dots=\sum_{n=0}^{\infty}x^n \]
- \[ \frac{1}{1-2x}=1+2x+4x^2+\dots=\sum_{n=0}^{\infty}2^nx^n \]推广一下,就有
- \[ \frac{1}{1-kx}=1+kx+k^2x^2+\dots=\sum_{n=0}^{\infty}k^nx^n \]
- \[ \frac{k}{1-x}=1+kx+kx^2+\dots=k\sum_{n=0}^{\infty}x^n \]
- \[ \frac{x^3}{1-x}=0+0x+0x^2+x^3+x^4+\dots=k\sum_{n=0}^{\infty}x^n \]分母是 \(x^n\) ,那么前 \(n\) 项的系数都是 \(0\)。
- \[ \frac{1}{1-x^2}=1+x^2+x^4+\dots=\sum_{n=0}^{\infty}x^{2n} \]实质上就是把一式的 \(x\) 换成了 \(x^2\)
- \[ \frac{1}{1-x^3}=1+x^3+x^6+\dots=\sum_{n=0}^{\infty}x^{3n} \]同理。
- \[ \frac{1}{(1-x)^2}=1+2x+3x^2+\dots=\sum_{n=0}^{\infty}(n+1)x^n \]这其实是对一式求导得来的。
我们推广一下一式和四式,首先引入广义二项式定理:
\[(x+y)^a = \sum_{k=0}^\infty C_a^kx^{a-k}y^k \]其中 \(C_a^k = \frac{a(a-1)\dots(a-k+1)}{k!}\)
证明略了/cy。接下来把它写成一式四式的形式。
\[\frac{1}{(1-x)^n} = \sum_{i=0}^\infty C_{n+i-1}^{i}x^i \]步骤如下:
- 扩展域
其中若 \(i>n,C_n^i=0\),这就说明越往后其实加的都是 \(0\) 了。
- 扩展指数为负数:
那么
\[\begin{aligned} (1+x)^{-n}&= \sum_{i=0}^\infty C_{-n}^ix^i\\ &=\sum_{i=0}^\infty(-1)^iC_{n-i+1}^ix^i \end{aligned} \]- 加号变减号
运用这个可以求解一些生成函数,例题
还有一些有穷序列的生成函数,可以用数列求和的式子整一整。
- \[ 1+x+x^2 = \frac{1-x^3}{1-x} \]
- \[ 1+x+x^2+x^3 = \frac{1-x^4}{1-x} \]
运算
加减运算
\[F(x)\pm G(x)=\sum_{n\ge 0}(a_n\pm b_n)x^n \]因此 \(F(x)\pm G(x)\) 是序列 \(<a_n\pm b_n>\) 的普通生成函数。
乘法运算
\[\begin{aligned} F(x)\cdot G(x) &=\sum_{i\ge0}a_ix^i\sum_{j\ge0}b_jx^j \\ &=\sum_{n\ge0}x^n\sum_{i=0}^na_ib_{n-i} \end{aligned} \]因此 \(F(x)\cdot G(x)\) 是序列 \(<\sum_{i=0}^na_ib_{n-i}>\) 的普通生成函数。
应用
普通生成函数可以用来解决多重集组合数问题。
\(n\) 种物品,每种物品 \(a_i\) 个,问取 \(m\) 个物品的方案数。
通过构造普通生成函数来解决。
我们让第一种物品的生成函数为 \((1+x^1+x^2+\dots+x^{a_1})\),第 \(n\) 种就是 \((1+x^1+x^2+\dots+x^{a_n})\),令这些生成函数相乘,那么题目就转化成了求 \(x^m\) 的系数。
指数生成函数
形如
\[F(x) = \sum_{n\ge0}a_n\frac{x^n}{n!} \]的生成函数就是指数生成函数。
此外,还有一些常见的指数生成函数:
- \[ e^x = 1+\frac{x^1}{1!}+\frac{x^2}{2!}+\dots=\sum_{n=0}^{\infty}\frac{x^n}{n!} \]泰勒展开!
- \[ e^{-x} = 1-\frac{x^1}{1!}+\frac{x^2}{2!}+\dots=\sum_{n=0}^{\infty}(-1)^n\frac{x^n}{n!} \]
- \[ \frac{e^x+e^{-x}}{2} = 1+\frac{x^2}{2!}+\frac{x^4}{4!}+\dots=\sum_{n=0}^{\infty}\frac{x^{2n}}{(2n)!} \]
- \[ \frac{e^x-e^{-x}}{2} = x+\frac{x^3}{3!}+\frac{x^5}{5!}+\dots=\sum_{n=0}^{\infty}\frac{x^{2n+1}}{(2n+1)!} \]
运算
加减运算
\[\begin{aligned} F(x)\pm G(x)&=\sum_{i\ge 0}a_i\frac{x^i}{i!}\pm \sum_{j\ge 0}b_i\frac{x^j}{j!}\\ &=\sum_{n\ge0}(a_n\pm b_n)\frac{x^n}{n!} \end{aligned} \]因此 \(F(x)\pm G(x)\) 是序列 \(<a_n\pm b_n>\) 的指数生成函数。
乘法运算
\[\begin{aligned} F(x)\cdot G(x) &=\sum_{i\ge0}a_i\frac{x^i}{i!}\sum_{j\ge0}b_j\frac{x^j}{j!} \\ &=\sum_{n\ge0}x^n\sum_{i=0}^na_ib_{n-i}\frac{1}{i!(n-i)!}\\ &=\sum_{n\ge0}\frac{x^n}{n!}\sum_{i=0}^na_ib_{n-i}\frac{n!}{i!(n-i)!}\\ &=\sum_{n\ge0}\frac{x^n}{n!}\sum_{i=0}^nC_n^ia_ib_{n-i} \end{aligned} \]因此 \(F(x)\cdot G(x)\) 是序列 \(<\sum_{i=0}^nC_n^ia_ib_{n-i}>\) 的指数生成函数。
应用
指数生成函数可以用来解决多重集排列数问题。
\(n\) 种物品,每种物品 \(a_i\) 个,问取 \(m\) 个物品的排列 数。
首先要知道多重集排列公式:设从每种物品中取 \(b_i(0\leq b_i \leq a_i),m=\sum_{i=1}^nb_i\),那么对于一组选定的 \(b_i\) 进行排列的方案数为 \(\frac{m!}{b_1!b_2!\dots b_n!}\)。
这就是把里面相同的进行去重的一个操作。这样以后,我们就知道所有满足 \(b_1+b_2+\dots +b_n=m\) 的排列数之和就是答案。
通过构造指数生成函数来解决。
我们让第一种物品的生成函数为 \((1+\frac{x^1}{1!}+\frac{x^2}{2!}+\dots+\frac{x^{a_1}}{a_1!})\),第 \(n\) 种就是 \((1+\frac{x^1}{1!}+\frac{x^2}{2!}+\dots+\frac{x^{a_n}}{a_n!})\),令这些生成函数相乘,那么题目就转化成了求 \(\frac{x^m}{m!}\) 的系数。
为什么?考虑一种满足 \(\sum b_i=m\) 的情况,做乘法,得到
\[\begin{aligned} &\frac{x^{b_1}}{b_1!}\times\frac{x^{b_2}}{b_2!}\times\dots\times\frac{x^{b_n}}{b_n!}\\ &=\frac{x^{b_1+b_2+\dots+b_n}}{b_1!b_2!\dots b_n!}\\ &=\frac{x^m}{b_1!b_2!\dots b_n!}\\ &=\frac{m!}{b_1!b_2!\dots b_n!}\cdot \frac{x^m}{m!} \end{aligned} \]做卷积,合并同类项,最后 \(\frac{x^m}{m!}\) 的系数就是答案。
狄利克雷生成函数
形如
\[F(x) = \frac{a_1}{1^x}+\frac{a_2}{2^x}+\frac{a_3}{3^x} + \dots =\sum_{n=1}^\infty \frac{a_n}{n^x} \]的生成函数,称之为狄利克雷生成函数。
注意 \(n\) 和 \(x\) 的位置。
运算
乘法运算
\[\sum_{i=1}^\infty \frac{a_i}{i^x}\sum_{j=1}^\infty \frac{b_j}{j^x} \]\[\begin{aligned} &=(\frac{a_1}{1^x}+\frac{a_2}{2^x}+\frac{a_3}{3^x} + \dots)(\frac{b_1}{1^x}+\frac{b_2}{2^x}+\frac{b_3}{3^x} + \dots )\\ &=\frac{a_1b_1}{1^x}+\frac{a_1b_2+a_2b_1}{2^x}+\frac{a_1b_3}{3^x} + \frac{a_1b^4+a_2b_2+a_4b^2}{4^x} + \dots\\ &=\sum_{n=1}^\infty \frac{1}{n^x}\sum_{d|n}a_db_{\frac{n}{d }} \end{aligned} \]这个形式其实就很像狄利克雷卷积的形式了。
\(\frac{1}{n^x}\) 的系数之和就是下标为 \(n\) 的一对因数的乘积的和,举个例子。
\(\frac{1}{4^x}\) 的系数 \(a_1b_4+a_2b_2+a_4b_1\);
\(\frac{1}{6^x}\) 的系数 \(a_1b_6+a_2b_3+a_3b_2+a_6b_1\)。
生成函数的应用
这个困扰了我 \(\inf\) 年的问题终于理解了,即使它并不是很难。
求斐波那契数列的通项公式,其中 \(f_i=f_{i-1}+f_{i-2},f_0 = f_1 = 1\)
构造一下生成函数,设
\[A(x)=1+1x+2x^2+3x^3+5x^4+8x^5\dots \]根据递推式我们可以做一些变化:
\[\begin{aligned} A(x)&=1+1x+2x^2+3x^3+5x^4+8x^5\dots\\ xA(x)&=\ \ \ \ \ \ \ \ \ x+1x^2+2x^3+3x^4+5x^5\dots\\ x^2A(x)&=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1x^2+1x^3+2x^4+3x^5\dots \end{aligned} \]整理一下我们可以得到一个方程
\[A-xA-x^2 = 1 \]\[A = \frac{1}{1-x-x^2} \]这样我们就得到了斐波那契数列的生成函数的封闭形式,但是如果我们想要进一步得到每一项的系数,还要进行进一步的化简。
我们已经知道了 \(\frac{1}{1-kx}\) 所代表的序列,那我们自然而然要往这个方面凑。
这个式子的分母 \(1-x-x^2\) 是一个一元二次方程,我们可以进行配方:
\[1-x-x^2 = (1-k_1x)(1-k_2x) \]解得
\[k_1 = \frac{1+\sqrt 5}{2},k_2=\frac{1-\sqrt 5}{2} \]如此以后,我们就可以把原式变成 \(\frac{1}{(1-k_1x)(1-k_2x)}\) 的形式了,我们给它裂项一下,就能表示出最终的式子了。原式裂项后变为
\[\frac{a}{1-k_1x}+ \frac{b}{1-k_2x} \]那么则有
\[a(1-k_2x)+b(1-k_1x) = 1 \]这个里面 \(x\) 的取值其实是无关紧要的,我们可以把这个式子转化成
\[(a+b-1) - x(ak_2+bk_1) = 0 \]所以
\[\left\{ \begin{aligned} & a+b-1=0 \\ & ak_2+bk_1 = 0 \\ \end{aligned} \right. \]解得
\[a = \frac{1}{\sqrt 5}k_1,b=-\frac{1}{\sqrt 5}k_2 \]代回原式,得到
\[A(x) = \frac{k_1}{\sqrt 5}\frac{1}{1-k_1x}-\frac{k_2}{\sqrt 5}\frac{1}{1-k_2x} \]把封闭形式转化为生成函数的形式,那么第 \(n\) 项的系数,也就是斐波那契数列的第 \(n\) 项就是
\[A_n = \frac{1}{\sqrt 5}((\frac{1+\sqrt 5}{2})^{n+1}-(\frac{1-\sqrt 5}{2})^{n+1}) \]这就是生成函数题最基本的推式子的思路,终于理解了/oh。
其中涉及到部分分式的内容:
对于 \(\frac{p(x)}{q(x)}\) 一类的分式,其中 \(q(x)\) 是含有 \(k\) 个不同实根 \(x_1,\dots,x_k\) 的 \(k\) 次多项式,那么这个分式一定能写成
\[\frac{c_1}{x-x_1}+\frac{c_2}{x-x_2}+\dots+\frac{c_k}{x-x_k} \]如果有重根,那么就合并起来,变成 \(\frac{c_i}{(x-x_i)^k}\) 的形式即可。
标签:dots,infty,frac,函数,sum,生成,aligned From: https://www.cnblogs.com/bloodstalk/p/17473760.html