概率期望


概率期望

這是一個挺大的東西,又涉及到dp,又涉及到數學,就不知道咋分類

同時,這也是我最菜的幾部分之一

符號 & 定義 & 基礎知識

符號&定義

概率

\(P(A)\)​ 表示事件 \(A\)​​ 發生的概率。

  1. 對於離散的情況,假設一共有 \(n\) 種情況均勻隨機,其中 \(m\) 種使得事件 \(A\) 成立,那么 \(P(A)=\dfrac{m}{n}\)

因此,“概率”在很多情況下可以看作“計數”

當然,直接考慮概率也有好處,它相當於約掉了很多東西,讓問題處理起來更加方便

  1. 對於連續情況:可以使用面積/體積的比來計算概率

\(P(A|B)\) 表示條件概率,即,我們假設 \(B\) 已經發生的條件下,\(A\) 多少概率發生。

這里 \(B\) 相當於一個大前提,就是說,假設 \(B\) 的條件 已經 被滿足了,\(A\) 多少概率發生。
\(P(A|B)=\dfrac{P(A\cap B)}{P(B)}\)

期望

對於隨機變量 \(x\)\(E(x)\) 表示 \(x\) 的期望。

  1. 對於離散的情況,它的值就是每一種可能值乘以它對應的概率

    如,扔一個標准的骰子,朝上的點數的期望是 \(1\times\dfrac{1}{6}+2\times\dfrac{1}{6}...+6\times\dfrac{1}{6}=3.5\)

    此時也可以認為它的值是:所有方案的和/總方案數

  2. 對於連續的情況,我們可以使用積分等手段計算期望,這里略

基礎知識

注意:以下式子全都可以反過來用,做題的時候思維要靈活一些

概率

\(A,B\) 獨立(即二者互不影響)時:

  1. \(P(A\cap B)=P(A)\times P(B)\)
  2. \(P(A\cup B)=P(A)+P(B)\)

\(\overline{A}\) 表示 “\(A\) 不發生”,則 \(P(\overline{A})=1-P(A)\)

這個式子結合上面兩個式子,可以使用容斥原理計算概率

\(P(A|B)=\dfrac{P(A\cap B)}{P(B)}\) (條件概率)

\(A_1,A_2...A_n\)​ 恰好能覆蓋所有情況(即,完備),對於事件 \(B\)​,\(P(B)=\sum\limits_{i=1}^{n} P(B|A_i)\times P(A_i)\)

這個相當於是一個分類討論,先按 \(A\) 分類,看 \(B\) 在這個條件下多少概率出現

就好比我家里有短裙和短袖,每種紅綠藍三種顏色的各一件,即,一共 \(6\) 件衣服

那我穿紅色衣服的概率就是,穿紅色短袖的概率+穿紅色短裙的概率

期望

\(x,y\) 獨立時,\(E(x+y)=E(x)+E(y)\) (期望的線性性)

這個式子有一個等價的表達,\(E(ax+by)=aE(x)+bE(y)\),其中 \(a,b\) 是任意標量

它在實際使用的時候,可以考慮拆成貢獻的形式,然后對於每一個貢獻獨立,就線性,然后加起來。

比如說逆序對數,可以看成是每有一個 \((i,j)\ :\ i<j,a_i>a_j\)​​​​​​ 就貢獻一次,然后就可以把逆序對拆成每個這樣的貢獻的和,然后和的期望=期望的和,變成 \(\sum\limits_{i<j} P(a_i>a_j)\)

此時,\(E(xy)=E(x)E(y)\) 同樣成立。

對於證明,就把一個數寫成值乘概率加起來的形式,然后代入進去發現兩邊一樣就證完了。

\(x\) 是正整數時,\(E(x)=\sum\limits_{i} P(x\ge i)\)

證明就考慮一下一個 \(P(i)\) 被算多少次就行了,算一算發現這個次數正好是 \(1,2,3...n\)

而對於正整數的情況,期望正好是 \(\sum\limits_{i} i\times P(i)\)\(P(i)\) 應該被算 \(1,2,3...n\) 次,正好一樣,就對了

