生成函数 学习笔记
定义:数列 \(F\) 的 生成函数为 \(F(x)=\sum_{i=0} F[i] x^i\),其中的 \(x\) 并没有实际意义
几何级数定理
证明考虑等比数列求和,由于 \(x\) 并无实际意义,则无需考虑收敛性
推广可以得到
用这个技巧可以将一类的生成函数进行化简
广义二项式定理
首先定义广义二项式系数 \({ n \choose k }={ n^{\underline k} \over k!}\),其中 \(n\) 的范围为全体实数,则
一个衍生技巧,上指标反转(处理上指标为负整数)
证明考虑 \(r^{\underline k}=r(r-1)…(r-k+1)=(-1)^k(-r)(-r+1)…(-r+k-1)=(k-r-1)^{\underline k}\)
通过这些内容可以得出以下的转换
关于处理 \(2n \choose n\) 形的组合数
考虑
通过 \(1 \over 2\) 使得两个下降幂交错,再扩大回下降幂
令 \(x=k=n\),则
两边同除以 \((n!)^2\) 得到
上标反转一下
接下来可以尝试用上面的结论得出 \(\sum_{i=0} {2i \choose i}x^i\)
逆用二项式定理,得到 \(f(x)=(1-4x)^{-{1 \over 2}}\)
生成函数与组合计数
定义
组合对象:满足某一性质的可数对象,定义组合对象的集合为 \(\mathcal{A}\)
为了方便描述,下文不再区分 \(\mathcal{A}\) 与 \(A\)
所有的 \(a \in A\) 定义一个大小 \(|a|\),记所有大小为 \(n\) 的对象组成的元素叫 \(A_n\),定义计数序列 \(A[n]=|\mathcal{A}_n|\)
笛卡尔积
定义 \(\{(a_1,a_2,…,a_n)|a_1\in A_1,a_2\in A_2,…,a_n\in A_n\}\) 为 \(A_1,A_2,…,A_n\) 的笛卡尔积,记为 \(A_1\times A_2\times …\times A_n\)
就是从每个集合中选一个元素组成的新元素,满足 \(|A\times B|=|A|\times|B|\)
对于组合对象组合,定义 \(|a+b|=|a|+|b|\)
OGF
设数列 \(F[n]\),则 OGF
为 \(F(x)=\sum_{i=0} F[i]x^i\)
两个 OGF
的卷积是加法卷积:\((F*G)[k]=\sum_{i+j=k}F[i]G[j]\)
几何级数和二项式定理中就提到几个经典 OGF
,以下还有
其中 \(0^{-1}=0,0!=1\)
对于 OGF
,乘法代表笛卡儿积,加法代表不交几何的并
例题UVA12298
考虑对于每个花色建立数列 \(F[i]\) 表示点数为 \(i\) 的数量
然后将四个花色的生成函数进行卷积,提取一下系数就好了
EGF
设数列 \(F[n]\) 的 EGF
为 \(F(x)=\sum_{i=0} F[i] {x^i \over i!}\)
当 \(F[n]={1,1,1…}\) 时,EGF
为 \(e^x\)
两个 EGF
的卷积为二项加法卷积,即
证明如下,先将 阶乘写出来
合并阶乘得到
系数 \(k! \over i!j!\) 即 \(k \choose i\)
下面是一些常见的 EGF
考虑上式 \(c=1/-1\) 相加除以二
考虑组合数的定义(定义\(x^{\underline 0}=1\))
与 OGF
类似,EGF
的加法含义依旧是不相交方案的并,但是乘法为有标号对象的笛卡尔积
即将两个对象拼接的时候,保持两个对象相对顺序不变,一共有 \(|a|+|b| \choose |a|\) 种方案
例题P5219
考虑prufer
序列,即序列中出现次数最多的点恰好为 \(m\)
将"恰好"的限制改为至少,之后差分一下
定义 \(F[i]\) 表示单个元素出现次数为 \(i\) 的方案数,易知 \(F(i)=\sum_{i=1}^m {x^i \over i!}\)
那么卷积一下,答案为 \([x^{n-2}]F(x)^n\)
此外,\(\exp\) 有优美的组合意义
观察 \(\exp F(x)=\sum_{i=0} {F(x)^i \over i!}\)
若吧 \(F(x)\) 视为“单个元素”的 EGF
,那么 \(\exp F(x)\) 就描述了这些元素组成的有标号集合
原式的意义就是枚举集合元素个数,用卷积拼接,再除以阶乘去重
例题P4841
考虑一个一般图的组成元素是多个连通图
设一般图的生成函数为 \(F(x)\),连通图的生成函数为 \(G(x)\),则 \(\exp G(x)=F(x)\)
化简得到 \(G(x)=\ln F(x)\),\(F(x)\) 是简单的
PGF
这一类生成函数用于概率期望
定义 \(P(A)\) 表示 \(A\) 事件发生的概率
定义离散随机变量 \(x \in \mathbb{N}\)
它的生成函数为 \(F(x)=\sum_{i=0} P(x=i)x^i\),则 \(F(1)=1\)
考虑\(F'(1)=\sum_{i=0} iP(X=i)1^i\),为 \(E(x)\)
推广有 \(E(x^{\underline k})=F^{(k)}(1)\)
同时我们知道 \(Var(X)=E(x)^2-E(x^2)\)
那么 \(Var(X)=E(x)^2-E(x(x-1))-E(x)=F'(1)^2-F''(1)-F'(1)\)
例题P4548
考虑定义 \(F[n]\) 为第 \(n\) 次恰好结束的概率,\(G[n]\) 为第 \(n\) 次还没结束的概率
答案即为 \(F'(1)\),推知 \(F(x),G(x)\) 的关系
\(F(x)+G(x)=xG(x)+1\)
提取 \(x^n\) 的系数,左侧为恰好在 \(n\) 结束与 \(n\) 后结束的概率和,右侧为 \(G(x)\) 向后推一位,即 \(n-1\) 还没结束的概率
定义字符集为 \(c\),那么出现一个要求字符的概率为 \(1 \over c^m\)
那么保证结束的概率为 \(G(x)*({x \over c})^m\) 但这样可能会多算
考虑如何把 \(F(x)\) 补成上式,一定是在 Border 处结束,令 \(A[i]\) 表示是否有长度为 \(i\) 的 Border,得到恒等式
对 \(F(x)+G(x)=xG(x)+1\) 两边求导得 \(F'(x)+G'(x)=xG'(x)+G(x)\),令 \(x=1\),得到 \(F'(1)=G(1)\),答案变为 \(G(1)\)
化简得到 \(G(1)=\sum_{i=1}^m A[i]c^i\)