Algorithm 从建筑物里扔鸡蛋

Algorithm 从建筑物里扔鸡蛋,algorithm,binary-search,Algorithm,Binary Search,这是Robert Sedgewick算法第四版的练习题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

这是Robert Sedgewick算法第四版的练习题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
解决方案的基础在哪里


有人能解释一下这个问题吗?谢谢。

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

2*logF从1开始,接下来是2,4,8(即,2^i),一旦鸡蛋破裂(在logF步骤之后),在较小的搜索空间中进行二进制搜索(范围指数搜索解决方案是执行
1,2,4,8,
,直到第一个鸡蛋在
2^(k+1)破裂为止,然后在
2^K
2^(K+1)
的范围内进行二进制搜索


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

给定有序集,这是一个搜索问题。也许这会有帮助:).Hay Randy,有任何链接或进一步的阅读吗?在建筑物上进行二进制搜索,从n/2层下降,如果它坏了,然后下降到n/4层,如此类推。因此,你可能会打破最多lgN蛋,并将在lgN步骤中达到这一点可能重复的很好的解释,非常有用@timothy shields你的解决方案也很好,非常感谢。这是如何确定F的值的?我不明白在lgN部分,我们如何通过lgN投掷得到lgN碎蛋,如果我们继续分割,我们在最后到达一楼,但是如果F=7和N=8呢?我们没有破鸡蛋。在2lgF部分,我也不明白我们是如何得到2lgF碎蛋的,听起来你只是做了2lgF步骤,但你的碎蛋数量是1。哦,好吧,对不起,我以为练习的目的是达到给定的碎蛋数量,但实际上是找到F,谢谢。我真的被这些练习弄糊涂了,大多数时候我不明白他们问什么。+1因为提到
2^k+1,2^k+2,2^k+4,2^k+8,
。我认为这是非常必要的,因为
2^(k+1)
在有界列表中可能是“超出边界的”。谢谢。非常鼓舞人心。