概率/期望 DP

这里对概率与期望,及 DP 做一个简单的小结


前置芝士

概率

\(P(A)\) 表示 事件A 发生的概率

  • 非负性:任意事件 \(A\) ,都应有 \(0\le P(A)\le 1\)

  • 规范性:对于必然事件 (\(\Omega\)),有 \(P(\Omega)=1\)

  • 可列可加性:设 \(A_1,A_2,...,A_n\) 为两两不相容的事件,即 \(i\not = j,\ A_i\cap A_j=\emptyset\),有 \(P(A_1\cup A_2\cup,...,\cup A_n)=P(A_1)+P(A_2)+...+P(A_n)\)

注意:\(P(AB)\) 表示 \(P(A\cap B)\),即 \(A,B\) 共同发生的概率

  • 广义加法:\(P(A\cup B)=P(A)+P(B)-P(AB)\)

古典概型

特点:

  • 有限性:所有可能出现的事件有限

  • 等可能性:每个事件发生的概率相等

计算公式:

\[P(A)=\frac m n \]

如果一次实验中可能出现的结果有 \(n\) 个,而且所有结果出现的可能性都相等,那么每一个基本事件的概率都是 \(\frac 1 n\);如果某个 事件A 包含的结果有 \(m\) 个,那么事件A的概率为 \(\frac m n\)

条件概率

  • 定义:\(P(A|B)\) 表示:在 事件B 发生后,事件A 发生的概率

  • 计算公式: \(P(A|B)=\frac{P(AB)}{P(B)}\)

解释为:事件A 与 事件B 的交集事件B 中所占的比例

可以在这里加强理解

全概率公式

用途:将对一个复杂事件 \(A\) 的概率求解,转化为在不同情况下发生的简单事件的概率的求和问题。

  • 定义:如果 \(B_1,B_2,...,B_n\) 满足完备事件组(也就是对样本 \(S\) 的划分),即:

    • \(i\not = j,\ B_i\cap B_j=\emptyset\)

    • \(B_1\cup B_2\cup...\cup B_n=S\)

    则有 \(P(A)=P(A|B_1)P(B_1)+P(A|B_2)P(B_2)+...+P(A|B_n)P(B_n)\)

贝叶斯(Bayes)公式

由条件概率的计算式,我们可以得到:

\[P(AB)=P(A|B)P(B)=P(B|A)P(A) \]

也可以变形为:

\[P(B|A)=\frac{P(A|B)P(B)}{P(A)} \]

期望

\(E(A)\) 表示 事件A 的期望

如果一个随机变量的取值个数有限(比如一个表示骰子示数的随机变量),或可能的取值可以一一列举出来(比如取值范围为全体正整数),则它称为 离散型随机变量

