概率 && 期望 DP 入门

Posted song-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了概率 && 期望 DP 入门相关的知识,希望对你有一定的参考价值。

~待填坑~

 

 

先来了解一点儿概率和期望的基本知识:

样本空间.事件和概率

样本空间:样本空间 $S$ 是一个集合,它的元素成为基本事件。样本空间的一个子集被称为事件,根据定义,所有基本事件互斥。

概率:如果有一种事件到实数的映射满足 $P()$,满足:

1.对任何事件,$P(A)>=0$

2.$P(S)=1$

3.对两个互斥事件,$P(Acap B)=P(A)+P(B)$

则可称$P(A)$为事件$A$的概率。上述三条成为概率公理。

 

事件的关系与运算

包含:对于事件$A$与事件$B$,如果事件$A$发生,则事件$B$一定发生,称事件$B$包含事件$A$(或事件$A$包含于事件$B$)。

事件$A$与事件$B$的并事件(和事件):某事件发生当且仅当事件$A$发生或事件$B$发生,记作$Acap B$

事件$A$与事件$B$的交事件(积事件):某事件发生当且仅当事件$A$发生且事件$B$发生,记作$Acup B$

事件$A$与事件$B$互斥:$Acup B$为不可能事件,即$A$事件与$B$事件在任意一次实验中并不会同时发生。

 

条件概率:

定义B的关于A的条件概率(事件A发生条件下,事件B发生的概率)

$P(B|A)={P(Acup B)over P(A)}$

独立:

如果A,B满足$P(A∩B)=P(A)P(B)$,称A,B独立,可以推出$P(A)=P(A|B)$

 

随机变量是随机实验结果变化而变化的变量。有离散型和连续型两种,以离散型为例。

数学期望(或均值),即随机变量在概率意义下的平均值:

$E(X)=sum _1^n X_ip_i$ 

 我们可以把数学期望理解成加权平均值一样的东西,就是对于每种情况将它们的权值和这种情况的概率乘积之和。

 期望的线性性:对于任意随机变量$X$,$Y$满足

$E[ax+by]=aE[x]+bE[y]$

期望的线性性始终成立,无论两随机变量是否成立。

 

是不是W_W? 

 

$Fighting$(实战)

CF280C Game on Tree

题目大意:

给出一颗含n个白点的有根树,每次随机选一个还没有被染黑的节点,将这颗节点和这个节点子树中的所有点染黑。问期望操作多少次后所有点都被染黑。$n<=100000$

根据期望的线性性,计算出每个点被选择的期望次数,然后相加就是整棵树了。

所以对于点x:

$E(x)=1/dep[x]$

对于每一个点,将他黑掉的方式有$dep[i]$种,因为每个点有且只有一次被删掉,所以相当于每个点的权值为1,那么黑掉这个点的概率即为$E(x)=1/dep[x]$

期望的线性性:对于任意随机变量$X$,$Y$满足

$E[ax+by]=aE[x]+bE[y]$

这个性质也就决定了我们在解这个问题时可以将把所有点染黑的期望转化为染黑每个点的期望次数之和。

 

#include<iostream>
#include<cstdio>

#define N 1000000
using namespace std;

int n,phead[N],tot,dep[N];
struct node {
    int to,next;
} e[N];
void add(int u,int v) {
    e[++tot].to=v,e[tot].next=phead[u],phead[u]=tot;
}
double ans;
void dfs(int u) {
    for(int i=phead[u]; i; i=e[i].next) {
        int v=e[i].to;
        dep[v]=dep[u]+1;
        dfs(v);
    }
}
int main() {
    scanf("%d",&n);
    for(int u,v,i=1; i<n; i++) {
        scanf("%d%d",&u,&v);
        add(u,v);
    }
    dep[1]=1;
    dfs(1);
    ans=0;
    for(int i=1; i<=n; i++) ans+=1.0/dep[i];
    printf("%.7lf",ans);
    return 0;
}

 

 

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

 

对于100%的数据 $N<=100000,M<=2*N$

 

对于有向无环图,脑海中会出现一张图,YY一下,到达每个点的概率就是$sum{ 1over 前一个点的出度}$

由期望的线性性可得:经过路径期望总长度=$sum$ 每条边期望经过的次数*边权

因为是有向无环图,每条边期望经过的次数=该起点的期望经过次数*从该起点出发经过该路径的概率

于是问题就转化成了求每个点期望经过次数。很显然,每个点的期望经过次数=$sum $入边的期望经过次数

于是发现与点的期望值是相辅相成的关系,由于是有向无环图,所以拓扑排序即可。

 

 

 

借鉴博客: 1 2 3 4 

以上是关于概率 && 期望 DP 入门的主要内容,如果未能解决你的问题,请参考以下文章

2021陕西省赛 D.Disease(树形dp&期望dp)

2021陕西省赛 D.Disease(树形dp&期望dp)

HDU 4405 Aeroplane chess (概率DP & 期望)

BZOJ 1426--收集邮票(概率与期望&DP)

Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)

LightOJ - 1038(概率&DP)