條件概率,全概率公式,貝葉斯公式
條件概率:在另外一個事件 B 已經發生的條件下,事件 A 發生的概率叫做在 A 對於 B 的條件概率,記作 \(p(A|B)\)。顯然\(p(AB)=p(A|B)p(B)\)。於是有:\(p(A|B)=\frac{p(AB)}{p(B)}\)。
獨立事件:若事件 B 是否發生對事件 A 的概率沒有影響,即\(p(A|B)=p(A)\),則稱事件 A, B 相互獨立 (為獨立事件)。將前面那個式子代入,可以發現若兩個事件A和B獨立,則\(p(AB)=p(A)p(B)\)。換句話說,就是當有A的時候,B事件發生的概率等於無A的時候發生的概率(\(\frac{p(AB)}{p(A)}=\frac{p(B)}{p(\Omega)}\))。用維恩圖來理解:

第一幅圖表示A,B獨立,即\(p(AB)=p(A)p(B)\)。而如果把B往內移動一點,顯然在有A事件發生的情況下,B事件發生的幾率更大了(\(p(AB)/p(A)>p(B)/p(\Omega)\))。因此A,B便不是獨立的了。把B往外移動一點也是如此。
注意獨立事件和互斥事件的概念不同。互斥表示\(p(AB)=0\),獨立表示\(p(AB)=p(A)p(B)\)。也就是說,互斥表示兩個事件不能同時出現,獨立表示兩個事件沒有關系。兩個事件不能同時出現,表示兩個事件是有關系的,也就是說互斥一定不獨立。
完備事件組:若事件\(A_1,A_2,...,A_n\)滿足\((i)A_i\cap A_j=\emptyset\quad(ii)a_1\cap ...\cap a_n=\Omega\),那么它們就是完備事件組。
全概率公式可以輕松推出:\(p(A)=\sum_{i=1}^{n}p(AB_i)=\sum_{i=1}^{n}p(A|B_i)p(B_i)\)(相當於一張大餅)。也有一些特殊形式:\(p(A)=p(AB)+p(A\bar{B})=p(A|B)p(B)+p(A|\bar{B})p(\bar{B})\)。
有 n 個怪物,每只怪物只能活一天,但是每個怪物在那天有 pi 的概率繁殖 i 個怪物 (0 ≤ i < l,且\(\sum_{i=0}^{l-1}p_i=1\)),求 (n 個怪物時為第 0 天) 第 m 天所有怪物都掛的概率。(m, l ≤ 1000)。
我們來看這道題:第m天所有怪物都掛的概率是第m天一個怪物系(也就是一個怪物和它的兒子)掛的概率的n次。以下討論在一個怪物系中的情況:
記第k天所有怪物都掛的概率為\(f_k\),可以知道\(f_1\)就是第0天啥都不繁殖的概率,即\(f_1=p_0\)
考慮k>1的情況,令事件A為所有怪物在第k天全掛,事件\(B_i\)為第0天怪物繁殖i個,可以看出\(B_0, B_1, ..., B_{l-1}\)是\(\Omega\)的一個完備事件組。
可以看出,\(p(B_i)=p_i\),事件\(A|B_i\)表示第一天有i個怪物,結果到第k天全掛了,相當於一直第0天有i個怪物,結果到第k-1天全掛了。這是一個子問題,相當於\(f_{k-1}^i\)!所以根據全概率公式可得:$$f_k=p(A)=\sum_{i=0}^{l-1}p(A|B_i)p(B_i)=\sum_{i=0}^{l-1}f_{k-1}^ip_i$$
這個做法的精髓在於通過全概率公式發現重復子問題。
1 #include <cstdio>
2 using namespace std;
3
4 const int maxday=1005, maxbirth=1005;
5 int t, n, k, m;
6 double f[maxday], p[maxbirth];
7
8 int main(){
9 scanf("%d", &t);
10 for (int tt=0; tt<t; ++tt){
11 scanf("%d%d%d", &n, &k, &m);
12 for (int i=0; i<n; ++i)
13 scanf("%lf", &p[i]);
14 f[1]=p[0];
15 for (int i=2; i<=m; ++i){
16 double now=1; f[i]=0;
17 for (int j=0; j<n; ++j, now*=f[i-1])
18 f[i]+=now*p[j];
19 }
20 double ans=1;
21 for (int i=0; i<k; ++i) ans*=f[m];
22 printf("Case #%d: %.7lf\n", tt+1, ans);
23 }
24 return 0;
25 }
全概率公式有一個好~基~友,叫做貝葉斯公式。全概率公式揭示了一般概率和條件概率之間的關系,而 Bayes 公式揭示了幾個條件概率之間的關系:
\(p(B_k|A)=\frac{p(A*B_k)}{p(A)}=\frac{p(A*B_k)}{\sum_{i-1}^np(A*B_i)}=\frac{p(A|B_k)p(B_k)}{\sum_{i=1}^np(A|B_i)p(B_i)}\)
(好累TwT……)
注意最后面那個分數還可以約來着。
