宝剑升级问题
Posted 板弓子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宝剑升级问题相关的知识,希望对你有一定的参考价值。
问题在这里:每使用一个宝石,有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颗
以上是关于宝剑升级问题的主要内容,如果未能解决你的问题,请参考以下文章