一起加油吧~|

shiranui

园龄:2年7个月粉丝:17关注:12

2022-11-05 09:30阅读: 282评论: 0推荐: 0

[学习笔记] 概率与期望及其应用

前言

这是一篇初学者的学习笔记,可能有些不准确或者遗漏的地方,还请各位指出。

可以通过 目录 或者 Ctrl + F 寻找所需内容。

点击展开目录

引入 - 蒙提霍尔问题

如果不需要可以跳过。

你正在参加活动。在你面前有三扇关闭的门,其中一扇门后面是奖品,另外两扇门后面是空的。你希望能获得奖品。

在这个题目背景下,有以下几个问题:


你选定了一扇门后直接打开。

此时获得奖品的概率为 13


在你选定了一扇门后,主持人随机打开剩下两扇门中的一扇,如果发现是空的,他会问你是否更换选择。你的决定是?

考虑以下情况:

  • 你最开始选的门为奖励门(概率为 13),在主持人开了空门(概率为 12)后,选择换门。获得奖品的概率为 0
  • 你最开始选的门为奖励门(概率为 13),在主持人开了空门(概率为 12)后,选择不换门。获得奖品的概率为 13
  • 你最开始选的门为空门(概率为 13),在主持人开了空门(概率为 12)后,选择换门。获得奖品的概率为 13
  • 你最开始选的门为空门(概率为 13),在主持人开了空门(概率为 12)后,选择不换门。获得奖品的概率为 0
  • 你最开始选的门为空门(概率为 13),在主持人开了奖励门(概率为 12)后,选择换门。获得奖品的概率为 0
  • 你最开始选的门为空门(概率为 13),在主持人开了奖励门(概率为 12)后,选择不换门。获得奖品的概率为 0

综上,无论换不换门,获得奖品的概率都为 13


在你选定了一扇门后,主持人打开剩下两扇门中的一扇空门,然后他问你是否更换选择。你的决定是?

考虑以下情况:

  • 你最开始选的门为奖励门(概率为 13),在主持人开了空门后,选择换门。获得奖品的概率为 0
  • 你最开始选的门为奖励门(概率为 13),在主持人开了空门后,选择不换门。获得奖品的概率为 13
  • 你最开始选的门为空门(概率为 23),在主持人开了空门后,选择换门。获得奖品的概率为 23
  • 你最开始选的门为空门(概率为 23),在主持人开了空门后,选择不换门。获得奖品的概率为 0

综上,换门获得奖品的概率为 23不换门获得奖品的概率为 13


通过以上问题的讨论,你已经初步接触了概率论。下文会继续讲解相关内容。

1. 事件的概念、运算与关系

1.1 基础概念

1.1.1 随机试验

具有以下特点的试验称为随机试验

  • 试验可在相同条件下重复进行。
  • 试验可能出现多种结果,且试验前已知所有结果的可能性。
  • 无法预测试验出现哪一结果。

通常用 E 来表示随机试验。

举个栗子:

  • E1:摇一次骰子,观察点数出现情况。
  • E2:抛一次硬币,观察正反面出现情况。

1.1.2 基本事件

随机试验中可能出现的每一个结果,也称样本点。记作 ω

举个栗子:

  • 前文 E1 有六个基本事件,其中第 i 个基本事件为出现点数为 i
  • 前文 E2 有两个基本事件,出现正面 和 出现反面。

1.1.3 样本空间

随机试验中所有基本事件构成一个集合,称为样本空间。记作 Ω

举个栗子:

  • 前文 E1 的样本空间为 {1,2,3,4,5,6}
  • 前文 E2 的样本空间为 {,}

1.1.4 随机事件

随机试验中部分基本事件构成一个集合,称为随机事件。随机事件是样本空间的子集。使用大写字母进行表示。

举个栗子:

  • 前文 E1 中出现偶数点数的事件可表示为 A={2,4,6}
  • 前文 E1 中出现奇数点数的事件可表示为 B={1,3,5}

1.1.5 事件发生

当某一事件所包含的基本事件中至少有一个发生,那么该事件发生了。

好像有点废话

1.1.6 必然事件

一定发生的事件。也就是样本空间 Ω

1.1.7 不可能事件

一定不发生的事件。记作 Φ(然而我并不是很清楚这是什么符号,有没有大佬给个解答)


