概率期望 学习笔记

基础知识

概率定义

\(P(A)\) 为事件 \(A\) 发生的概率, \(P(A|B)\) 为在 \(B\) 事件发生的前提下 \(A\) 事件发生的概率。

概率性质

  1. 加法公式:\(A,B\) 独立,则 \(P(A\or B)=P(A)+P(B)\)。( \(P(A\or B)\) 就是 \(A\) 发生或者 \(B\) 发生)

    广义加法公式:\(A,B\) 任意,则 \(P(A\or B)=P(A)+P(B)-P(A\and B)\)。( \(P(A\and B)\) 就是 \(A\) 发生且 \(B\) 发生)

  2. 乘法公式:

    \(A,B\) 独立\(P(A*B)=P(A)*P(B)\)

    \(A,B\) 任意\(P(A*B)=P(A)*P(B|A)=P(B)*P(A|B)\)

  3. 全概率公式、贝叶斯定理……(略)

期望定义

\(E(A)\)

期望性质

  1. \(A\) 是事件, \(C\) 是常数,则 \(E(CA)=C*E(A)\)

    证明:

    \(A\) 的多个随机变量为 \(Ca_1,Ca_2...Ca_n\),对应出现的概率为 \(p_1,p_2...p_n\),则有:

    \[E(CA)=\sum\limits_{i=1}^n*(Ca_ip_i)=C\sum\limits_{i=1}^n*(a_ip_i)=C*E(A) \]

  2. \(A,B\) 任意,则 \(E(A+B)=E(A)+E(B)\)

  3. \(A,B\) 独立,则 \(E(AB)=E(A)E(B)\)

  4. 期望等于所有的方案数的贡献除以方案数

https://www.luogu.com.cn/training/4922#problems

下面是一些经典问题。

票券收集问题1

题意

链接

\(n\) 种票券,每次等概率抽取一张票券,求抽到所有 \(n\) 种票券的抽取次数的期望。

思路 1

如果手上已经有 \(i-1\) 种票券,

\(\large P(取一个票券为新票券)=\frac{n-i+1}{n}\)

\(\large E(取到新票券)=\frac{1}{P(...)}=\frac{n}{n-i+1}\)

则总期望为 \(\large\sum\limits_{i=1}^n\frac{n}{n-i+1}=\sum\limits_{i=1}^n\frac{n}{i}\)

思路 2

期望 DP !!

\(f_i\) 为取了 \(i\) 种票券后,还要取多少票券才能集齐的期望。

显然 \(f_n=0\),考虑逆推

考虑到抽到 \(i\) 种票券后再抽一个是新票券的概率是 \(\Large \frac{n-i}{n}\) ,旧票券概率是 \(\Large \frac i n\),则有方程 \(\Large f_i=\frac{n-i}{n}f_{i+1}+\frac i n f_i+1\)。(加一是因为一定要投一次)。

\[\frac{n-i}nf_i=\frac{n-i}nf_{i+1}+1\\ f_i=f_{i+1}+\frac{n}{n-i}\\ f_i=f_{i+2}+\frac n {n-i-1}+\frac n {n-i}\\ ...\\ f_0=\sum \frac{n}{n-i+1}=\sum \frac n i \]

所以答案为 \(\Large \sum \frac n i\)

票券收集问题2

题意

链接

\(n\) 种票券,每次等概率抽取一张票券,第 \(k\) 次抽彩需要 \(k\) 元钱,求抽到所有 \(n\) 种票券的抽取花费的期望。

解法1

接着“票券收集问题1”的 \(f\)(此时我们需要推出所有的 \(f\) ,用上边的递推式 \(\large f_i=f_{i+1}+\frac{n}{n-i}\)),我们再设计设 \(g_i\) 为取了 \(i\) 种票券后,还要去多少花费才能集齐的期望。

显然当我每抽一次彩,除了这一次抽彩花费的一元之外,我未来购买的票券都会贵一元,所以一共会多出 \(f_i+1\) 元。所以有:

\[g_i=\frac{n-i}{n}(g_{i+1}+f_{i+1}+1)+\frac{i}{n}(g_i+f_i+1) \]

解法2

如果我们买了 \(x\) 张票券,则总花费为 \(\large 1+2+...+x=\frac{(x+1)x}{2}=\frac{x^2+x}2\)

注意到只有 \(x,x^2\) 两个未知量,我们采用 OSU 的维护方法(参见下文经典题目 “OSU”)。

维护 \(c_i\) 为取了 \(i\) 种票券后,还要取多少次的期望; \(d_i\) 为还要取多少次的平方的期望。

\[c_i=\frac{i}{n}c_{i}+\frac{n-i}{n}c_{i+1}\\ d_i=\frac{i}{n}(d_i+2c_i+1)+\frac{i-1}{n}(d_{i+1}+2c_{i+1}+1) \]

