数学期望的笔记整理
最后编辑于 2022.10.22 17:12
Part 0 数学期望常用的公式
期望的定义
OI中用到的期望一般指的都是离散型的期望,它的定义如下:
因此期望具有线性性。换句话说,期望的和等于和的期望、期望的倍率等于倍率的期望。
血的教训:这两个式子不要求
互相独立。
另外单独记忆一条性质,如果两个随机变量
Part 1 期望类DP
Luogu P1654 OSU!
题意
随机生成一个长度为 1
, 0
。定义这个序列的分数为每一个极长连续 1
段的长度立方之和,求生成后的期望得分。
做法
我们考虑一下这一道题能不能通过递推的方法求出来。在一个序列末尾加入一个新元素后,显然可以按照新元素是否为 1
分成两类讨论,然后分别乘上这两种情况分别出现的概率,相加得到整体的期望。
具体来讲,分别假设(钦定)最后一个元素一定为
1
/一定为0
,求出这两种情况下的期望得分,再合并答案。
设 1
段的长度(
注意!!期望的平方不等于平方的期望!
所以,后缀连续段产生的贡献的期望不是
,而应该是 ! 为了避免这种很容易产生的错误,可以先写出要求出期望的值,不要把它化简,直接套上期望算子再化简。
已这一道题为例,我们要求的是“后缀连续1段的得分”的期望值,那就直接写成
,再考虑
因为各个连续段产生的贡献的期望是可以从
上面那一句话指的是
可以写成 (
表示第 个连续段的长度) 所以以后遇到复杂的期望式子可以先保留期望算符,方便推导
稍加简化,我们有了:
仿照计算
化简后得到这一组式子:
然后就可以快乐地做掉这一道题了。
总结
推导含有期望的式子的时候一定要记住期望的平方不是平方的期望
活用线性性,不要让数列的下标位置出现随机的变量,不然式子将无法推导
可以通过“分类—钦定—合并”的程序确定新增元素对答案的影响。
Luogu P4550 收集邮票
题意
一共有
求每种邮票都集齐时,所需要费用的期望。
做法
先来转化问题,发现如果需要
仿照上一道题的的状态设计,我们令
期望DP的状态经常设计为“已经完成了……还需要……的期望”,并且在转移的时候使用倒推的方法。
这一点需要记住。
你说刚刚那一道题没有倒推?那是因为序列正反算是对称的啦。
接下来开始推导状态转移方程吧!
我们假设目前经过了
- 取到已经收集到的某种邮票,概率为
. 因为我们“多取了一次”之后仍然需要 次才能集齐剩下的邮票,所以期望步数应当看作 . - 取到还没有收集到的某种邮票,概率为
. 显然这个时候“距离集齐还需要步数”的期望是 .
把以上两种情况乘上概率,得到下面的式子:
解一下方程,可以得到
等等!这样不对吧! 为什么
在等式两边都出现了? 的确,虽然这样推导看起来有失严谨,但它是正确的!在下面的“总结”部分会有几种(我自认为合理)的解释。
然后还要推导
可以看到推导
的过程相当于一个“平方展开”的过程。
解完两个方程,我们就可以用递推做掉这一道题了。
总结
好,现在来处理一下刚刚的小问题——递推式的左右两边同时出现了
我现在对这个问题有三种理解方法:
- 可以看成DP中的自环
我们知道DP有的时候会有环,这里就是其中的一种特殊情况。在其他的情况里,我们可能会看到
这里算是一种特殊情况(自环),一个状态“部分地”可以由它自己推导出来。因为只有一个方程,我们可以通过直接解方程的方法处理掉它。
- 可以看成“偏差”
我们知道,在实际的取邮票过程中,当你已经集齐
假如说我们取了若干次,已经集齐了
换句话说:“我们不知道期望值具体是多少,但是我们知道它对应的随机变量有
把产生与不产生偏差对应的表达式写出来,就得到了之前的递推式。
- 可以根据期望的定义推导
对于任意一个“取了
我们定义随机变量
根据数学期望的定义,写出下面的式子
现在,我们再从
所以,完全可以删去刚刚式子里面
这一步是一次换元,大可不必强行理解这样做的概率意义
最后,就有了我们熟悉的
Luogu P1850 [NOIP 2016] 换教室
题意
给定一张有
接下来对
进行完这些操作之后,有一个人从
做法
首先可以观察到图里面的点数量只有
然后我们注意到,前面走过的路径无论是怎么样的,都不会影响到我们后面所走的路径。所以我们考虑用 DP 来解决这个问题。
设计状态
由于期望的线性性不要求两个随机变量相互独立,所以就算一个点对是否操作的决策会同时影响前后两段路径的期望长度,我们也可以把他们两个分开来处理。
分类讨论一下,状态转移方程还是比较容易写出的
真的非常简单呢
时间复杂度是
总结
期望类的 DP 设计状态时,可以钦定最后一次决策,这样可以减少许多不必要的分类讨论。
Part 2 计数&贡献类的期望问题
我们需要了解这样一个基本的事实:
“集合
证明:
其实就是期望的线性性在计数类问题上的具体体现
并且我们还知道,“长度”、“次数”这些题目可能要求统计的变量本质就是“计数”,所以我们可以用转化问题的方法解决这一类期望问题。
CodeForces 280C Game on Tree
题意
给定一棵
做法
按照上面的思路转化问题,把每次被选中的点写成一个序列(不妨称其为“操作序列”),答案就是操作序列的长度的数学期望。
而根据刚刚推导得出的结论,【序列的长度的数学期望】等价于【每一个可能出现在序列中的元素(也就是原树上的每一个节点)在序列中出现的概率之和】。我们就把这一道题转化为了计数问题。
接下来考虑如何计算出原树上的节点在最终的操作序列里出现的概率。
稍稍改变一下每一次随机取点的方法,不再把整个子树和被选中的点删除,而仅仅是把它们打上一个标记。相应地,每一次如果取到了带有标记的节点就再取一次,直到取到一个没有标记的节点为止。
因为在这种新的取法里面,我们对于任何一个点都没有“偏好”,所有操作都是均匀随机的,所以在仅仅在被选到的概率方面,它和原来的方法是等价的。
这种情形下,一个点出现在操作序列里的充分必要条件是【选到他之前,由他到根节点的路径中没有任何一个点被选中】。
按照这个条件重新思考,由于我们的操作是均匀随机的,很显然,根链的节点们中,每一个点 “成为首个被选择的点” 的机会是均等的(假如说一次选取选到了根链外面的点,对于里面的点没有任何影响)。因此,原树中任意一个节点出现在最终操作序列里的概率是
于是乎,答案就是
总结
可以把“次数”通过线性性进行转化,方便统计期望。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异