概率&期望复习笔记
期望值dp其实没什么可怕的,就是一种特殊的目标函数而已。也就是状态的值是期望值,决策是从一个状态出发的所有概率性的后续状态。还有一个常用的技巧就是利用期望值的线性性拆开计算。有不少情况下(特别是等概率期望值),期望值其实就是求和。\(---lester\)
相关论文(本文也相当部分是照抄的):\(2009\) 福建省福州第八中学 汤可因:《浅析竞赛中一类数学期望问题的解决方法》,\(2009\) 安徽省合肥一中 梅诗珂:《信息学竞赛中概率问题求解初探》
(但其实本文主要是基础内容(逃
基本性质
-
期望:有一个随机变量 \(X\), \(E(x) = \sum{i \ Pr(X=i)}\)
-
当随机变量取值 \(1,2....\) 时期望的好算形式:\(E(x) = \sum{Pr(x \geq i)}\)
-
期望的线性性质:证明。并且 \(E(aX)=aE(x)\) 是比较明显的。则:
-
\(E(aX+bY)=aE(X)+bE(Y)。 a,b\) 为常数,\(X,Y\) 可以相关。
-
当两个随机变量 \(X\) 和 \(Y\) 独立且各自都有一个已定义的期望时,有:\(E(XY) = E(X)E(Y)\)
例题
有一个袋子,设其取值是 \(1...m\),摸一次等概率摸出 \(1...m\) 其一,你会一直摸到摸出你喜欢的(未知,但唯一)球,期望摸几次?
其实这就是几何分布:\(Pr(X=k)\) :在 \(n\) 次 \(01\) 试验中前 \(k-1\) 次皆失败 \(0\),第 \(k\) 次成功 \(1\) 的概率。期望就是倒数。
有一个袋子,设其取值是 \(1...m\),摸一次等概率摸出 \(1...m\) 其一,你会一直摸到收集完所有的值,期望摸几次?
路径分步走,一步一期望。每收集到一种新卡,就算做一步咯。具体:
收到第 \(1\) 种新值 每次成功概率 \(1\)
收到第 \(2\) 种新值 每次成功概率 \((m-1)/m\)
收到第 \(3\) 种新值 每次成功概率 \((m-2)/m\)
...... ......
收到第 \(m\) 种新值 每次成功概率 \(1/m\)
令 \(X_i\) 是拿到 \(i-1\) 种值后直到拿到 \(i\) 的步数。由于期望线性,有:
而这个 \(E(X_i)\) 我们是解决掉的上一题,期望就是倒数嘛。求和就是个调和级数,暴力做就是。
有一颗二叉树共 \(n\) 个节点,编号 \(1\) 到 \(n\),每条边长度为 \(1\)。根节点是 \(1\) 号,目标是某个叶节点标记为 \(n\) 号。从 \(1\) 号节点开
始 \(DFS\), 到 \(n\) 号节点停止, 求 \(DFS\) 算法经过路径长度的期望。
注意:回溯步骤也算路径长度
分析:在 \(DFS\) 过程中,当遍历到从根到目标路径上的某个节点时,如果该节点有两个子节点(二叉树中最多两个子节点),则DFS有 \(\frac{1}{2}\) 的概率先访问不在最短路径上的子树(称为“弯路”子树),遍历整个子树后再回溯并继续访问目标方向。遍历一个大小为 \(s\) 的子树(包括子树根节点)需要 \(2s\) 步(每条边遍历两次:向下和回溯)。这样你考虑多走的期望,就是对于最短路径上每个点,有 \(\frac{1}{2}\) 的概率多走 \(2s\),\(\frac{1}{2}\) 的概率多走 \(0\)。答案就是 \(n-1\)!
考虑集合 \(\{1, 2, 3, \dots, n\}\) 的一个随机排列。定义逆序对为满足 \(i < j\) 且 \(a_i > a_j\) 的位置对 \((i, j)\)。求随机排列中逆序对个数的期望值。
逆序对总数为 \(S = \sum\limits_{1 \leq i < j \leq n} X_{ij}\)。期望值为:
对任意固定的 \(i<j\),有 \(E[X_{ij}] = P(a_i > a_j)\)。在随机排列中,位置 \(i\) 和 \(j\) 上的元素 \(a_i\) 和 \(a_j\) 是从 \(n\) 个不同元素中均匀随机选取的两个不同值。由对称性:
且 \(P(a_i = a_j) = 0\),因此:
故 \(E[X_{ij}] = \frac{1}{2}\)。
满足 \(i<j\) 的二元对数量为 \(\binom{n}{2} = \frac{n(n-1)}{2}\),因此:
均匀撒点问题。懒得写了。

有 \(n\) 枚硬币,初始都背面朝上。抛一次,有 \(50%\) 正面朝上,或负面朝上。抛 \(k\) 次,采取最优策略,求硬币最后正面期望个数。
-
期望dp!\(f_{i, j}\) 表示 \(i\) 次未抛,目前 \(j\) 个正面朝上,期望次数。那考虑转移:$$f_{i, j} = (f_{i - 1, j + 1} + f_{i - 1, j})) / 2,\ \ \ \ \ \ \ j < n$$$$f_{i, n} = (f_{i - 1, n} + f_{i - 1, n - 1}) / 2 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $$ \(j=n\) 单拎出来不过因为我先抛背面更优,这时候办不了了。
-
概率dp!\(p_{i, j}\) 代表已经最优策略抛 \(i\) 次,当前 \(j\) 个正面的概率。那答案就是 \(\sum_{j=1}^n{j × p_{k, j}}\)
f[0][0] = 1;
for (int i = 1; i <= k; i ++ )
for (int j = 0; j <= n; j ++ ) {
if (j) f[i][j] += f[i - 1][j - 1] / 2;
f[i][j] += f[i - 1][j] / 2;
if (j == n - 1) f[i][j] += f[i - 1][j + 1] / 2;
}
double res = 0;
for (int i = 1; i <= n; i ++ ) res += f[k][i] * i;
printf("%.2lf\n", res);
两人博弈。你有 \(a\) 元,对方有 \(b\) 元,抛硬币,正面朝上你赢一块,没钱算输。获胜概率?
或者描述成数轴随机游走(醉汉回家)
- \(dp_i\) 当前有 \(i\) 元,获胜概率。
- \(dp_i = (dp_{i-1}+dp_{i + 1}) / 2\)
- \(dp_0 = 0\), \(dp_{a + b} = 1\)
- 解这个方程,\(2 \ dp_i = dp_{i - 1} + dp_{i + 1}\) 这其实是个 等差数列。
- 解得 \(dp_i = \frac{i}{a + b}\)
另一种理解角度:就是每一轮期望收益为 \(0\),那最终期望肯定也是 \(0\)。
由于最后只有两种情况:你赢\(b\), 或者你输掉了 \(a\):
解得 \(p = \frac{a}{a+b}\)。这与我们的分析一致。
两人博弈。你有 \(a\) 元,对方有 \(b\) 元,抛硬币,正面朝上你赢一块,没钱算输。期望次数?
整理后 \(f[a] = a * b\)
还有几道题,其实我懒了。

浙公网安备 33010602011771号