最后就是 \(\Large ans=\frac{c_0+d_0}{2}\)

走图1

题意

链接

有边权无向图 \(G\),从 \(1\) 出发到 \(n\),在一个点会等概率选择一个出度并走去下一个点,求到 \(n\) 经过的边权和的期望。(保证从 \(1\) 能走到任何点,任何点都能走到 \(n\))。

解法

\(f_i\)\(i\to n\) 的期望路径长。显然 \(f_n=0\)

那么设 \(i\) 点出度为 \(k\),有 \(f_i=\frac1 k(\sum f_v+w_E)\)

然后拓扑或 dfs 决定更新顺序。

走图2

题意

链接

有无向图 \(G\),求随机选择一条路径走过的边数的期望。

解法

用期望性质4,设 \(sum\) 为所有路径长度总和,\(cnt\) 为路径个数。

那对于每个点, \(f_i\) 为从 \(i\) 开始的所有路径长度总和,\(g_i\) 为从 \(i\) 开始的路径个数,有 \(sum=\sum f_i,cnt=\sum g_i\)

\(f_i=\sum f_v+g_v\) 本有总长为 \(f_v\) 的路径,每条路径都变长加一,一共有 \(g_v\) 条路径。

\(g_i=1+ \sum g_v\) 所有路径加上自己到自己这条路径。

OSU

题意

平方立方

一个长度为 \(n\) 的数列,每一位为 0 或 1,第 \(i\) 位为 1 的概率是 \(p_i\)。对于一段长度为 \(l\) 的、极长的、连续的 1,会贡献 \(l^2\) 的分数。求数列分数总和的期望。

误区

\(x\) 期望的平方不等于 \(x\) 平方的期望!

比如 \(x\) 有一半概率等于 1,一半概率等于 2,则 \(\large E(x^2)=\frac{1^2+2^2}{2}=2.5\);但是 \(\large E^2(x)=(\frac{1+2}{2})^2=2.25\),这显然不可理喻、强词夺理、荒唐错乱、荒谬至极!

理解 1

\(ans_i\) 是以 \(i\) 为结尾的答案, \(f_i\) 是以 \(i\) 结尾的成功连击数的期望。

\[f_i=p_i(f_{i-1}+1)+(1-p_i)0=p_i(f_{i-1}+1)\\ \]

然后对于长度为 \(i\) 的数列,设所有的数列最终状态是集合 \(S\),每一种状态 \(K\) 都可以分成若干个极长的全 1 块,长度分别为 \(r_1,r_2,...r_k\),则有:

\[ans_i=\sum\limits_{K\in S}p_K(r_1^2+r_2^2+...+r_t^2) \]

其中 \(p_K\)\(K\) 这种状态出现的概率。

同时我们也可以重新定义 \(f_i\),有 \(f_i=\sum p_Kr_t\)

所以可以推得:

\[\begin{align} ans_{i+1}&=p_{i+1}\sum p_K(r_1^2+r_2^2+...+(r_t+1)^2) +(1-p_{i+1})\sum p_K(r_1^2+r_2^2+...+r_t^2)(如果i为0则r_t=0)\\ &=\sum p_K(r_1^2+r_2^2+...+r_t^2)+p_{i+1}\sum p_K(2r_t+1)\\ &=ans_i+p_{i+1}(2\sum p_Kr_t+\sum p_K)\\ &=ans_i+p_{i+1}(2f_i+1) \end{align} \]

理解 2

\[(x+1)^2-x^2=x^2+2x+1-x^2=2x+1 \]

相当于每一个 1 会发生 \(2x+1\) 的贡献。

所以 \(ans_{i+1}=ans_i+p_{i+1}(2f_i+1)\)

P3412 - 仓鼠找sugar II

https://www.luogu.com.cn/problem/P3412

我硬点它很经典!

因为没有起点和终点,我们就贡献模式,计算每条边期望经过多少次。

然后树上期望的套路就是:

\(f_u\)\(u\) 走到 \(fa\) 的期望步数,则:(\(d\)\(u\) 的度数,包括父边)

\[f_u=\frac 1 d[(1)+(\sum f_v+f_u+1)]\\\to f_u=d+\sum f_v \]

\(g_u\)\(fa\) 走到 \(u\) 的期望步数,则:(\(v\)\(fa\) 的儿子,但 \(u\ne v\))。

\[g_u=\frac 1 {d_{fa}}[(1)+(g_{fa}+g_u+1)+(\sum f_v+g_u+1)]\\\to g_u=d_{fa}+\sum f_v +g_{fa}\\\to g_u=f_{fa}-f_u + g_{fa} \]

这两个应该是比较经典的吧……可以用这个数据来调试:

