从建筑物扔鸡蛋

时间:2013-07-01 12:36:16

标签: algorithm binary-search

这是Robert Sedgewick的算法第4版的练习题1.4.24。

Suppose that you have an N-story building and plenty of eggs. Suppose also that
an egg is broken if it is thrown off floor F or higher, and unhurt otherwise.
First, devise a strategy to determine the value of F such that the number of
broken eggs is ~lgN when using ~lgN throws, then find a way to reduce the cost to
~2lgF.

虽然lgN解决方案很容易想到,但我完全不知道2lgF解决方案。无论如何,我们没有给出F的值,那么2lgF解决方案的基础是什么?

任何人都可以对这个问题有所了解吗?感谢。

2 个答案:

答案 0 :(得分:18)

logN:从顶部开始,始终将搜索空间减半 - >二元搜索

2 * logF从1开始,接下来的2,4,8(即2 ^ i),一旦蛋中断(在日志F步骤之后)在较小的搜索空间中进行二分搜索(范围

答案 1 :(得分:5)

lg(F)解决方案是1, 2, 4, 8, ...,直到第一个鸡蛋在2^(k+1)处中断,然后在2^K2^(k+1)范围内进行二元搜索。

另一种方法是执行相同的过程,直到第一个鸡蛋在2^(k+1)处断裂然后重新开始,除了将2^k添加到每个高度:2^k + 1, 2^k + 2, 2^k + 4, 2^k + 8, ...。您可以继续重复此过程,以减少指数搜索范围的大小。