1.2 事件运算

1.2.1 事件的和(并)

事件 A 与 事件 B 至少有一个发生,这个事件称为 事件 A 与 事件 B 的和(并),记作 A+BAB

举个栗子:

A={1,2}

B={3,4,5}

A+B={1,2,3,4,5}

1.2.2 事件的差

事件 A 发生而 事件 B 不发生,这个事件称为 事件 A 与 事件 B 的差,记作 ABAB=A(AB)

举个栗子:

A={1,2,4,5}

B={1,4}

AB={2,5}

1.2.3 事件的积(交)

事件 A 与 事件 B 同时发生,这个事件称为 事件 A 与 事件 B 的积(交),记作 ABAB

1.2.4 推广

事件的和与积可推广到多个事件,而差不可以。

为什么差不可以推广?

和与积的推广长这样:

A+B+C=ABC

ABC=ABC

然而当你计算差时:

ABC=(AB)C=A(AB)C=A(AB)(A(AB)C)

它似乎……不大一样呢?


1.3 事件关系

1.3.1 包含

若 事件 A 发生,那么事件 B 必然发生。

具体表示 AB 或者 BA

注意:ΦAΩ

1.3.2 相等

ABBA,那么 A=B

1.3.3 互斥

若 事件 A 与 事件 B 不能同时发生(AB=Φ),则称 事件 A 与 事件 B 互不相容互斥AB 互不相容意味着 AB 不含公共基本事件。

1.3.4 对立(互逆)

若 事件 A 与 事件 B 发生了有且仅有一个,且 AB=ΩAB=Φ,则称 事件 A 与 事件 B 对立(互逆)。

其中 事件 B 叫做 事件 A 的逆事件,记作 B=A。事件 A 叫做 事件 B 的逆事件,记作 A=B

1.3.5 举例理解

进行三次射击,Ai 表示第 i 次击中。

A1+A2 表示前两次射击至少击中一次

A2 表示第二次未击中。

A2A3=A2(A2A3)=A2A3 表示第二次击中而第三次未击中。


2. 概率

2.1 概率的数学定义

Ω 是随机试验 E 的样本空间,找到一个对应法则,使得 E 的每一个事件 A 都对应一个实数,这记为 P(A)


2.2 概率的性质及应用

2.2.1 概率的性质

  • P(Ω)=1。(正则性)
  • P()=0
  • 0P(A)1。(非负性)
  • A1,A2,A3,...,An,... 互不相容,则 P(i=1Ai)=i=1P(Ai)。(可列可加性)
  • AB=Φ,则 P(AB)=P(A)+P(B)。(有限可加性)(可推广到 n 个互不相容的事件)
  • P(A)=1P(A)
  • P(BA)=P(B)P(AB)
  • P(AB)=P(A)+P(B)P(AB)

应该不用证明吧?


2.3 条件概率

E 为一随机试验,AB 为其中的两个事件且 P(A)>0,那么 P(AB)P(A) 为发生 事件 A 的情况下 事件 B 发生的条件概率,记作 P(B|A)。所以 P(B|A)=P(AB)P(A)。(公式可变形为 P(AB)=P(A)×P(B|A)

举个栗子:

布袋中有 3 个黑球和 2 个白球,每次随机取出一颗球(不放回),求第两次摸到白球的概率。

  • 如果第一次取出了黑球(概率为 35),那么袋子中还剩下 2 个黑球和 2 个白球,第二次摸到白球的概率为 12,该情况的概率为 35×12=310
  • 如果第一次取到了白球(概率为 25),那么袋子中还剩下 3 个黑球和 1 个白球,第二次摸到白球的概率为 14,该情况的概率为 25×14=110

第二次摸到白球的总概率就是 310+110=25

由条件概率公式可推得 P(AB)=P(AB)=P(B)P(A|B)=P(A)P(B|A)

3. 公式与模型

3.1 全概率公式

如果事件 B1,B2,...,Bn 两两互不相容,且和为全集,P(Bi)>0

那么对于任一事件 A 有:。P(A)=i=1nP(ABi)=i=1n(P(A|Bi)P(Bi))

特别地,对于任意两个随机事件 ABA,B 对立),有式子 P(B)=P(B|A)P(A)+P(B|A)P(A)