對於一個命題 \(p\)​​,\(E([p])=P(p)\)​​。換句話說,\([p]\)​ 的真假性,就是 \(p\)​ 為真的概率。很明顯對吧

概率的期望

這個東西也是有意義的。

結合實際問題具體的講,就是:現在我們想要求某個事件 \(A\) 發生的概率 \(P\),有 \(n\) 種可能的情況會發生,第 \(i\) 種情況里面發生 \(A\) 的概率是 \(P_i\)。每種情況還有一個發生的概率,設為 \(Q_i\)。相當於是兩層隨機,先隨機一種情況,一種情況里面是否發生 \(A\) 又是隨機的。

此時 \(A\)​ 發生的概率,可以用全概率公式考慮,就是 \(\sum\limits_{i=1}^{n} Q_i\times P_i\)。而如果我們以事件為研究對象,那這個東西就等於 \(E(P)\),也就是 \(P\) 的期望。

例題&思維方法 I

這是第一部分,暫且比較簡單

(因為這塊參考的課件是比較早的課件,好像是noip的集訓)

poj2151 簡單題

有兩個限制:每個隊都得做至少一個題(設為條件A),並且至少存在一個隊做出來 \(k\) 個題 (設為條件B)

我們要求 \(A\cap B\) 的概率。眾所周知,\(P(A\cap B)=P(A)-P(A\cap\overline{B})\)

為什么這么考慮呢,因為,正難則反嘛。

先看 \(P(A)\) 怎么做。簡單想一下,也得考慮反面做。對於每個隊,考慮拿 \(1\) 減去爆零的概率,就是這一個隊至少A掉一個題的概率。然后由乘法原理,隊之間的概率乘起來,就是同時滿足的方案。

接下來看 \(P(A\cap \overline{B})\)。考慮 \(\overline{B}\) :每個隊A掉的題數都 \(\le k-1\)。由於還需要滿足條件 \(A\),所以相當於每個隊A掉的題都在 \([1,k-1]\) 里面。

考慮這個咋做。此時熟練的選手腦子里已經有一個GF了。先枚舉隊,設 \(f(i)\) 表示這個隊AC了 \(i\) 個題的方案數。那肯定是,在概率數組里選 \(i\) 個“AC的概率”乘起來,然后選 \(m-i\) 個 “不AC的概率” 乘起來。我們發現這很GF,直接GF

設當前這個隊AC第 \(i\) 個題的概率是 \(p_i\)。那很明顯 \(f\) 的OGF,設為 \(F\),就是

\[\prod\limits_{i=1}^{m} (1-p_i)+p_ix \]

最后得到當前這個隊的答案就是 \(F[x^1...x^{k-1}]\)。每個隊的答案乘起來就行了。

