数学总结 4(概率与期望相关)
零、目录
OI-Wiki 概率 DP。
CF 学习资料 1。
CF 学习资料 2。
期望经典问题入门。
感觉定义类的东西比较少,所以文章篇幅短了很多。
- 解方程
- 期望线性性
一、解方程
解期望方程
给定一张无向图,要求从 \(1\) 走到 \(n\)。对于每条边 \((u,v)\),有 \(p_{u,v}\) 的概率经过这条边,边权为 \(w_{u,v}\),求从 \(1\) 开始随机游走到达 \(n\) 点的期望距离。
保证 \(\forall u, \sum\limits_{v=1}^{n} p_{u,v} = 1\)。
设 \(f_u\) 表示游走到 \(u\) 的期望距离。
则显然有:
如果图是无环的直接 dfs 就可以做了,如果有环加个高斯消元就解决了。
解概率方程
给定一张无向图,有一些点被称为“终点”。对于每条边 \((u,v)\),有 \(p_{u,v}\) 的概率经过这条边,求从 \(1\) 开始随机游走最后在每个点停留的概率。
保证 \(\forall u, \sum\limits_{v=1}^{n} p_{u,v} = 1\)。
直接解概率行不通,考虑转化为期望求解。
具体地,设 \(f_u\) 表示经过 \(u\) 的期望次数,则终点只会被经过一次,它的概率等于期望。
所以直接求解 \(f\) 即可。
特殊地,如果 \(v = 1\) 则 \(f_v\) 需要 \(+1\)。
例 1:洛谷 P2973 USACO10HOL Driving Out the Piggies G
在一个点爆炸的概率相当于它的期望经过次数 乘上 爆炸概率,即每次经过都有概率爆炸。
考虑证明:爆炸概率 \(\Rightarrow\) 期望爆炸次数(因为爆炸状态只有 \(0\) 或 \(1\))\(\Rightarrow\) 期望经过次数 \(\times\) 爆炸概率。
例 2:CF113D Museum
第一眼看到 \(n \leq 22\) 就被诈骗了,下意识地认为是 \(2^n\) 相关做法。
事实上和解概率方程是类似的,考虑把两个人所在的点组成一个二元组 \(u = (x,y)\),相同地有 \(v=(xx,yy)\),考虑 \(u,v\) 之间的转移关系,其中 \(u_0=(x,x)\) 是终点。
然后高消就做完了。
例 3:CF1823F Random Walk
朴素方程是简单的,但是它需要高斯消元 \(O(n^3)\) 挂飞了。
考虑树上消元的经典套路:把 \(f_u\) 表示为 \(f_u = A_u \times f_{fa_u} + B_u\) 的形式,更加本质地说,就是用一个未知量表示所有方程。
考虑令 \(T\) 为根,这样直接省去了判 \(v=T\) 这事,然后把 \(fa\) 分离出来:
把 \(f_v\) 转化成一次函数形式:
于是可以 dfs 求出 \(A,B\) 数组了,至于 \(f\) 再 dfs 一遍即可。
例 4:CF24D Broken robot
一个很蠢的做法是直接暴力推转移式然后高消,复杂度达到了高贵的 \(O((nm)^3)\)。
稍微不那么蠢一点的做法需要一点注意:每一行的值只会和它下面一行有关,因此从下往上做,只保留两行的信息,把下一行当常数,这样就只需要高斯消元一行,复杂度 \(O(nm^3)\)。
然后不难发现一行的情况其实和上一题是差不多的,可以把它看成一条链的特殊情况,也是一个未知数表示全局,就做完了。
谴责一下洛谷题解除了一篇神奇收敛,其它都是注意到高消矩阵非常稀疏,结果就是代码都巨丑。Code.
二、期望线性性
设 \(X\) 表示一个随机变量,\(E(X)\) 表示 \(X\) 的期望,那么有:
\(E(X_1+X_2) = E(X_1)+E(X_2)\)
即期望的和等于和的期望,且不要求 \(X_1,X_2\) 互相独立,可用于有依赖的随机变量。
\(E(X_1X_2)=E(X_1)E(X_2)\)
这个式子只在 \(X_1,X_2\) 互相独立的时候才成立。
例 5:洛谷 P3232 HNOI2013 游走
一条边的贡献等于它的期望经过次数乘上它的边权。
而且一条边的贡献只和它的两个端点有关,由于 \(m \leq 125000\) 所以显然不能直接对边硬维护。
转化成点:求每个点期望经过次数,记为 \(f_i\)。
则对于一条边 \((u,v), u \not= n\),有 \(f_u = \sum\limits_{v} \frac{f_v}{deg_u}\),特殊地 \(f_1\) 要加 \(1\) 因为它是起点。
这东西显然可以高斯消元解决掉。
接着考虑一条边 \(u,v\) 的期望经过次数:也就是先到达 \(u\) 再经过或先到达 \(v\) 再经过,即 \(\frac{f_u}{deg_u} + \frac{f_v}{deg_v}\)。
接着分配编号贪心即可,按照期望经过次数从大到小分配从小到大的编号。
期望线性性:总分的期望等于 每条边期望经过次数 乘上 边权 之后求和。
例 6:CF GYM104324 Lost in the Jungle
多组询问,求树上 \(S\) 走到 \(T\) 的期望步数。
对于单组询问是简单的,就是经典的树上消元问题,以 \(T\) 为根把 \(f_i\) 表示为 \(A_i \times f_{fa} + B_i\) 的形式。
对于多组询问,考虑拆分成路径上每一条边的贡献再加起来,这里用到了期望线性性。
具体地,对于路径上每一条边 \(u \to v\),求出 \(u\) 开始游走第一次到达 \(v\) 的期望步数 \(w(u,v)\),对于一组询问 \(S \to T\) 等价于求单向路径和。
然后推式子:
其中 \(0\) 表示一步走到 \(v\),其余的表示先走到 \(t\) 再走回来。
化简得:
考虑扔到有根树上,这东西其实就是 \(u\) 子树度数和:
所以分别对往上走、往下走求边权即可,树上 LCA、前缀和 \(O(q \log n)\)。
例 7:CF1187F Expected Square Beauty
考虑如何求 \(E(B(x))\),这是简单的,当 \(a_i \not= a_{i-1}\) 时会对段数有 \(+1\) 贡献,所以根据期望线性性只需要求每个下标分别对答案的期望贡献即可。
显然是否满足 \(\not=\) 只有 \(0,1\) 两种贡献,所以期望等于概率,即 \(E(i) = \frac{s(i,i-1)}{len_i \times len_{i-1}}\),其中 \(s(i,i-1)\) 表示区间交集长度。
然后如何求平方的期望?
显然地,可以转化为二维枚举:\(\big(\sum\limits_{i=1}^{n} [a_i \not= a_{i-1}] \big) \big(\sum\limits_{j=1}^{n} [a_j \not= a_{j-1}] \big)\)。
根据期望线性性,有:
- 当 \(i=j\) 时,由于贡献只有 \(0,1\),因此期望仍然是 \(E(i)\)。
- 当 \(|i-j| \gt 1\) 时,两者显然互相独立,所以 \(E(i,j) = E(i) \times E(j)\)。
- 当 \(|i-j| = 1\) 时,两者相邻。此时一定会形成长度为 \(3\) 的连续段 \(i,i-1,i-2\),需要计算满足 \(a_{i-2} \not= a_{i-1}, a_{i-1} \not= a_i\) 的期望。
- 考虑容斥:\(len_i\times len_{i-1} \times len_{i-2}\) 减去 \((i-1,i)\) 相等的期望,减去 \((i-2,i-1)\) 相等的期望,加上 \((i-2,i-1,i)\) 都相等的期望。
例 8:CF457D Bingo!
\(2^t\) 里面其实暗含了一个组合意义,即全黑行列任意选择子集的方案数。
所以反过来考虑一个被选择的行列子集,有多少种可能成为全黑行列的子集。
考虑枚举是几行几列:
\(t\) 是被黑色方格数量,即 \(t= (i+j)n - ij\)。
其中 \(C_{m}^{n^2}\) 先选出那些数在网格内,\(C_n^i, C_n^j\) 选择行列,\(C_{m-t}^{k-t}\) 表示除了全黑行列其它可以任意选,\(C_m^k\) 表示总选数方案数。
然后直接计算即可,但是良心的出题人卡了精度,因此要利用 log 和 exp 转化成指数加减运算,还是挺玄学的。
例 9:CF235D Graph Game
考虑树上问题。
这是简单的,对于二元组 \(u,v\) 计算当 \(u\) 被删除时 \(v\) 和它在同一个连通块内的概率 \(w(u,v)\),由于只有 \(0,1\) 两种贡献所以期望等于概率。
概率怎么求?设 \(t=dist(u,v)\),则概率显然为 \(\frac{1}{t}\),因为 \(u\) 要成为整条路上第一个被删的,\(v\) 才会有贡献,反之则路径被断开。
所以答案就是 \(\sum\limits_{u=1}^{n} \sum\limits_{v=1}^{n} \frac{1}{dist(u,v)}\)。
基环树同理,如果 \(u,v\) 没有经过环,概率还是一样。
否则路径在环外的部分概率仍然不变,我们设环外的点数(包括接入环内的那两个点)为 \(len\)。
然后在环上有两种路径可以走,设它们的点数(不包括两个接入点)为 \(l1,l2\)。
则概率容斥一下即可:\(\frac{1}{len+l1} + \frac{1}{len+l2} - \frac{1}{len+l1+l2}\)。
注意当 \(u=v\) 的时候概率为 \(1\),也要加上。

浙公网安备 33010602011771号