input:
2
1 2
1 3
f: 4 1 1
g:-4 -1 -1

然后考虑每一条边 \((u,fa)\),会有 \(siz_u(n-siz_u)\) 条正向边造成 \(f_u\) 贡献、 \(siz_u(n-siz_u)\) 条逆向边造成 \(g_u\) 贡献,这条边就造成 \((f_u+g_u)siz_u(n-siz_u)\) 贡献。


下面是一些杂题。

纯粹容器

题意

链接

\(n\) 个物品排成一列,第 \(i\) 个物品强度为 \(a_i\)。每一秒会随机选择两个相邻的物品相撞,强度较小的那个会破碎,被移除队列(即原本不相邻的物品可能会现在相邻)。求每个物品存活时间的期望。

$O(n^2) $ 解法

\(P(i=x)\) 为某物品存活时间等于 \(i\) 的概率,则显然 \(E=\sum\limits_{i=1}^{n-1}iP(i=x)\)

展开来就是

\[\begin{align}E&=P(1=x)+2P(2=x)+3P(3=x)+...\\&=(P(1=x)+P(2=x)+P(3=x)+...)+(P(2=x)+P(3=x)+...)+(P(3=x)+...)+...\\&=P(1\le x)+P(2\le x)+P(3\le x)+...\\&=\sum_{i=1}^{n-1}P(i\le x)\end{align} \]

重申 \(\large E=\sum_\limits{i=1}^{n-1}P(i\le x)\)

于是设 \(pre\) 为在物品 \(x\) 左边第一个强度比它大的物品, \(nxt\) 为在物品 \(x\) 右边第一个强度比它大的物品。则如果 \(pre\sim x\) 一段物品或 \(x\sim nxt\) 一段物品全部被打碎,则这个物品就碎了。

\(P(A)\)\(pre\sim x\) 全部破碎的概率, \(P(B)\)\(x\sim nxt\) 全部破碎的概率。则 \(P(A\and B)\)\(pre\sim nxt\) 全部破碎的概率。

\(P(i\ge x)=P(A)+P(B)-P(A\and B)\)

\(P(i\le x)=1-P(A)-P(B)+P(A\and B)\) 然后推推柿子就好了。

\(O(n)\) 解法

大佬解法,不会。

CF453A - Little Pony and Expected Maximum

https://www.luogu.com.cn/problem/CF453A

题意

求投 \(n\)\(m\) 面骰子的点数最大值,的期望值。

解法

最大值直接算肯定不好做,所以设现在最大值为 \(k\)

则情况共有 \(k^n-(k-1)^n\) 种,就是全部点数都在 \(1\sim k\) 的方案数,减去全部点数都在 \(1\sim k-1\) 的方案数。

\[ans=\frac{1}{m^n}\sum\limits_{i=1}^m i\times (i^n-(i-1)^n) \]

CF16E - Fish

https://www.luogu.com.cn/problem/CF16E :D

看一眼标签,是状压,于是设 \(f_S\) 为 “\(S\) 这些鱼存活” 这个事件发生的概率。

主动转移,在 \(S\) 中选取两条鱼 \(i,j\),然后让一个吃掉另一个。选取 \(i,j\) 的概率是 \(\Large \frac{1}{\binom{n}{2}}\)\(i\) 吃掉 \(j\) 的概率是 \(a_{i,j}\) ,相乘即可。

P3750 - [六省联考 2017] 分手是祝愿

https://www.luogu.com.cn/problem/P3750

巧妙的 dp!

首先发现从大往小按是对的(可以通过打表发现),然后设 \(f_i\) 为:现在有 \(i\) 个需要按的键位,变到有 \(i-1\) 个需要按的键位的期望步数。

如果按对了,就会变成 \(i-1\) 个需要按的键位;否则变成 \(i+1\) 个需要按的键位。

然后有经典的:

\[f_i=\frac i n+\frac{n-i}n\times (1+f_{i+1}+f_i)\\化简:f_i=\frac{n+(n-i)\times f_{i+1}}i \]

设最优解是 \(x\),那么答案差不多是 \(\sum\limits_{i=m+1}^xf_i\)

总结

dp 的设计状态:从 \(i\)\(n\) 的期望步数;或者从 \(i\)\(i+1\) 的期望步数。

对于 \(f_i\) ,分类讨论它每一种可能对应的状态,然后列出方程式,最后化简(使得可以递推)。

一般采用倒推更合适。

注意, \(f_i=0.5f_{i-1}+0.5f_{i+1}\) X ; \(f_i=0.5f_{i-1}+0.5(f_{i+1}+f_i)\) √。

然后将 dp 方程合并同类项,使得等式左边是 \(f_i\),右边不含 \(f_i\)

posted @ 2021-07-19 21:39  BlankAo  阅读(178)  评论(0编辑  收藏  举报