概率生成函数
认识概率生成函数,形如
也就是 i 次项的系数是随机变量 X 等于 i 的概率。
这个东西有两个用处:
1 关于概率
其实就是把 的所有系数加起来,而这里的系数就是概率
2 关于期望
想一想,上面的式子想出现期望,是不是需要在 上乘一个 i 呀?如何让这个 i 出现呢?求导啊!
综上所述
先设一个变量 表示(任意一次随机的过程中)停止的时候 的长度,也就是随机了 个字符的时候恰好随机出 。
引入两个概率生成函数 和 ,分别表示 的概率和 的概率。也就是
表示 的 次方系数,也就是 的概率, 同理。
接下来就可以建立一些递推式子:
生成函数中则为( 是因为处理边界情况):
再求导(函数乘积求导公式):
过程2
我们设一个新的数列 表示同时满足下列两个条件 (记为事件A) 的概率:
1.随机了 个字符但没出现
2.接着无条件随机 个字符( 是 长度) ,且 个字符刚好为
什么叫“无条件”呢?就是随机这 个字符的过程中,有可能还没随机够 个,就已经出现 了。这种情况下我们强迫它一定要随机够 个。
相当于, 表示的是这一个事件 的发生概率:
如何计算 ?
第一种方法
两事件相互独立,概率乘起来,即有:
第二种方法
如果事件 发生,则一定满足 ,我们讨论 每一个取值
假设 ,这个前提的概率是 ,我们求出在这个前提下事件 发生的概率乘起来并且将 的所有概率加起来就是事件 发生的概率
设 也就是代表无条件随机 个字符就出现
重点
那么字符串 一定为一个前缀(因为从 )
那么字符串 一定为一个后缀(因为我们从 结束的 )
也就是 的
概率也就好求了
条件 是概率性的,剩下来的字符和前面的是独立的,因此这 个字符满足要求的概率就是 。
因此在 条件下,事件 的概率是
根据全概率公式,把所有可能情况的概率加起来,事件 A 发生的概率 就是
综上,根据两种方法求出的 联立
把 乘以 ,第 项的系数变成了 。
把 乘以 ,第 项的系数变成了
所以
我们要求期望,也就是
翻到前面可以看到 是总概率是
得到:
用 kmp 求一下就可以啦(本题 本身也是 的border)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现