• 条件概率全概率公式-Tribles


    条件概率,全概率公式,贝叶斯公式

      条件概率:在另外一个事件 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_icap A_j=emptysetquad(ii)a_1cap ...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(Aar{B})=p(A|B)p(B)+p(A|ar{B})p(ar{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
    ", 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……)

    ​ 注意最后面那个分数还可以约来着。

  • 相关阅读:
    取得当前目录下所有文件名
    windows用户态和内核态
    MFC CDialog中控件跨线程访问失败
    Effective C++学习笔记(八)
    Effective C++学习笔记(六)
    Effective C++学习笔记(七)
    Effective C++学习笔记(五)
    Effective C++学习笔记(四)
    Effective C++学习笔记(三)
    Effective C++学习笔记(二)
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/9112981.html
Copyright © 2020-2023  润新知