zoukankan      html  css  js  c++  java
  • 概率与期望入门

    概率与期望入门

    定义

    期望的定义是:

    [mathrm{E}(mathrm{X})=operatorname{Sum}left[mathrm{P}(mathrm{X}=mathrm{i}){ imes} mathrm{i} ight] ]

    通俗易懂的讲就是每种情况出现的概率( imes)这种情况的权值。

    几种常用的处理方式

    当状态转移方式不变时

    如果遇到状态转移方式不变时,这类题就很好做了。

    一道经典例题:

    LOOPS

    在这道题中,对于每一个格子,它能转移到哪些格子都是确定了的。我们知道这个格子(P)的期望有(a的概率转移到格子A,b的概率转移到格子B,c的概率转移到格子C),且(a+b+c=1)

    我们会发现,这个格子的期望(E(P))(a)的概率为(E(A))(b)的概率为(E(A))(c)的概率为(E(A))

    那么根据期望的定义,我们就得知(E(P)=aE(A)+bE(B)+cE(C))。那我们根据依赖的先后顺序依次求解就可以了。

    当转移到的点都为等效点

    A Dangerous Maze (II)这道题中,我们发现一个点的转移方式可能会改变(随着游戏进行禁止某些转移方式),所以上面的方法是不可用的。

    但是我们可以发现,这道题的起点能转移到的点都是等效点(终点),所以我们可以把他们的转移视为一样的。即将起点所有转移的代价这是为转移代价的平均值(转移代价的期望)。

    LightOJ-1342中也用到了这个技巧。

    当状态与状态之间没有明显的线性递推关系

    也就是说,每个状态的答案是独立的。

    所以我们就能把问题分解成很多互不相关的子问题。根据期望线性,每一次的答案就是(sum子问题答案)

    一道例题:LightOJ-1284

    这道题就是把最终的答案拆成每个点期望答案之和。

    压缩相同的状态

    在概率与期望DP中很重要的一个操作是压缩状态。

    举个例子:LightOJ-1248

    如果记录哪些面被甩到过,显然是要炸的。但是我们发现每次甩到不重复的概率只和甩到过的个数有关。所以我们只用记录这个东西就好了。

    LightOJ-1342,是这道题的加强版。其实本质也是一样的,只用开两个维度,记录两种不同骰子面甩到的次数即可。

    几个疑问

    为什么期望概率DP都要倒着DP?

    因为根据期望的定义,一个状态的期望值是(mathrm{E}(mathrm{X})=operatorname{Sum}left[mathrm{P}(mathrm{X}=mathrm{i}){ imes} mathrm{i} ight])。如果我们知道一个状态后面的所有状态的期望值,又知道这个状态通过每种转移方式转移的概率(一般在题目中均直接给出)。我们就能根据期望定义求出这个状态的期望值了。

    相反,如果我们正着DP,我们只能知道状态(A)使用(A ightarrow B)这种转移方式的概率,却不知道状态(B)(A ightarrow B)这种转移方式转移到的概率。(A ightarrow B)这种转移方式的出现概率是(P(A状态) imes P(A选择转移到B))。因为出现这个转移的概率要乘上一个(A)状态的出现概率,所以仔细想想就能发现,这两个概率是完全不同的。


    DP状态的定义没有任何改变。只是每个状态的值代表这个状态后面产生的期望。

  • 相关阅读:
    vue学习之路 —— vue+mock 前后端分离随机生成数据
    angular companent 组件
    分享到QQ空间
    web测试实践
    白盒测试实践-day....
    白盒测试实践-day...
    白盒测试实践-day..
    白盒测试实践-DAY.
    白盒测试实践
    白盒测试实践-DAY1
  • 原文地址:https://www.cnblogs.com/GavinZheng/p/11801178.html
Copyright © 2011-2022 走看看