生成函数 学习笔记

定义:数列 F 的 生成函数为 F(x)=i=0F[i]xi,其中的 x 并没有实际意义

几何级数定理

i=0xi=11x

证明考虑等比数列求和,由于 x 并无实际意义,则无需考虑收敛性
推广可以得到

i=0aixik=11axk

用这个技巧可以将一类的生成函数进行化简

广义二项式定理

首先定义广义二项式系数 (nk)=nkk!,其中 n 的范围为全体实数,则

(x+y)n=i=0(nk)xiyki

一个衍生技巧,上指标反转(处理上指标为负整数)

(rk)=(1)k(kr1k)

证明考虑 rk=r(r1)(rk+1)=(1)k(r)(r+1)(r+k1)=(kr1)k

通过这些内容可以得出以下的转换

i=0(1)i(ni)=(1x)n

i=0(n+ii)=1(1x)n+1

例题


关于处理 (2nn) 形的组合数
考虑

xk(x12)k=x(x12)(x1)(xk+1)(xk+12)

=22k[2x(2x1)(2x2)(2x2k+2)(2x2k+1)]=2x2k22k

通过 12 使得两个下降幂交错,再扩大回下降幂
x=k=n,则

2n2n22n=nn(n1n)n

两边同除以 (n!)2 得到

22n(2nn)=(n12n)

上标反转一下

(2nn)=(4)n(12n)

接下来可以尝试用上面的结论得出 i=0(2ii)xi

f(x)=i=0(4x)i(12i)

逆用二项式定理,得到 f(x)=(14x)12

生成函数与组合计数

定义

组合对象:满足某一性质的可数对象,定义组合对象的集合为 A
为了方便描述,下文不再区分 AA
所有的 aA 定义一个大小 |a|,记所有大小为 n 的对象组成的元素叫 An,定义计数序列 A[n]=|An|

笛卡尔积
定义 {(a1,a2,,an)|a1A1,a2A2,,anAn}A1,A2,,An 的笛卡尔积,记为 A1×A2××An
就是从每个集合中选一个元素组成的新元素,满足 |A×B|=|A|×|B|
对于组合对象组合,定义 |a+b|=|a|+|b|

OGF

设数列 F[n],则 OGFF(x)=i=0F[i]xi
两个 OGF 的卷积是加法卷积:(FG)[k]=i+j=kF[i]G[j]
几何级数和二项式定理中就提到几个经典 OGF,以下还有

i=0xii=ln11x=ln(1x)

i=0xii!=ex

其中 01=0,0!=1

对于 OGF,乘法代表笛卡儿积,加法代表不交几何的并

例题UVA12298
考虑对于每个花色建立数列 F[i] 表示点数为 i 的数量
然后将四个花色的生成函数进行卷积,提取一下系数就好了

EGF

设数列 F[n]EGFF(x)=i=0F[i]xii!
F[n]=1,1,1 时,EGFex
两个 EGF 的卷积为二项加法卷积,即

(FG)[k]=i+j=k(ki)F[i]G[j]

证明如下,先将 阶乘写出来

(FG)[k]k!=i+j=kF[i]i!G[j]j!

合并阶乘得到

=i+j=kk!i!j!F[i]G[j]

系数 k!i!j!(ki)
下面是一些常见的 EGF

i=0xii!=ex

i=0cixii!=ecx

考虑上式 c=1/1 相加除以二

i=0[2|i]xii!=ex+ex2

考虑组合数的定义(定义x0=1)

i=0aixii!=(1+x)a

OGF 类似,EGF 的加法含义依旧是不相交方案的并,但是乘法为有标号对象的笛卡尔积
即将两个对象拼接的时候,保持两个对象相对顺序不变,一共有 (|a|+|b||a|) 种方案

例题P5219
考虑prufer序列,即序列中出现次数最多的点恰好为 m
将"恰好"的限制改为至少,之后差分一下
定义 F[i] 表示单个元素出现次数为 i 的方案数,易知 F(i)=i=1mxii!
那么卷积一下,答案为 [xn2]F(x)n

此外,exp 有优美的组合意义
观察 expF(x)=i=0F(x)ii!
若吧 F(x) 视为“单个元素”的 EGF,那么 expF(x) 就描述了这些元素组成的有标号集合
原式的意义就是枚举集合元素个数,用卷积拼接,再除以阶乘去重

例题P4841
考虑一个一般图的组成元素是多个连通图
设一般图的生成函数为 F(x),连通图的生成函数为 G(x),则 expG(x)=F(x)
化简得到 G(x)=lnF(x)F(x) 是简单的

PGF

这一类生成函数用于概率期望
定义 P(A) 表示 A 事件发生的概率
定义离散随机变量 xN
它的生成函数为 F(x)=i=0P(x=i)xi,则 F(1)=1
考虑F(1)=i=0iP(X=i)1i,为 E(x)
推广有 E(xk)=F(k)(1)

同时我们知道 Var(X)=E(x)2E(x2)
那么 Var(X)=E(x)2E(x(x1))E(x)=F(1)2F(1)F(1)

例题P4548
考虑定义 F[n] 为第 n 次恰好结束的概率,G[n] 为第 n 次还没结束的概率
答案即为 F(1),推知 F(x),G(x) 的关系
F(x)+G(x)=xG(x)+1
提取 xn 的系数,左侧为恰好在 n 结束与 n 后结束的概率和,右侧为 G(x) 向后推一位,即 n1 还没结束的概率
定义字符集为 c,那么出现一个要求字符的概率为 1cm
那么保证结束的概率为 G(x)(xc)m 但这样可能会多算
考虑如何把 F(x) 补成上式,一定是在 Border 处结束,令 A[i] 表示是否有长度为 i 的 Border,得到恒等式

G(x)(xc)m=i=1mA[i]F(x)(xc)mi

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)1cm=i=1mA[i]F(1)1cmi

化简得到 G(1)=i=1mA[i]ci

posted @   Matutino_Lux  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示