概率与期望

定义

\(E(x) = \sum_{s\in x}P(s) \times V(s)\)

基本性质

线性,\(E(aX + bY) = aE(x) + bE(Y)\)

通俗地来说,多事件叠合而成的复杂事件的期望可以拆分成若干简单事件的期望与其概率的乘积。

基本技巧

通过期望的线性性质,对问题进行拆分、求解。

通过期望的线性性质,进行动态规划。决策性问题中,\(f(i)\)一般代表当前状态为\(i\),到达终态的期望。

例题1

题意

给定\(n\)张扑克牌,每张牌的价值为\(a_i\)。保证\(n\)为偶数。小M会从中随机选取\(\frac{n}{2}\)张牌,剩余的\(\frac{n}{2}\)张留给小D。

共进行\(\frac{n}{2}\)轮游戏。在每轮游戏中,小M和小D从自己的牌中随机抽取1张牌比较价值大小,再丢弃它们。

每轮游戏计分规则是,若小M​的价值严格大于小D的价值,则小M积1分;否则小D积1分。

询问游戏进行完之后,小M和小D得分的期望乘\(n!\)再模\(10^9+7\)的结果。\(1 \leq n \leq 10^5\)

题解

典型的期望题。如果你直接根据原始公式对所有终态与价值的乘积求和,复杂度分分钟爆炸。

考虑期望的线性性质。对答案进行贡献的实际上是各个元素,且每个元素在终态中都会恰好出现1次。考虑从每个元素的贡献入手。具体地,我们规定点对\((x,y)\)中只有左边的点\(x\)进行贡献,若\(x > y\)则贡献给小M,否则贡献给小D。依次考虑各个元素\(a_i\),它有\(\frac{1}{2}\)的概率作为左边的\(x\),与它组合的\(y\)\(n - 1\)种;设其它点中小于\(x\)的点有\(a\)个,则\(x\)\(\frac{a}{n - 1}\)的概率为小M贡献1分,有\(\frac{n - 1 -a}{n - 1}\)的概率为小D贡献1分。由此得知,终态中小M得分的期望为\(\sum_{i = 1}^{n}\frac{CntLess(i)}{2(n - 1)}\);小D得分的期望为\(\sum_{i = 1}^{n}\frac{CntGeq(i)}{2(n - 1)}\)

复杂度瓶颈在于求解小于\(a_i\)的元素个数,排序即可,\(O(nlogn)\)代码见此

相关练习 SMOJ 2823

题意:给定\(n\)个玩具,\(p_i\)表示第\(i\)个玩具一开始就被发现的概率。给定1个邻接矩阵,\(Clue[i][j] = 'Y'\)代表若发现了玩具\(i\),则一定可以发现玩具\(j\)。询问发现的玩具总数的期望。\(1 \leq n \leq 50\)

题解:与例题相类似,如果我们枚举哪些元素一开始即被发现,复杂度是会爆炸的。考虑各个玩具的贡献。1个元素能为答案贡献1,仅有两种情况:1种是它一开始即被选中;另1种是它一开始未被选中,通过其它关系间接地被选中。可以想到间接选中的路径也很多,逐一考虑复杂度依旧爆炸;考虑求补集,即求解该元素不被选中的概率,即为所有与\(i\)联通的点不被选的概率的乘积\(rp\)\(1 - rp\)即为元素\(i\)贡献\(1\)的概率,求和即可。时间复杂度\(O(n^3)\)代码见此

例题2

题意

给定一棵点数为\(n\)的树,每个点有点权\(v_i\),每条边\(j\)出现的概率为\(p_j\)\(q\)次询问,每次询问点\(x\)所在的联通块的 点权的和 的平方 的 期望。\(1 \leq n ,q \leq 2 \times 10 ^5\)

题解

涉及到联通块大小,框架是先考虑\(x\)为树根的情况(联通块大小只需累计各个子树),再考虑换根求解。

问题的关键在于转移。首先当父子边能出现时子树才能贡献,其次是贡献不能简单地累加。具体地,两子树的点权和分别为\(a、b\),合并后的所求为\((a + b)^2 = a ^ 2 + b^2 + 2ab\),故应维护\(f(i)\)表示以\(i\)为根的子树的点权和的平方的期望,\(g(i)\)表示以\(i\)为根的子树的点权和的期望。换根只需要将\(fa(i)\)除了\(i\)这棵子树的贡献计入\(i\)的答案中。时间复杂度\(O(n)\)代码见此,(原题中的\(v_i\)要另求)。

