zoukankan      html  css  js  c++  java
  • 条件概率全概率公式-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……)

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

  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/9112981.html
Copyright © 2011-2022 走看看