【问题标题】:Why isn't the answer to the "Egg Drop" Problem "no. of floors" or 2?为什么“蛋滴”问题的答案不是“楼层数”或 2?
【发布时间】:2020-05-31 18:45:20
【问题描述】:

我一直在尝试“蛋滴”动态编程问题,但是我真的很困惑为什么答案是有意义的。

这个问题通常用以下方式表述(更长的定义hereherehere 以及许多其他地方):

您可以从多个楼层掉落鸡蛋。在某些楼层,鸡蛋落地时会没事,而在其他楼层,鸡蛋会破裂。

给定一定数量的鸡蛋和一定数量的地板,找到阈值地板(鸡蛋会破裂的第一层)所需的最小掉落次数是多少

显然这是对问题空间的搜索的答案,它枚举了所有可能性并找到了最坏的情况。

这绝对是我不理解问题的情况,但是为什么这是答案?在我看来,答案是两件事之一:

  • 如果您有 1 个鸡蛋,那么无论您拥有多少楼层,您都可能需要从所有楼层(从 1 层开始)掉落它。它打破的第一个是“门槛”,这将为您确认一个答案,因为您知道它下面的每一层都是“安全的”
  • 如果你有 n 个鸡蛋,那么答案不是 2:你把它丢了,它就碎了,然后你把它丢在下面的地板上,它不会。

显然 n 个鸡蛋 的答案要求你在两次掉落时都很幸运,但问题是要求找到阈值所需的 最小 次掉落,即最小找到答案并确认所需的可能滴数。如果你碰巧走上了这条黄金之路,那不就是答案 2 吗?

正如我所说,我显然误解了这里的问题 - 有人可以提供帮助吗?

谢谢!

【问题讨论】:

    标签: algorithm recursion dynamic-programming


    【解决方案1】:

    您确实误解了这个问题。当它说:

    找到阈值下限所需的最少下落次数是多少

    这意味着您必须设计一个您将应用的最佳策略。该策略必须根据前一滴是否破蛋来定义您将在哪个楼层进行下一滴。所以它就像你遵循的二叉决策树。根据您从掉落鸡蛋中获得的反馈,您将在该决策树中朝着不同的方向前进。

    现在您必须为您的策略找到最坏的情况:使用该策略找到最多下降的阈值是多少?

    有多种策略。其中一些在最坏的情况下需要比其他更多的下降。你的工作是找到一种策略,在最坏的情况下将所需的掉落次数降至最低,并返回那个数字。

    请注意,在一种情况下构成最坏情况的情况,在另一种情况下可能不是最坏情况。每种策略都有其最坏的情况。

    请注意:策略必须绝不让您陷入没有鸡蛋剩下的情况,并且仍然不确定阈值是多少。

    【讨论】:

    • 啊,太棒了-谢谢。因此,如果我对您的理解正确: 1. 有一个找到阈值下限的最佳策略,您需要制定出来 2. 该策略将有一个“最坏情况”:该策略最多采用的开始/结束组合滴找到 3。你需要计算滴的数量是多少。因此,表达问题的更好方式可能是“存在针对这个问题的最佳搜索策略 - 找到它。使用此策略可以保证找到阈值下限的最小下降次数是多少?”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多