期望解题法
这篇博客教你如何使用公式,套路地解决一类期望题
受 tommymio 启发,总结了一下
前置知识:\(\mathrm E[X+Y]=\mathrm E[X]+\mathrm E[Y]\),其中 \(X,Y\) 可以有依赖关系。
证明 OI Wiki 上有。
例题 CF280C Game on Tree
Statement. 给一棵有根树 \((n\le10^5)\),根为 \(1\),每次等概率选一个未删去的点,然后删除他的子树,问删除所有节点的期望次数。
约定
- \(\mathrm P(X)\) 为事件 \(X\) 发生的概率
- \(\mathrm E(X)\) 为 \(X\) 的期望值
- \(\mathrm I(X)=\begin{cases}1&X\ \text{发生}\\0&X\ \text{没发生}\end{cases}\)
给 \(\mathrm I(X)\) 取个高大上的名字:称 \(\mathrm I(X)\) 为事件 \(X\) 的指示器随机变量。(其实就是艾弗森括号)
显然,\(\mathrm E(\mathrm I(X))=\mathrm P(X)\)。
分析
设 \(X_i=\mathrm I(T_i)\),其中事件 \(T_i\) 为点 \(i\) 被选中
那么总共选出的点数 \(X=\sum_{i=1}^n X_i\)
两边取期望得 $$\mathrm E[X]=\mathrm E\left[\sum_{i=1}^n X_i\right]$$
由期望的线性性,$$\mathrm E[X]=\sum_{i=1}^n\mathrm E[X_i]$$
这一步相当于破除了变量间的依赖关系
接下来,如果算出了单个 \(i\) 的 \(\mathrm E[X_i]\) 是什么,问题也就迎刃而解:
\(\mathrm E[X_i]=\mathrm P(T_i)\),即 \(i\) 被选中的概率
\(i\) 要被选中,那 \(i\) 应该是 \(i\) 及它所有祖先中,第一个被选中的
考虑 \(i\) 及它的祖先,这些点的选中机会是平等的,所以 \(\mathrm P(T_i)=\frac{1}{\text{dep}(i)}\),定义 \(\text{dep}(1)=1\)
于是问题解决,$$Ans=\sum_{i=1}^n\frac1{\text{dep}(i)}$$
总结规律
分三步:
- 设事件 \(T\) 的指示器随机变量。
- 利用指示器随机变量和期望的线性性质分化问题。
- 求解事件 \(T\) 发生的概率。
这个方法是核心,掌握这个方法就能举一反三,简单地解决许多的期望题!
再看几道例题。
例 1. UVA12004 Bubble Sort
Statement. 求 \(n(\le 10^5)\) 个数的排列的期望逆序对数
分析
定义该排列为 \(p\),\(X_{i,j}=\mathrm I(T_{i,j})\),其中事件 \(T_{i,j}\) 为 \(i<j\land p_i>p_j\)
那么该排列的逆序对数 \(X=\sum_{i=1}^{n-1}\sum_{j=i+1}^nX_{i,j}\)
两边同取期望,得
由期望的线性性,
问题变成求一个独立的 \(\text E[X_{i,j}]=\text{P}(T_{i,j})\)
而
故
解决!
例 2. 点菜问题
题意
\(n\) 个人,点 \(m\) 样菜,点菜时他们之间没有交流,每个人点每样菜是随机的,每个人只能点一样菜。
求被点过的菜的期望数,结果对 \(998244353\) 取模,\(n,m<998244353\)。
分析
定义 \(X_{i}\) 为第 \(i\) 样菜是否被选。换句话说就是 \(\text I(T_i)\),其中事件 \(T_i\) 为第 \(i\) 样菜被选中。
那么答案 \(X=\sum_{i=1}^mX_{i}\)
同取期望,
考虑单个 \(\text E[X_i]\) 咋算,也就是单独第 \(i\) 样菜被选的概率。
他等于总数减去第 \(i\) 样菜选 \(n\) 次还选不到的概率,即 \(1-\left(\frac{m-1}{m}\right)^n\)
故
题外话
你可以在 U204177 提交此题。
例 3. P3802 小魔女帕琪
Statement. 给出一个序列,其中包含 \(a_i(0\le a_i\le 10^9)\) 个 \(i(1\le i\le 7)\),问将其随机排列后,期望出现多少次连续 \(7\) 个互不相同的数。
分析
定义 \(X_i\) 为区间 \([i..i+6]\) 这 \(7\) 个数是否互不相同,\(N=\sum_{i=1}^7a_i\)。
那么答案 \(X=\sum_{i=1}^{N-6}X_i\)
同取期望,
问题变成如何求解单个 \(\text E[X_i]\),即随机取 \(7\) 个数,互不相同的概率。
他等于
故
写好看点,就是
解决。
例 4. P1297 单选错位
Statement. 略
分析
默认约定 \(a_{n+1}=a_1\)
令 \(X_i\) 为 \(a_i,a_{i+1}\) 的答案是否相同
同取期望得
问题变成单个 \(\text E[X_i]\) 咋求。
通过简单小学奥数的计算后
做完了!
例 5. 石子问题
题意
给定 \(n\) 堆石子,每堆石子有 \(a_i\) 颗石子,每次等概率选择一颗石子,然后一次性取完它这堆的所有石子。请你求出第 \(1\) 堆石子期望第几次被取走。
\(n\le 10^5, a_i\ge 1\)
分析
该题的表示法不太一样:
设 \(t_i\) 为第 \(i\) 堆石子被取走的时间,他一定是一个排列,\(X_i\) 为 \([t_i<t_1]\)。
那么答案
同取期望
而
于是这题就做完了。
例题就讲这么多。
总结
该方法能解决一大类期望问题,不过他还是有局限性的,就是如果答案不能方便的表示出来,他可能就做不了。