3.2 贝叶斯公式

B1,B2,... 是样本空间 Ω 的一个划分,则对任一 事件AP(A)>0),有:

P(Bi|A)=P(Bi)P(A|Bi)j=1nP(Bj)P(A|Bj)

上式即为贝叶斯公式,Bi 常被视为导致试验结果 A 发生的”原因“。

贝叶斯公式建立在条件概率的基础上,寻找事件发生的原因。(即大事件A已经发生的条件下,分割中的小事件Bi的概率)


3.3 波利亚瓦罐模型

一个瓦罐中有 n 个黑球和 m 个白球。每次取出一个,记录其颜色,再将它和另外 r 个与它同色的球放入瓦罐中,如此循环。

结论1:第 k 次取到黑球的概率为 nn+m,取到白球的概率为 mn+m

证明

k=1 时,取到黑球的概率为 nn+m,取到白球的概率为 mn+m

假设第 k 次成立。

考虑取到黑球的概率:

P(k+1)=nn+mn+rn+m+r+mn+mnn+m+r=n(n+m+r)(n+m)(n+m+r)=nn+m

取到白球的概率:

P(k+1)=nn+mmn+m+r+mn+mm+rn+m+r=m(n+m+r)(n+m)(n+m+r)=mn+m

由数学归纳法得证。

结论2:无论 a,b(ab) 取什么值,第 a 次与第 b 次同时取出黑(白)球的概率始终相等。

证明

Pa,b(n,m) 为对应的概率,不难求出 P1,b=nn+m×n+rn+m+r

同样考虑数学归纳法。

Pa,b(n,m)=nn+mn+rn+m+rn+2rn+m+2r+mn+mnn+m+rn+rn+m+2r
=n(n+r)(n+m+2r)(n+m)(n+m+r)(n+m+2r)=nn+mn+rn+m+r=P1,2(n,m)

得证。

4. 例题

两道期望DP题。似乎和上文没什么关系???

4.1 绿豆蛙的归宿

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

4.1.1 题目大意

给一张 n 个点 m 条边的有向图,每条边有边权。现从 1 走到 n,每次等概率选取一条边走,求路径总长度的期望。

4.1.2 思路

考虑进行期望DP。

fi 表示从点 i 出发走到点 n 的期望路径长度,答案即为 f1。初始状态 fn=0

反向连边建图,在图上跑拓扑进行转移。

具体地讲,每次取出一个入度为零的点 x,枚举它能到的点 v,在正常拓扑的同时转移,转移式为 fv=fx+w(x,v)degv

4.1.3 代码实现

int n, m;
int last[N], cnt;
struct edge {
	int to, next, w;
} e[N << 1];
void addedge(int x, int y, int w) {
	e[++cnt].to = y;
	e[cnt].next = last[x];
	e[cnt].w = w;
	last[x] = cnt;
}
int deg[N], lne[N]; //deg为拓扑所用的入度数, lne为出边数 
queue <int> s;
double f[N];
void topsort() {
	for (int i = 1; i <= n; i++)
		if (deg[i] == 0) s.push(i);
	while (s.size()) {
		int x = s.front(); s.pop();
		for (int i = last[x]; i; i = e[i].next) {
			int v = e[i].to; deg[v]--;
			f[v] += (f[x] + e[i].w) * 1.0 / lne[v];
			if (!deg[v]) s.push(v);
		}
	}
}
int main() {
	n = read(), m = read();
	for (int i = 1; i <= m; i++) {
		int u = read(), v = read(), w = read();
		addedge(v, u, w); deg[u]++, lne[u]++; //反向建边 
	}
	topsort();
	printf("%.2lf", f[1]);
	return 0;
}

4.2 [NOIP2016 提高组] 换教室

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

4.2.1 题目大意

一共有 n 个时间节点上安排了课程,对于每个时间节点 i,两节内容相同的课会占用 cidi 两间教室。

一般来讲,学生需按时间在 ci 教室完成第 i 节课。但他们也可以通过提交申请尝试更换教室。具体地,申请更换第 i 节课的教室通过的概率为已知实数 ki,如果申请通过,学生就可以去 di 教室上课。

