引入问题
如果一个事件 (X) 有 (p in [0, 1]) 的概率成功,那么就有 (1-p) 的概率失败,如果失败了就再次执行 (X) 事件。问 (X) 事件期望的操作次数。
问题求解与证明
因为 (p = 0) 的时候,不存在成功的情况,所以不进行考虑。
对于 (p in (0, 1]) 的时候,很容易知道期望的操作次数是 (displaystyle frac{1}{p}) ,那如何证明呢?
无限和式
有一种很显然易见的解决办法就是无限和式。
考虑枚举在第几次成功了,那么贡献如下。
不难发现 ((1 - p) in [0, 1)) 所以这个序列是一个收敛到 (0) 的无穷序列(因为 (i + 1) 的增长速度远小与 ((1 - p)^i) 的减小速度)
然后考虑这个式子如何求和,依然是扰动法。
令
那么有
所以只需要求出
这个也是很容易通过扰动法求出的。(也可以套公式,然后 (a_{infty} ightarrow 0) 所以直接忽略就行)
((6) - (7)) 就有
然后 ((3)-(5)) 就变为
所以最后的 (E_{X}) 为 (displaystyle p imes frac{1}{p^2} = frac{1}{p}) ,证毕。
根据期望方程求解
Hometown 告诉了我一个很巧妙且简短的做法。
可以设出一个期望方程为
其意义为有 (p) 的概率直接在这步成功,剩下 (1 - p) 的概率失败,需要花费 (E_X + 1) 的期望成功。
那么就有
所以结论成立,证毕。
概率生成函数
看了 ( ext{YMDrangon}) 论文后,意识到这个问题其实就是个经典的掷骰子问题,可以利用概率生成函数解决。
令 (f_i) 为结束时尝试了 (i) 次的概率,其概率生成函数为 (F(i)) 。令辅助数列 (g_i) 为随机序列长度达到 (i) 还未结束的概率,其普通生成函数为 (G(i)) 。
然后我们把 ((16)) 两边求导并代入 (x = 1) 有 (F'(1) = G(1)) ,同样把 (x = 1) 代入 ((17)) 有 (displaystyle F'(1) = G(1) = frac{1}{p}) ,得证。
总结
其实不仅仅是针对这个经典模型来说,对于大部分无限期望的模型这两种方法依然成立。
第一种方法,需要较为细致的数学推理以及对于无限和式的求值方法的掌握。
第二种求法,只需要精巧的列出方程求解就行了。
第三种求法,对于所有的掷骰子模型都有较大作用,并且扩展性较大比较推荐。
其实我就只是复习了一下无限和式的推导方法而已。。。数学课上无聊随便推了一下。。
其实不会证明,大概率也是可以猜出结论的。
无限期望 or 概率如果是收敛的话,常常最后的表达式通常是十分精巧的,能用这三种方法进行推导和证明。