【学习笔记】概率生成函数

Page Views Count

概述#

用生成函数刻画一些困难的概率期望问题,使用一些朴素的数学技巧来解出答案。

F(x) 为概率生成函数,定义为:

F(x)=i0P(X=i)xi

容易发现 F(1)=1

F(x) 求导得到:

F(x)=i0iP(X=i)xi1

容易发现 E(X)=F(1)=1

同时根据高中数学知识可以得到:

Var(X)=i0(iE(X))2P(X=i)=i0i2P(X=i)2iE(X)P(X=i)+E(X)2P(X=i)=i0i2P(X=i)E(X)2

F(x) 的二阶导:

F(x)=i0i(i1)P(X=i)xi2

于是 Var(X)=F(1)+F(1)(F(1))2

例题#

Luogu-P4548 CTSC 2006 歌唱王国#

fi 表示在长度为 i 时完成的概率,gi 表示在长度为 i 时尚未完成的概率,记 F(x),G(x)f,g 的生成函数,结合常数项 f0=0,g0=1 可以得到:

F(x)+G(x)=xG(x)+1

考虑将一个未完成的串后面直接接上目标串,此时可能出现没有完全接完就已经完成了的情况(原来就有一部分前缀),已经接上的部分既是前缀也是后缀,即 border,剩下的部分就浪费了,所以可以写成:

xLG(x)m|s|=i=1|s|x|s|iF(x)m|s|i[s[1,i]Border(s)]

因为要求 F(1),所以对第一个式子求导,得到:

F(x)+G(x)=G(x)+G(x)

所以 F(1)=G(1),再把 x=1 代入第二个式子。

G(1)=i=1|s|mi[s[1,i]Border(s)]

所以答案就是 m 的所有 border 次幂之和。

可见 PGF 解决问题的流程大致是设计一些数列的概率生成函数或普通生成函数,联立方程,求导,并将 x=1 代入解决问题,上面部分已经阐明 x=1 时的值有许多特殊之处。

P.S:伟大 APJ 指出,F(x) 满足 F(1)=1,但是 G(x) 不满足,所以只有 F(x) 是概率生成函数。

参考资料#

  • 《浅谈生成函数在掷骰子问题上的应用》 - 杨懋龙

作者:SoyTony

出处:https://www.cnblogs.com/SoyTony/p/17958685/Learning_Notes_about_Probability_Generating_Function

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   SoyTony  阅读(258)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示