生成函数
多项式
称以下函数 \(f(x)\) 为关于 \(x\) 的多项式:\(f(x)=\sum_{i=0}^{n}a_ix^i\),其中 \(a_i\) 可以是任意系数
多项式的次数为次数最高次向的次数,多项式 \(f(x)=0\) 的次数为 \(-\infty\) 。
多项式对于加法、减法、乘法、求导、不定积分都是封闭的。
多项式这里都是简单的,初二应该都会
多项式求导
若 \(f(x)\) 函数求导则写成 \(f'(x)\) ,这里我们只介绍求导的一点点小性质(这些性质我只会推一点点,大家还是记下来吧😭
- \((x^n)'=n\times x^{n-1}\)
- \((af(x))'=a(f(x))'\)
- \((f(x)+g(x))'=f'(x)+g'(x)\)
- \((f(x)-g(x))'=f'(x)-g'(x)\)
- \((f(x)g(x))'=f'(x)g(x)+f(x)g'(x)\)
- \((\frac{f(x)}{g(x)})'=\frac{f'(x)g(x)-g'(x)f(x)}{g^2(x)}\)
- \((f(g(x)))'=f'(g(x))g'(x)\)
OGF
介绍
生成函数是对于一个数列构造的形式幂级数。听着挺抽象的,不如举个例子:
对于一个数列 \(\{a_n \}\) ,他对应的生成函数是 \(G(x)=\sum_{i=0}^{+\infty}a_ix^i\) 。
例
-
:\(1,1,1,1,1,...\) 所对应的生成函数是 \(G(x)=\sum_{i=0}^{+\infty}x^i=\frac{1}{1-x},x\in(-1,1)\) 。
假设 \(S=\sum_{i=0}^{+\infty}x^i\) 那么 \(x\times S=\sum_{i=1}^{+\infty}x^i=S-x^0=S-1\),移项得 \(S=\frac{1}{1-x}\)
-
:\(1,2,4,8,16,...\) 所对应的生成函数是 \(G(x)=\sum_{i=0}^{+\infty}2^ix^i=\sum_{i=0}^{+\infty}(2x)^i=\frac{1}{1-2x},x\in(-\frac{1}{2},\frac{1}{2})\) 。
-
:\(\binom{n}{0},\binom{n}{1},\binom{n}{2},\binom{n}{3},...\) 可以写成 \(\sum_{i=0}^{n}\binom{n}{i}x^i1^{n-i}=(1+x)^n\)
这里用到了二项式定理,我们来说一下二项式定理是啥(这个是常见的,大家可以记下来):\((x+y)^n=\sum_{i=0}^{n}\binom{n}{i}x^iy^{n-i}\)
性质
这里假设数列 \(\{a\} \{b\} \{c\}\) 对应的生成函数分别是 \(A(x),B(x),C(x)\)
-
若 \(b_n=ka_n\) ,则 \(B(x)=kA(x)\) ,对于任意 \(k\) 符合(这里易证
-
若 \(c_n=a_n+b_n\) ,则 \(C(x)=A(x)+B(x)\)
-
若 \(c_n=\sum_{i=0}^{n}a_i\times b_{n-i}\) ,则 \(C(x)=A(x)\times B(x)\)
-
若 \(b_n=\sum_{i=0}^{n}a_i\) ,则 \(B(x)=\frac{A(x)}{1-x}\)
这里需要小小的证明一下,假设有一个数列 \(\{d\}\),所对应的生成函数为 \(D(x)=\sum_{i=0}^{n}x^i\) ,也就是每一位都是 \(1\) ,我们可以发现 \(A(x)\times D(x)=B(x)\) ,由上文可得 \(D(x)=\frac{1}{1-x}\) ,因此 \(B(x)=\frac{A(x)}{1-x}\)
-
若 \(b_n=na_n\) ,则 \(B(x)=xA'(x)\)
我们把 \(x^n\) 求导之后变成了 \(n\times x^{n-1}\) ,再乘上 \(x\) 可得 \(nx^n\) (完全不严谨,感性理解)
-
若 \(b_n=\frac{a_n}{n+1}\) ,则 \(B(x)=\frac{\int A(x)\text{dx}}{x}\)
把 \(\frac{x^n}{n+1}\) 逆导之后可以发现是 \(x^{n+1}\) ,再除以 \(x\) ,则原式变成 \(x^n\)
生成函数还原原来的序列
因为生成函数是由数列构造成的,所以我们可以通过生成函数来还原原来的序列。
设当前的生成函数为 \(f(x)\) ,对应的数列为 \(\{a_n\}\) ,我们可以通过他 \(x^n\) 的系数来的到 \(a_n\) 的值,记作 \([x^n]f(x)\) 。
例
-
\([x^3]\frac{1}{1-x}=1\)
-
\([x^5]\frac{1}{1-2x}=2^5\) 我们可以观察规律得到 \([x^n]\frac{1}{1-ax}=a^n\)
-
\([x^n]\frac{1}{1-3x+2x^2}\) \(\frac{1}{1-3x+2x^2}=\frac{1}{(1-x)(1-2x)}=\frac{A}{1-x}+\frac{B}{1-2x}=\frac{A\times (1-2x)+B\times (1-x)}{(1=x)(1-2x)}\)
所以 \(A\times (1-2x)+B\times (1-x)=1\) ,可以解出 \(A=-1,B=2\)
故 \([x^n]\frac{1}{(1-x)(1-2x)}=[x^n](\frac{-1}{1-x}+\frac{2}{1-2x})=-1\times 1 +2\times 2^n=-1+2^{n+1}\)
-
\([x^n]\frac{1}{(1-x)^k}\)
\([x^n]\frac{1}{(1-x)^k}=[x^n](1+x+x^2+x^3+...)^k\)
\(=[x^n](1+x+x^2+...)(1+x+x^2+...)(1+x+x^2+...)(1+x+x^2+...)....\) (总计 \(k\) 个)
他的组合意义为选 \(k\) 个非负整数 \(a1,a2,a3,...,ak\) ,使得 \(\sum_{i=0}^{k}a_i=n\) 的方案数,由插板法可得,该方案数为 \(\binom{n+k-1}{k-1}\)
故 \([x^n]\frac{1}{(1-x)^k}=\binom{n+k-1}{k-1}\)
小练习
A
求多重集 \(\{1,1,1,1,2,3,3,3\}\) 中不同的 \(4\) 元多重集合的个数
考虑每种数选了多少个,\(x^n\) 表示当前数选了 \(n\) 个,
那么答案就是 \([x^4](1+x+x^2+x^3+x^4)(1+x)(1+x+x^2+x^3)\)
B
有一个果篮,里面有苹果、香蕉、橙子、梨四种水果,总共有 \(n\) 个,其中苹果的个数为偶数,香蕉的数量不超过 \(4\) 个,橙子的数量是 \(5\) 的倍数,梨的数量不超过 \(1\) 个。求果篮里各种水果的书目的方案数
答案即为 \([x^n](1+x^2+x^4+...)(1+x+x^2+x^3+x^4)(1+x^5+x^{10}+...)(1+x)\)
\(=[x^n]\frac{(1+x+x^2+x^3+x^4)(1+x)}{(1-x^2)(1-x^5)}=[x^n]\frac{(1+x+x^2+x^3+x^4)(1+x)}{(1-x)(1+x)(1-x)(1+x+x^2+x^3+x^4)}\)
\(=[x^n]\frac{1}{(1-x)^2}=n+1\) (最后一步可以从上面的 \(OGF\) 例 \(4\) 证得)
EGF
介绍
对于一个序列 \(\{a\}\) ,定义他的指数生成函数(\(EGF\))为 \(f(x)=\sum_{i=0}^{+\infty}\frac{a_n}{n!}x^n\) 。
对于一个指数生成函数,将它还原成原数列可以将每项系数乘以 \(n!\) ,记作 \(a_n=[\frac{x^n}{n!}]f(x)\)
例
- \(1,1,1,1,...\) 的 \(EGF\) :\(f(x)=\sum_{n=0}^{+\infty}\frac{x^n}{n!}=e^x\) ,因为将 \(e^x\) 处泰勒展开就得到了他的无穷级数形式(泰勒展开不会,所以咕咕咕。)
- \(1,2,4,8,16,32,...\) 的 \(EGF\) :\(f(x)=\sum_{n=0}^{+\infty}\frac{2^nx^n}{n!}=\sum_{n=0}^{+\infty}\frac{(2x)^n}{n!}=e^{2x}\) 。
- \(0,1,2,3,4,5,...\) 的 \(EGF\) :\(f(x)=\sum_{n=0}^{+\infty} \frac{nx^n}{n!}=\sum_{n=1}^{+\infty} \frac{x^n}{(n-1)!}=\sum_{n=0}^{+\infty}\frac{x^{n+1}}{n!}=xe^x\) (这里还没懂)
- \(1,\frac{1}{2},\frac{1}{3},\frac{1}{4},...\) 的 \(EDF\) :\(f(x)=\sum_{n=0}^{+\infty}\frac{x^n}{(n+1)\times n!}=\sum_{n=0}^{+\infty}\frac{x^n}{(n+1)!}=\frac{e^x-1}{x}\) 。