(概率DP)正向推概率,反向推期望

来源:互联网 发布:php后端是什么 编辑:程序博客网 时间:2024/05/17 04:38

这个思想真是太经典了!

为什么要正向推概率,反向推期望呢?

首先,我们看看什么是条件概率。

事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。

然后,我们再看看什么是贝叶斯公式。

算了,我就不扯了,自己点进去看吧。

现在,正文来了。

拿飞行棋来说,可以先看看我的博客,我写了3种方法算从0到n的平均步数,很明显,最后那个逆推的算法比前面2个顺推的算法要简单的多。

举个例子,假设n=20,m=0(即没有飞行线)

先看倒推。假设你已经在第10格了,那么你下面会有6种情况,11,12,13,14,15,16,你会以各自1.0/6的概率到底每一个格子。

所以

times[i] = (times[i + 1] + times[i + 2] + times[i + 3] + times[i + 4] + times[i + 5] + times[i + 6]) / 6 + 1

再看看顺推有什么不一样???

假设你想要到达第10格,那么你仍然有6种方案,从4到10,从5到10,从6到10,从7到10,从8到10,从9到10,

但是这6种方案的概率不是1.0/6  !

为什么会这样呢?

因为,飞行棋我们都知道,有些格子是到不了的,就是说你跳过去了,没有经过它。

所以说,能够到达每个格子的概率都是一个常数,但是这个常数很复杂,几乎没什么规律。

简单的说,假设能够到达4的概率是0.99,能够到达5,6,7,8,9的概率都是0.0001,

再假设从0到4平均要2步,从0到5,6,7,8,9的平均步数都是4步(请忽略我这个假设能否对应到真实的情况)

那么,到达10之前很可能就是从4跳过来的,那么到达10的平均步数就是大约3。


对于这种结局一定的游戏,求期望应该倒推(我认为我已经说清楚了为什么)

对于有些游戏,结局是无法预判的,只能说结局是某种情形的概率是多少,这种情况自然只能顺推了。例如,请看我的博客

2 0
原创粉丝点击