鸡蛋从多少层掉下不破
有一个 100 层的建筑。如果鸡蛋从第 层或更高掉下来就会碎,低于 层就不会碎。给你两个鸡蛋,找到这个 。要求是使得最坏情况下次数最少。
如何找到答案呢?让第一个鸡蛋去大致试一下楼层,第二个鸡蛋精确的去找到 。比如,第一个鸡蛋从 10 层扔下去,没碎,但是从 15 层扔下去碎了,那么 可能是 11,12,13,14 这四层,第二个鸡蛋必须从最小的开始去找,不然的话,碎了后面就没办法实验了。
我们先尝试一下,假设第一个鸡蛋按照 10,20,30 这样子扔。第二个鸡蛋从 这样子扔,最坏情况下, 是 99,那么总共需要 19 次就能得到结果。看起来,是个不错的结果。
最坏情况下次数最少,还能比 19 更少了吗?
我们创建这样一种机制: 1. 完美的负载平衡的系统,不管第一个鸡蛋在哪里碎了,总数是一样的 2. 第一个鸡蛋每多扔一次,那么第二个鸡蛋就要少扔一次。比如,考虑第一个鸡蛋 10 层扔完之后情况。我们尝试 20 层,扔完破了,这一次尝试,第二个鸡蛋最多要扔 9 次找到 。如果没破,那么第一个鸡蛋再次尝试的时候,第二个鸡蛋最多就只能扔 8 次,也就是说第一个鸡蛋下一次应该去试 29 层。 3. 抽象一些,第一个鸡蛋第一次尝试 层,下一次增长量是 层,再然后是 层,直到 100 层。 4. 解出 的值。。可以得到 。
这样能保证最多 14 次,一定能找到 。
其他这样的最优化问题,一个关键思想就是使得最差情况平衡一些,也就是让最坏情况不要变得这么坏。