牛牛可以提交最多 m 次申请。由于两教室间的距离和拥堵程度不同,牛牛在前往教室时耗费的体力也不同。当第 i(1i<n) 节课结束后,他会从这间教室沿耗费体力最少的路径前往下个教室。

问申请更换教室后 在教室间移动耗费的体力值的总和 的期望值 最小是多少。

4.2.2 思路

需要知道每两间教室直接的最短路长度时多少。这可以用 Floyed 解决。

然后考虑DP,设 fi,j,0/1 表示前 i 个时间节点换了 j 次教室,第 i 个时间节点 换/没换 教室,耗费的体力值的总和的期望最小是多少。

怎么转移?

fi,j,0=min{fi1,j,0+dis(ci1,ci),fi1,j,1+dis(di1,ci)×ki1+dis(ci1,ci)×(1ki1)}

fi,j,1=min{fi1,j1,0+dis(ci1,di)×ki+dis(ci1,ci)×(1ki),fi1,j1,1+dis(di1,di)×ki1×ki+dis(di1,ci)×ki1×(1ki)+dis(ci1,di)×(1ki1)×ki+dis(ci1,ci)×(1ki1)×(1ki)}

答案即为 mini=0mmin(fn,i,0,fn,i,1)

4.2.3 代码实现

dp转移太长了,代码很丑,见谅~

const int N = 2010, M = 90010;
const double INF = 1e17;
int n, m, cntroom, cntedge, c[N], d[N];
ll dis[N][N];
double f[N][N][2], k[N];
int main() {
	n = read(), m = read(), cntroom = read(), cntedge = read();
	for (int i = 1; i <= cntroom; i++)
		for (int j = i + 1; j <= cntroom; j++)
			dis[i][j] = dis[j][i] = INF;
	for (int i = 1; i <= n; i++) c[i] = read();
	for (int i = 1; i <= n; i++) d[i] = read();
	for (int i = 1; i <= n; i++) scanf("%lf", &k[i]);
	for (int i = 1; i <= cntedge; i++) {
		int u = read(), v = read(), w = read();
		dis[u][v] = dis[v][u] = min(dis[u][v], w * 1ll);
	}
	for (int p = 1; p <= cntroom; p++)
		for (int i = 1; i <= cntroom; i++)	
			for (int j = 1; j <= cntroom; j++)
				dis[i][j] = min(dis[i][j], dis[i][p] + dis[p][j]);
	for (int i = 0; i <= n; i++)
		for (int j = 0; j <= m; j++)
			f[i][j][0] = f[i][j][1] = INF;
	f[1][0][0] = f[1][1][1] = 0;
	for (int i = 2; i <= n; i++) f[i][0][0] = f[i - 1][0][0] + dis[c[i - 1]][c[i]];
	for (int i = 2; i <= n; i++)
		for (int j = 1; j <= min(i, m); j++) {
			f[i][j][0] = min(f[i - 1][j][0] + dis[c[i - 1]][c[i]], f[i - 1][j][1] + dis[d[i - 1]][c[i]] * k[i - 1] + dis[c[i - 1]][c[i]] * (1 - k[i - 1]));
			f[i][j][1] = min(f[i - 1][j - 1][0] + dis[c[i - 1]][d[i]] * k[i] + dis[c[i - 1]][c[i]] * (1 - k[i]), f[i - 1][j - 1][1] + dis[d[i - 1]][d[i]] * k[i - 1] * k[i] + dis[d[i - 1]][c[i]]* k[i - 1] * (1 - k[i]) + dis[c[i - 1]][d[i]] * (1 - k[i - 1]) * k[i] + dis[c[i - 1]][c[i]] * (1 - k[i - 1]) * (1 - k[i]));
		}
	double ans = INF;
	for (int i = 0; i <= m; i++) ans = min(ans, min(f[n][i][0], f[n][i][1]));
	printf("%.2lf\n", ans);
	return 0;
}

参考资料

蒙提霍尔问题(又称三门问题、山羊汽车问题)的正解是什么? - 知乎

第一章, 随机事件 - 帅爆太阳的男人

概率与期望及其应用 - 曹文

全概率公式、贝叶斯公式推导过程 - ohshit

本文作者:shiranui

本文链接:https://www.cnblogs.com/shiranui/p/16858780.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   shiranui  阅读(282)  评论(0编辑  收藏  举报
*/
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起