(摘自 OI-Wiki

\(E(A)=\sum_{\alpha \in I(A)} \alpha\ ·P(A=\alpha)\)

  • 期望的线性性:对于任意两个随机变量 \(X,Y\)(不要求相互独立),有 \(E(X+Y)=E(X)+E(Y)\)。利用这个性质,可以将一个变量拆分成若干个变量,分别求这些变量的期望值,最后相加得到所求变量的值。

其中,\(I(A)\)\(A\) 的值域

  • 与概率类似,期望也有全期望公式

\(E(A)=\sum_{\alpha \in I(A)} P(B=\alpha)E(A|(B=\alpha))\)


DP部分

无非是一下三类

  1. 求概率

    这类一般用顺推的方式,也就是从初始状态推向结果

  2. 求期望

    这类有时会采用倒推的方式,从结果推至初始状态

为什么倒推的方法是可行的?在网上看了不少文章都没有严谨的证明,只能通过感性理解:求期望的过程其实大多数情况下都是形成了一棵 DAG,边权就是转移乘上的概率,统计期望就是对所有叶子结点的值求和,而叶子结点的值其实就是树根到结点的边权乘积,那么我们就可以倒过来,将叶子结点上的事件发生的概率看做 \(100\%\),边权不变,因此最后根节点的值与原答案的值相等

倒推的优点:转移时可以直接用 \(E(x)=(E(y)+a_{x,y}) / P(x)\)

  1. 有后效性的 DP

    这部分需要用高斯消元,就是解方程


例题

CF908D New Year and Arbitrary Arrangement

我们先考虑正着推方程:

\(f_{i,j}\) 表示当前序列有 \(i\)\(a\),有 \(j\)\(ab\) 子序列

显然有转移方程:(我们这里令 \(A=\frac{p_a}{p_a+p_b}\), \(B=\frac{p_b}{p_a+p_b}\)

\[f_{i+1,j} += f_{i,j}\times A \]

\[f_{i,j+i} += f_{i,j}\times B \]

但显然,由于 \(f_{i,j}\) 中的 \(i\) 可以无限延伸,使问题变得非常棘手,于是我们开始考虑倒推

我们注意到,当 \(j<k,\ i+j\ge k\) 时,我们这时加一个 \(b\) 就会让序列停止扩展

所以我们就得到 \(f_{i,j},\ i+j\ge k\) 的期望边界:

\[f_{i,j}=A\times f_{i+1, j}+B\times (i+j) \]

这里的 \((i+j)\) 是终止时 \(AB\) 子序列的个数,所以直接转移期望

再将 \(f_{i+1,j}\) 拆开(\(f_{i+1, j}=A\times f_{i+2,j}+B\times (i+j+1)\)

所以有

\[f_{i,j}=A^2\times f_{i+2, j}+AB(i+j+1)+B\times (i+j) \]

一直拆,就会得到一个无限式:

\[f_{i,j}=\sum_{t=0}^{\infty}A^tB(i+j+t) \]

由于这两个公式(最后会证明):

\[\sum_{i=0}^{\infty}p^i=\frac{1}{1-p} \]

\[\sum_{i=0}^{\infty}p^i\times i=\frac{p}{(1-p)^2} \]

因此式子化简为:

\[\begin{aligned} f_{i,j}&=\sum_{t=0}^{\infty}A^tB(j+t)+\sum_{t=0}^{\infty}A^t\times iB\\ &=j+t+\frac{A}{B} \end{aligned}\]

(这里注意到 \(B=1-A\)

边界情况就计算完毕了

对于一般情况,就有 \(f_{i,j}=f_{i+1,j}\times A+f_{i,i+j}\times B\)

最后答案是 \(f_{0,0}\),但由于 \(b\) 也可以无限填,所以有 \(f_{0,0}=f_{1,0}\times A+f_{0,0}\times B\)

但其实移一下项,就会有 \(f_{1,0}=f_{0,0}\)

因此最后答案应输出 \(f_{1,0}\)

代码


公式证明:

  1. \[\sum_{i=0}^\infty p^i=\frac{1}{1-p} \]

不难发现,这就是一个等比数列求和,因此根据错位相减法,令 \(X=\sum_{i=0}^\infty p^i,\ Y=\sum_{i=1}^\infty p^i\),有

\[X-Y=1 \]

又因为 \(Y=p\times X\),所以原式为:

\(\frac{X-Y}{1-p}=\frac{1}{1-p}\)

证毕

  1. \[\sum_{i=0/1}^\infty p^i\times i=\frac{p}{(1-p)^2} \]

原式可以转化为

\[\sum_{i=1}^\infty p^i+\sum_{i=2}^\infty p^i+...+\sum_{i=\infty}^\infty p^i \]

求解每一个 \(\sum_{i=a}^\infty p^i\),根据上面的方法,得到 \(\sum_{i=a}^\infty p^i=\frac{p^a}{1-p}\)

所以原式再一次化为:

\[\frac{p^1+p^2+...+p^\infty}{1-p} \]

结果分式上面又是 \(\sum_{i=1}^\infty p^i\)(注意 \(i\)\(1\) 开始),再代入,就得到

\[\sum_{i=0}^\infty p^i\times i=\frac{p}{(1-p)^2} \]

证毕

posted @ 2022-03-23 20:40  zuytong  阅读(293)  评论(0)    收藏  举报