这个思想真是太经典了!
为什么要正向推概率,反向推期望呢?
首先,我们看看什么是条件概率。
事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。
然后,我们再看看什么是贝叶斯公式。
算了,我就不扯了,自己点进去看吧。
现在,正文来了。
拿飞行棋来说,可以先看看HDU 4405 Aeroplane chess=
我写了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。
对于这种结局一定的游戏,求期望应该倒推(我认为我已经说清楚了为什么)
对于有些游戏,结局是无法预判的,只能说结局是某种情形的概率是多少,这种情况自然只能顺推了。
例如 CSU 1725 加尔鲁什·地狱咆哮对阵虚灵大盗拉法姆