期望简述

概念

数学期望,简称期望,就是指在实验中事件发生的概率乘以该事件的价值的总和,可以反应随机变量的平均取值大小

离散型变量:若一个变量的值域为一段或几段区间,且该变量的取值是有限或无限个,但是能够按一定次序枚举列出,则称其为离散型随机变量,对应的,它的每个取值的概率 \(p(i)\) 与它的对应取值 \(a_i\) 的乘积之和,即为期望值( \(E(X)\) ),称为离散型随机变量的数学期望,即:\(E(X)=\sum_{i=1}{a_i \times p(i)}\)

连续型变量:在该变量的值域上,无法按照某种次序将这些变量的取值一一列出,则称其为连续型随机变量

性质

  • 一个常量的期望等于它本身(显然,常量被取到的概率为 \(1\)

  • 和的期望等于期望的和,即 \(E(X+Y)=E(X)+E(Y)\) (这个性质最为常用)

  • \(E(CX)=C \times E(X)\) ( \(C\) 为一个常量,\(X\) 为一个事件)

  • \(X , Y\) 为两个相互独立的事件,则有 \(E(XY)=E(X)E(Y)\)

例题

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

题意简述:

有一个长为 \(n+m\)\(01\) 串,其中有 \(n\)\(1\)\(m\)\(0\) ,每次可以进行一次操作,可以将一个 \(0\) 删除,同时将串中剩余的所有 \(0\) 都变为 \(1\) ,或者是将一个 \(1\) 变为 \(0\) ,等概率选择一个位置进行操作,要将该串全部删除,求期望操作次数

分析

首先考虑 \(m=0\) 的情况,那么在串中就只有 \(n\)\(1\) ,进行一次操作,无论选取哪个位置,都会变为 \(n-1\)\(1\) ,以及 1 个 \(0\) ,对于下一次操作,就有 \(\frac{1}{n}\) 的概率选中为 \(0\) 的位置,将其删除,变为含有 \(n-1\)\(1\)\(01\) 串,或者是以 \(\frac{n-1}{n}\) 选中一个为 \(1\) 的位置,将其变为 \(0\) ,但同时,该串中的另一个 \(0\) 就会变为 \(1\) ,仍然为 \(n-1\)\(1\)\(1\)\(0\) 的串,设 \(g(i)\) 为含有 \(i\)\(1\) ,不含 \(0\) 的串,则期望操作数为 : \(g(i) = 1 + \frac{1}{i} \times g(i-1) + \frac{i-1}{i} \times g(i)\)

经过移项整理,我们可以得到 \(g(i) = i + g(i-1) + 1\) ,将 \(g(0)=0\) 代入推导,可得 \(g(i)=\frac{(i+3)\times i}{2}\)

之后,我们考虑 \(m!=0\) 时,设 f(i) 为有 \(n\)\(1\)\(i\)\(0\) 的串需要操作的期望数,显然,我们有 \(\frac{i}{n+i}\) 的概率选中 \(0\) ,将其变为一个 \(n-1\)\(1\)\(i\)\(0\) 的串 ,对该串的期望操作数即为 \(f(i-1)\) ,同时,我们有 \(\frac{n}{n+i}\) 的概率选到一个 \(1\) ,将其变为 \(0\) ,同时将其余的 \(i\)\(0\) 变为 \(1\) ,变为一个 \(n+i-1\)\(1\)\(1\)\(0\) 的串,此时,该串的期望操作数就是 \(g(n+i)-1\)

由此,我们可以得到一般的递推式:设 \(f(i)\) 表示有 \(n\)\(1\)\(i\)\(0\) 的串的期望操作次数,则 \(f(i)=1+\frac{i}{n+i} \times f(i-1) + \frac{n}{n+i} \times (g(n+i)-1)\)\(f(0)=g(n)\)

递推即可

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

题意简述

定义一个图中的一条路径长度为经过的边数,在图中等概率地选择一条路径(路径的起点与终点可以相同),求一个有向无环图的期望路径长度

分析

对于整个图来说,因为期望的和等于和的期望,那么设 \(sum\) 为所有路径长度的总和, \(cnt\) 为路径数量,则期望为 \(E(X)=\frac{sum}{cnt}\)

只需维护以 \(i\) 为起点的路径数及其路径长度总和,记忆化搜索即可

Code

ll a[maxn],b[maxn];//a[]表示以 i 为起点的路径长度总和,b[] 表示以 i 为起点的路径总数
vector<ll> e[maxn];//存图

inline void dfs(ll x)//记忆化搜索
{
	if(b[x]) return ;
	b[x]=1;
	for(int i=0;i<e[x].size();i++)
	{
		ll y=e[x][i];
	
		dfs(y);
		
		(a[x]+=a[y]+b[y])%=mod;
		(b[x]+=b[y])%=mod;
	}
}
posted @ 2020-10-25 17:31  雾隐  阅读(1019)  评论(0编辑  收藏  举报