相关练习 luogu 4316

题意:给出一个有向无环图,起点为\(1\)终点为\(n\),每条边都有\(1\)个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。 到达每一个顶点时,如果有\(k\)条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为\(\frac{1}{k}\) 。 现在绿豆蛙想知道,从起点走到终点的所经过的路径总长度期望是多少?

题解:设计\(f(i)\)表示从\(i\)点到达终点的路径总长度期望。边界是\(f(n) = 0\),所求为\(f(1)\)。先求出原图拓扑序,从后往前访问进行转移,\(f(u) = \frac{1}{Out[u]} \times \sum{w(u,v) + f(v)}\)。时间复杂度\(O(n)\),[代码见此](https://github.com/littlewyy/OI/blob/master/luogu 4613.cpp)。

杂题

题意

给定1个长度为\(n\)的数列\(a\)。进行若干次操作,每次操作在\([1,n]\)中等概率选择\(1\)\(a_i > 0\)\(i\),并将\(a_i\)减少1。询问将\(a_1\)减到\(0\)的期望操作次数。\(1 \leq n ,a_i \leq5 \times 10^5\)

题解

原问题中的操作在整个序列中进行,求期望需要对整体考虑,复杂度一定是指数级别的。

根据期望的线性性,考虑将其拆分成各个元素的期望。全局问题中我们需要考虑当前剩下的元素个数,每1步的概率都与此相关;而单个问题中,\(a_2 \rightarrow a_n\)各自独立,只需要考虑它们各自与\(a_1\)的关系进行\(dp\)。具体地,\(a_1\)的期望次数一定为\(a_1\);设\(f(i)(j)\)表示\(a_1\)当前为\(i\),另1元素当前为\(j\),直到\(a_1\)变为0时,对另1元素的期望操作次数。所求即为\(a_1 + \sum_{i = 2}^{n} f(a_1)(a_i)\)。时间复杂度\(O(n^2)\)

不难发现递推式非常简单,考虑通过数学方法化简,求出通项公式。

具体地,转移式仅存在\((i - 1,j)\)\((i,j - 1)\)两种情况,可以视为坐标轴上的随机游走;在到达坐标轴时游走停止。若停留在\((0,a)\)贡献为\(j - a\);若停留在\((a,0)\)则贡献为\(j\)

考虑枚举游走的终点,结合组合数求解方案数。

具体地,若终点为\((0,a)\),枚举第2维上游走的距离\(x\),则方案数为\(\sum_{x = 0}^{j - 1}C_{i + x}^{i}\)。若终点为\((a,0)\),枚举第1维上游走的距离,则方案数为\(\sum_{x = 0}^{i}C_{j + x}^{j}\)。结合某个神奇组合数公式\(\sum_{i = 0}^{n}C_{i}^{j} = C_{n + 1}^{j + 1}\),可将\(f(i,j)\)化简。
$f(i,j)=\frac{\sum_{x = 0}^{j - 1}C_{i + x}^{i}x}{C_{i + j}^{i + 1} + C_{i + j + 1}^{j + 1}} + j(1 - \frac{C_{i + j}^{i + 1}}{C_{i + j}^{i + 1} + C_{i + j + 1}^{j + 1}}) $

然而不对?\(Solution\)给出的式子是\(\sum_{i=0}^{a_i-1}i*\frac{a_1-1+i\choose i}{2^{a_1+i}}+a_i(1-\sum_{i=0}^{a_i-1}\frac{a_1-1+i\choose i}{2^{a_1+i}})\)

不好意思我到现在也搞不懂是为什么。希望某年某月我能懂吧。

所求为\(f(a_1,a_i)\),故只需考虑\(i\)不变,仅\(j\)改变时,\(f(i,j)\)的递变情况。不难发现\(f(i,j)\)的改变量仅有1项,\(O(1)\)转移即可,时间复杂度\(O(n + a)\)代码见此

posted @ 2019-11-05 14:00  littlewyy  阅读(471)  评论(0编辑  收藏  举报