朴素的實現是 \(O(nm^2)\) 的。使用分治FFT可以做到 \(O(nm\log m)\),這里略(畢竟是10級算法

這題非常水,但是可以幫助理解概率的“考慮反面”思想,還有條件之間取交,取並的概率的計算。這些是很重要的基礎知識,做完這個題之后也可以想一想。

CF601C Kleofáš and the n-thlon

(神秘名字,誰教教我咋念啊)

題目中,\(k\) 這個人在 \(i\) 比賽里面的排名被設為 \(x_i\)。但由於后面要用 \(x\) ,這里取名叫 \(p_i\)

\(s_i\) 表示第 \(i\) 個人的總得分

我們要求 \(k\) 這個人的排名(定義為小於它的數量+1)的期望。

根據上面期望相關的式子,先轉化一波。要求:

\[E(\sum\limits_{i\neq k} [s_i<s_k])\\ \]

注意到對於某人的某次比賽,排第幾名都是等概率的。又注意到除了 \(k\) 這個人之外的人,沒有本質區別,都可以看做是同一個人,或者說,把兩個人換一下完全不影響。感性理解叫 “都是外人”

根據線性性把這個式子拆開,然后根據人之間的等價性,每一項都是一樣的。於是變為:

\[(m-1)\times E(s_i<s_k),i\neq k \]

\(i\) 任意。我們后面就稱它為“外人”,即,一個不是 \(k\) 的人。

對於 \(i\) 這個人,在第 \(j\) 場比賽里面,排 \(r\) 位的概率都是 \(\dfrac{1}{m-1}\),但是 \(r\) 不能是 \(p_j\)

那它在這一場比賽里,所有可能性構成的OGF就是 \(\sum\limits_{i=1}^{m}[i\neq r]\dfrac{1}{m-1} x^i\)

我們把每一場比賽的這個 OGF 卷一下,\(i\) 次方項就是它總得分為 \(i\) 的方案數。取它的 \([1,s_k)\) 次項和即可。

但是就算拿FFT卷,朴素的復雜度也是 \(O(n^2m\log(nm))\),不太能過。拿分治FFT寫似乎理論復雜度對了,毛估估應該是 \(O(nm\log (nm))\) 的。但是我覺得它應該會很難寫,也不應該是標程。這題的這個范圍似乎在提示我們,復雜度應該是 \(O(n^2m)\)

考慮這一堆GF,它們只有一個空缺,和全 \(1\) 的多項式非常像。

考慮差分。由於它是兩段 \(1\) 組成,所以它的差分應該最多 \(4\) 個位置有值。而多項式這個系數取差分,其實就是卷上一個 \(1-x\),性質非常好:滿足交換律和結合律。也就是說,我們可以先取一堆差分,然后再卷,然后再前綴和做回來,做的順序不影響。

那這樣只有 \(4\)​ 個位置有值,就算是暴力的從 \(1\)​ 到 \(n\)​ 枚舉,每次卷積的復雜度也只有 \(O(4nm)=O(nm)\)​,總復雜度 \(O(n^2m)\)​​​。雖然劣一些,但是好寫

CF712E Memory and Casinos

(暫時是這篇最難的題)

我們發現題目相當於要我們求區間 \([l,r]\),從 \(l\) 點開始走,一出區間就停止,從區間右邊出來的概率。

我們發現它好像有着像鏈表一樣的,能夠 接起來 的性質。對於區間 \([l,p],[p+1,r]\)​,我們從 \(l\)​ 開始,從 \(p\)​ 右邊出來,就會進入 \([p+1,r]\)​ 區間,然后我們再利用這個區間的信息,就可以求出從 \(r\)​​ 右邊出來的概率。

敏感的同學可能會想到線段樹的區間拼接

對!太對了!非常好!

然而,實際情況要復雜一些,因為我們還能跑到下一個區間再回來,再跑過去,再回來...不過能夠想象出來這應該是一個等比無窮求和,畢竟這個概率肯定是一個具體的數,那怎么也得收斂對吧。

我們嘗試寫一寫。對於一個區間,記 \(P\) 表示從 \(l\)​ 開始,一出區間就停止,從區間右邊出來的概率。

假設現在我們要把區間接起來。設有兩個區間 \([l_1,r_1],[l_2,r_2]\),編號 \(1,2\),相鄰(即 \(r_1+1=l_2\))。

我們寫一寫,誒,回來那一部分如何表示?從下一個區間回來,概率可以從反面考慮,是 \(1-P_2\)。但是從 \(1\) 又回到 \(2\),相當於是:從 \(r\) 開始從右邊出來的概率。

同樣考慮反面,我們需要維護的就是,從 \(r\) 開始從左邊出來的概率。設這個概率是 \(Q\)

先考慮 \(P\)​ 如何做:最naive的就是 \(P_1P_2\)​,但光有這一項還不夠,還有 \(P_1P_2\times [(1-P_2)(1-Q_1)]^k\)。那個 \(^k\)​ 表示我們可以任意​的過去,回來,過去,回來...這樣繞圈。

根據這個,有:

\[P=P_1P_2\times \sum\limits_{k=0}^{\infin} [(1-P_2)(1-Q_1)]^k \]

一看,果然是個等比無窮求和。啪的一下寫出,(\(Q\) 那個是同理出來的)

\[P=\dfrac{P_1P_2}{1-(1-P_2)(1-Q_1)},\\ Q=\dfrac{Q_1Q_2}{1-(1-P_2)(1-Q_1)} \]

然后我們可以用線段樹維護這樣的合並。

PS:我准備寫另一篇blog,着重於講這種維護區間出入的線段樹。

例題&思維方法 II

CF1540B Tree Array

首先是一波線性性,變成:枚舉點 \(a<b\)\(b\)\(a\) 前面塗色的概率之和

第一個染色的點,顯然有着本質的區別,這一步枚舉不可避。枚舉第一個染的點,令它為根,記為 \(r\)

\(a,b\) 的 LCA 是 \(L\)。那染到 \(a,b\) 兩點,肯定得先染到 \(L\) 點,然后有兩條分叉,一條沖着 \(a\) 過去,一條沖着 \(b\) 過去。記兩個長度為 \(l_a,l_b\)

接下來咋搞呢?不會整,重新讀一遍題,發現擴展出去每個點都是等概率的,於是,往 \(a\) 方向和往 \(b\) 方向走,概率相同。如果我們只考慮 \(a,b\)​ 兩條路徑,不分叉到別的東西,那可以認為,走任意一邊的概率都是 \(1/2\)

我們發現這個問題和 \(a,b,L\) 已經無關,只和 \(l_a,l_b\) 有關。不妨預處理出 \(f(x,y)\) 表示一條路長 \(x\) 一條路長 \(y\)\(x\) 那一條先被染完,的概率。

容易推出邊界:\(f(x,0)=0,f(0,y)=1\);轉移:\(f(x,y)=\dfrac{1}{2}(f(x-1,y)+f(x,y-1))\)

預處理出這個,枚舉 \(a,b,r\),加一加,\(O(n^3)\)

關於如何去除LCA的那個log:可以預處理出 LCA[r][x][y] 表示以 \(r\) 為根,\(x,y\) 兩點的LCA。這個顯然可以 \(O(1)\) 的推,於是 \(\log\) 就被非常暴力的去掉了

agc028B Removing Blocks

笛卡爾樹 那一篇學術垃圾里有講

如果我們把目光放在期望與概率上(而不是笛卡爾樹),我們注意到這個式子

\(E(dep_i)=\sum\limits_{j} P(j\in anc(i))\)\(anc(u)\) 表示 \(u\) 的祖先。

這個其實也是期望的線性性的轉化。由此可見,期望線性性這一條性質看起來簡單,實際用起來是非常靈活的。

相傳是 E.Space 出的題

有一顆treap,\(n\) 個點權值均勻隨機,求每個點深度的期望,輸出小數,保留7位

由上一個題的結論,就兩個調和加一下就行。調和級數在 \(n\) 比較大的時候可以用 \(n\ln n+\epsilon\) 逼近。

CF605E Intergalaxy Trips

\(E(x)\) 表示 \(x\)\(n\) 的期望距離

一般都會設成“某個點到終點的期望xxx”,因為這樣的好處是,我們可以知道終點的期望值是 \(0\),而且也方便遞推

為啥不設起點呢?這里倒是可以,但是有的題里面我們完全可能繞一圈回到起點然后繼續走,但是到終點是設定上就要停的

腦子里轉兩圈想想發現,對於一個點,出現了若干條邊,我們肯定選 \(E\) 最小的那個點過去,假設我們真的能夠知道過去的這個點 \(E\) 是多少。

那我們怎么知道呢?(ssh隊長的代碼從而直接知道這個值)

繼續想一想,我們跑到的點的 \(E\),肯定比當前點的 \(E\) 小。那對於 \(E\) 超過當前點的,直接不看。也就是說,我們從小到大看所有點的 \(E\) 值。

問題又來了,我不知道它們的 \(E\),我怎么“從小到大”?

注意到 \(E(n)=0\),顯然是最小的,是已知量。我們可以從這個最小值開始擴展,每次找沒擴展的點的最小值,那它肯定是第二小;再找,肯定是第三小...相當於一個動態的計算過程,和dijkstra非常像。

每次找一個新點的時候,已經擴展的點的信息都算好了,假設有 \(k\) 個。我們可以把它們按 \(E\) 值從小到大排序。為表達方便,直接把它們編號 \(1\cdots k\)。那么,

\[E(u)=\left(\sum\limits_{i=1}^{k} E(i)\times p(u,i)\times \prod_\limits{j=1}^{i-1} p(u,j)+\prod_\limits{i=1}^{k} (1-p(u,i))\times E(u)\right)+1 \]

注:

那個 \(+1\)​ 不用多講,就是多走一步

前面一半的 \(i\) 是枚舉能到的點中 \(E\) 最小的點是 \(i\)。既然這樣,肯定是 \(u\)\(i\) 有邊,且 \(u\)\(i\) 前面的點沒有邊,這時候 \(i\) 才恰好能成為最小值。然后它所用的步數期望就是 \(E(i)\)

后面一半是最拉的情況:所有邊都沒有,只能原地tp,還要花 \(1\) 的代價。

這樣轉移一波就行了。復雜度 \(O(n^2)\),解決 \(n,m\le 1000\) 的問題。

如果使用堆優化,可以做 \(n,m\le 10^6\),復雜度 \(O(m\log n)\),和dij一個復雜度。

wf2018 Gem Island

我們要求最后排名前 \(r\) 大的寶石數的和的期望。這里做一個小轉化,我們考慮新增(即,分裂出來)了多少,求出這個之后答案加上 \(r\) 即可。設第 \(i\) 個人的寶石分裂了 \(a_i\) 次,我們要求 \(a\) 數組前 \(r\) 大的和的期望(\(+r\)

對於每個 \(a_i\),我們把它想象成是一個柱狀圖。那我們要求前 \(r\) 高的柱子的高度和。

根據 這個trick,我們考慮這個按列求和,換成是按行求和

我們枚舉行(即,枚舉值) \(x\)​,然后看有多少個 \(a_i\ge x\)​,假設有 \(c\)​ 個。如果 \(c\le r\)​,那無疑,這 \(c\)​ 個數一定被包含在最高的那 \(r\)​​ 個數里面,貢獻直接 \(+c\)​。然而,如果 \(c>r\),那么我們只能取前 \(r\) 高的柱子去貢獻。哪些柱子是前 \(r\) 高的?我們無法確定,但也不用確定,因為我們可以肯定它對答案的貢獻一定是 \(+r\)

即,我們設 \(c_x\)​​​ 表示 \(\ge x\)​​​ 的有多少個。那么對於一種確定的 \(a_i\)​​​,答案為 \(\sum\limits_{i=1}^{\infin} \min(c_x,r)\)​​​

以上是一種比較具體的考慮方法。接下來是比較抽象的。

設前 \(r\) 大的數為 \(a_{p_1},a_{p_2}...a_{p_r}\)。則我們要求:

\[E\left(\sum\limits_{i=1}^{r} a_{p_i}\right)=\sum\limits_{i=1}^{r} E(a_{p_i})\\ =\sum\limits_{i=1}^{r} \sum\limits_{x=1}^{\infin} P(a_{p_i}\ge x)\\ =\sum\limits_{i=1}^{r} \sum\limits_{x=1}^{\infin} E([a_{p_i}\ge x])\\ =\sum\limits_{x=1}^{\infin} E(\sum\limits_{i=1}^{r} [a_{p_i}\ge x]) \]

對於 \(x\),設 \(c_x\) 表示 \(a\) 里面有多少個 \(\ge x\)。由於我們只考慮前 \(r\) 大的,所以對於每個 \(c\) 我們還要把它和 \(r\) 取個 \(\min\)

那我們相當於求 \(E\left(\sum\limits_{x=1}^{\infin} \min(c_x,r)\right)\)

設式子 \(F=\sum\limits_{x=1}^{\infin} \min(c_x,r)\)。由上面期望的變形之一,我們考慮求所有情況下 \(F\)​​ 的和,除以情況數。

考慮:決定 \(c\) 因素是啥?那當然是由 \(a\) 決定。那 \(a\) 滿足什么條件呢?注意到,總共分裂的次數是 \(d\),確定的。那么 \(a\) 的和為 \(d\)。那么我們的問題是,一堆數的和為 \(d\),我們要算,所有可能性的 \(F\) 的和。

於是,我們設 \(f(i,j)\)​ 表示 \(i\)​ 個數和為 \(j\)​,\(F\)​​ 的和。還是依着那個具體的考慮方法,我們每次切掉最下面一行,看看會如何。能夠切掉一行,那得 \(\ge 1\)。於是我們枚舉 \(i'\),表示當前選的 \(i\) 個數里面有 \(i'\)\(\ge 1\) 的。然后我們看這些 \(\ge 1\) 的就能切一行,切一行之后上面的貢獻是 \(f(i',j-i')\) (每個都 \(-1\),和減去 \(i'\))。然后切掉的這一行一共有 \(i'\) 個,貢獻 \(\min(i',r)\)

注意這里貢獻的 \(\min(i',r)\),對於上面的每一種方案都會貢獻一次,所以還要乘一個方案數。方案數就是,\(i'\) 個自然數相加等於 \(j-i'\) 的方案數,即 \(\binom{(j-i')+i'-1}{i'-1}=\binom{j-1}{i'-1}\)

順便別忘了,選這 \(i'\) 個出來還有 \(\binom{i}{i'}\) 種方案。於是,

\[f(i,j)=\sum\limits_{i'=0}^{i} \binom{i}{i'}\times \left(\min(i',r)\times \binom{j-1}{i'-1}+f(i',j-i')\right) \]

這樣解決了對於每種確定 \(a_i\)\(F\) 的和。還要乘一下確定 \(a_i\) 的方案,推一下發現是 \(d!\)\(a_i!\) 抵消了),然后除以總方案數是 \(n^{\overline{d}}\),即可。

雖然這題拆期望的那一步很精彩,但這個題感覺還是更像數數題

NOI2013 樹的計數

同樣,“樹的高度”一看就不好做,想都不想肯定先拆貢獻。

我們考慮把bfs序重排為 \(1...n\),或者說我們按bfs序一一考慮。

然后考慮怎樣會使樹的高度 \(+1\)​。bfs序是一層一層遍歷的,而樹的高度就等同於有多少層。所以我們把bfs序分段,一段代表一層,那么它有多少段,樹高就是多少。那其實我們數這些分段點的數量就行了。

問題轉化問期望有幾個分段點

(接下來就跟期望的關系不大了)

我們想想分段點就什么性質。對於同一層里,dfs序肯定是遞增的。但是當我們換層的時候,這個dfs序就可能會倒回去(即,bfs序大的點dfs序小),也可能不會。不過反過來是成立的:如果dfs序倒回去了,那一定是出現了分層現象。這是充分的。

於是我們稱這些一定要分段的點為 “必分段點”。注意,\(1\) 也是個必分段點。

注意到,對於一條樹邊 \((f,u)\)\(f\) 是父親,那肯定 \(dfn(u)=dfn(f)+1\)\(bfn(u)>bfn(f)\),且 \([bfn(f),bfn[u])\) 之間必須一個分段點。為什么必須一個,因為一條樹邊的深度只會 \(+1\),那就會跨過一層,也就一定會有恰好一個分段點。我們稱這樣的 \([l,r)\) 為“限制區間”

如果一個限制區間里有一個確定好的必分段點,那其它位置肯定都不是必分段點。

反之,如果沒有確定好的必分段點,則 \([l,r)\)​ 間的dfs序遞增。而我們知道它的bfs序恰好是\(l,l+1...r-1\),也是遞增的。兩個序都遞增,只可能是一條鏈。而我們知道,這中間只有一條樹邊。所以 \(r=l+1\),相當於區間 \([l,l]\) 里至多有一個分段點。腦子轉一轉,發現這是廢話。於是,如果 \([l,r)\) 中間沒有確定好的必分段點,那這條件我們直接不看

上述過程確認了哪些點一定是,哪些點一定不是。至於剩下的點,容易發現,分布分段都可以。

對於一個必分段點,對答案貢獻肯定是 \(1\)​。而一個二者皆可的點,對答案的貢獻是 \(\frac{1}{2}\)​​。把所有貢獻都加起來即可。

CTS2019 隨機立方體、氪金手游

這里

怎么只有這么點例題啊

會加上的會加上的qaq

我先去睡一覺(


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM