• 宝剑升级问题


    问题在这里:每使用一个宝石,有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颗

  • 相关阅读:
    pip安装flask问题解决
    GRE新东方推荐学习方法(2010年左右)
    使用eclipse IDE遇到的问题
    2014年互联网大会(商业价值,北京,7月)
    Indexing the World Wide Web: the Journey So Far阅读笔记
    Big Data Opportunities and Challenges(by周志华)论文要点
    spark常用算子总结
    使用Faster R-CNN做目标检测
    Oracle 性能调优 SQL_TRACE
    Oracle 性能调优 10053事件
  • 原文地址:https://www.cnblogs.com/plank/p/8971896.html
Copyright © 2020-2023  润新知