宝剑升级问题

问题在这里:每使用一个宝石,有50%的概率会成功让宝剑升一级,50%的概率会失败。如果宝剑的级数大于等于5的话,那么失败会使得宝剑降1级。如果宝剑的级数小于5的话,失败没有效果。问题是:期望用多少个宝石可以让一把1级的宝剑升到9级?

记从i级的宝剑升级到i+1级的宝剑需要的宝石数目为E(i)。由于每个级别的升级可以单独分开看,则E(1) + E(2) + E(3) + ... + E(8)的结果即是所需要的宝石数。

个人觉得解决这个问题需要用到极限的思想和递归的思想。让我们先从1级升2级说起

E(1) = 0.5 * 1(失败0次,成功1次) + 0.5 ^ 2 * 2(失败1次,成功1次)+ 0.5 ^ 3 * 3 (失败2次,成功1次)+ ...                  式(1)

这是单纯考虑1级升级到2级所有可能性的思路,并叠加这些可能性。从这个式子可以判定,E(1)背后的这个数列求和是个收敛的确定值。那么单纯使用一颗宝石升级的情况如何呢? 

有0.5的概率成功,此时只需一颗宝石;还有0.5的概率失败,此时不会降级,问题仍然是从1级升级到2级,需要的宝石1 + E(1)颗。也就是:

E(1) = 0.5 * 1 + 0.5 * (E(1) + 1)                       式(2)

解这个等式,可以得到E(1) = 2.

注意这里我们用到的逻辑,首先证明E(1)存在且唯一,接着带入单纯一颗宝石的情况,发现这颗宝石升级失败后,所面临的升级问题仍然和最开始的一样。于是就可以从式(2)直接求出E(1)的结果

在类似的情况里,E(2) = E(3) = E(4) = E(1) = 2

到E(5)时,新出现的问题是升级失败后会退回到4级。

仍然考虑所有可能性的思路,

E(5) = 0.5 * 1(失败0次,成功1次) + 0.5 ^ 3 * C(3, 2) * 3 (失败1次,成功2次) + 0.5 ^ 5 * C(5, 3) * 5 (失败2次,成功3次)+ ...                  式(3)

其中C(n, k)是组合数求解公式。直接计算这个表达式是困难的。但我们所知道的是E(5)存在且唯一。

考虑单纯使用一颗宝石升级的情况,有0.5的概率成功,需要宝石为1颗;有0.5的概率失败,这本身会消耗一颗宝石,然后需要从4级升到6级,也就是E(4) + E(5):

E(5) = 0.5 * 1 + 0.5 * (1 + E(4) + E(5))              式(4)

求解式(4)后有,E(5) = 4.

同理可求得,E(6) = 6, E(7) = 8, E(8) = 10

总共所需宝石数期望为E(1) + E(2) + ... + E(8) = 36颗

原文地址:https://www.cnblogs.com/plank/p/8971896.html