[算法技术]2 Egg Problem

操作方法

  • 01

    2 Egg Problem 继续我们的推理问题之旅,今天我们要对付的是一个Google的面试题:Two Egg Problem. 我们开始吧! No.2  Google Interview Puzzle : 2 Egg Problem * You are given 2 eggs. * You have access to a 100-storey building. * Eggs can be very hard or very fragile means it may break if dropped from the first floor or may not even break if dropped from 100th floor. Both eggs are identical. * You need to figure out the highest floor of a 100-storey building an egg can be dropped without breaking. Now the question is how many drops you need to make. You are allowed to break 2 eggs in the process 分析与解答: 题目要求试的最大次数最小。首先,讨论两个比较trivial的方案。 方案1:从第一层开始扔鸡蛋,如果鸡蛋不碎,则上一层再扔。这样,如果鸡蛋在某一层碎的话,该层就是临界的层。这种方案的优点在于省鸡蛋,只会摔破一个鸡蛋。还有一个鸡蛋可以带回家,做个鸡蛋羹,补充营养个!  :) 缺点就是,如果鸡蛋在100层才碎的话,那就要试100次啦。那你等电梯要等死啦,而且还要接受别人的打量的目光,心说这怪咖为什么每次都只坐一层楼啊… 方案2: 想必很多人都会想到这个方案。我只能说,这是中国计算机教育的成功啊。这就是“二分查找法”。首先在第50层楼扔鸡蛋,如果鸡蛋不碎的话,就去75楼。如果碎了的话,那么对不起,同志。由于你只剩一个鸡蛋了,所以你得小心地从第一层开始,这样才能保证你在鸡蛋碎完的时候能找到临界楼层。这种方法的优势在于,如果你知道你的鸡蛋比较硬的话,你就采用这个方法吧。临界楼层越高,这个方法尝试的次数越小。但这种优势是用临界楼层比较小时比较大的尝试次数为代价获得的。我们看到,如果临界层数在49层的话,我们要尝试50次,而临界层数为100层的时候,尝试次数只有7次。但是,现在的问题是,全部情况下的最大尝试次数最小。这样,虽然在某些情况下,这种方法的性能很好。但是就最差情况而言,还是要尝试50次,好像还是有点大。这边,我们想起来,“二分查找法”的目标是平均性能最佳,并不是最差性能最佳。我们似乎走错了路!!!不过,方案二相比方案一来讲还是有进步的。 方案2似乎陷入了“短板效应”的泥沼,由于最坏情况下的坏性能制约了总体性能的提高。解决这个问题的总的原则应是:“一碗水端平”,尽量做到各种情况下的尝试次数尽量差不多。这正应合GOOGLE的信条Don't be evil,不以别的情况为代价换取另一些情况的指标的提高。做到“不伤害”.(呵呵,这是我瞎联想的)。那么,就照着这条路走吧,我假设每种情况下最大的尝试次数为x. 则第一次扔蛋的楼层应为x; 第二次扔蛋的楼层应为 x+(x-1); … 依次类推。 从上面看到,每次我们增加的楼层都是前一次减1.我们所要保证的就是应该在增加的层数变成0之前到顶楼,所以有: x+(x-1)+…+1≥100 这是一个等差数列,整理后有: x2+x-200≥0 发现x≥14。 我们总结一下: 第一次在14楼扔,如果碎了的话从一楼再开始扔; 否则在14+13=27层扔,如果碎了的话从15层开始扔; 否则在27+12=39层扔,如果碎了的话从28层开始扔; …… 这样,最大尝试次数为14次就行了。不信你试试。 最后,为了体现严谨性,给出本题的模型: 转移方程: minNum[n ] = min(1 + max(i – 1, minNum[n-i])) ,for 1≤i ≤n 边界条件: minNum[0] = 0; minNum[1] = 1 这里,n为楼层数,i为起始楼层数。 据说这是一个动态规划问题,我还没来得及仔细研究。其实,我的感觉是,很多理论最初的来源都是很朴素的真理,只是我们没学懂,所以把它们想复杂了。所以,很好的理论就这样不被大多数人所理解了。

(0)

相关推荐

  • [算法技术]算法的时间复杂度

    算法的时间复杂度是衡量一个算法效率的基本方法.在阅读其他算法教程书的时候,对于算法的时间复杂度的讲解不免有些生涩,难以理解.进而无法在实际应用中很好的对算法进行衡量. <大话数据结构>一书 ...

  • 阿里巴巴:初探智能设计图像时代

    近年来,设计圈有两大趋势不容忽视,一是人工智能.神经网络.深度学习无疑是时下最热门的科技名词,"人工智能设计"这个词语在设计圈也深受追捧,我们也看到越来越多的初创公司勾画出自己的& ...

  • 有限元法的发展现状

    操作方法 01 有限元法就是一种计算机模拟技术,使人们能够在计算机上用软件模拟一个工程问题的发生过程而无需把东西真的做出来. 把一个大的结构划分为有限个称为单元的小区域,在每一个小区域里,假定结构的变 ...

  • 如何寻找发布高质量外链平台

    虽然搜索引擎对外链的重视度越来越低,但当一个网站在建站初期,还是需要发布高质量外链来吸引蜘蛛以及提升网站的排名.很多人认为只要在高权重的网站发布外链,便属于高质量外链,这种说法是片面的.下面我们来详细 ...

  • 浅谈微软和苹果各自的字体平滑,反锯齿,和次像素渲染技术

    苹果公司和微软公司,对于如何在电脑屏幕上显示字体,总是有不同看法。目前,这两家公司都使用次像素渲染(subpixel rendering)技术,使得字体在低分辨率的屏幕上,也能显得很清晰。这两家公司的 ...

  • 路由器基础知识:路由器的基本协议与技术

    VPN VPN(Virtual Private Network-虚拟专用网)解决方案是路由器具有的重要功能之一。其解决方案大致如下: 1.访问控制 一般分为PAP(口令认证协议)和CHAP(高级口令认 ...

  • 局域网交换机的内部结构和主要技术

    一、局域网交换机的内部结构 局域网交换机卓越的性能表现,来源于其内部独特的技术结构。而不同的交换模式或不同的交换类型,也跟局域网交换机内部结构密不可分。所以说,了解了局域网交换机的内部结构,就等于了解 ...

  • 路由技术 多WAN口路由器技术和应用

    随着用户网络应用要求的提高,仅仅有NAT已经不够用了。尤其用户对网络安全和其他保证网络平安通畅运行的功能要求非常迫切,宽带路由器的设计越来越复杂化了,包含了FIREWALL、DMZ、虚拟服务器等诸多功 ...

  • 网络知识:详细解读无线局域网(WLAN)技术

    一个无线局域网可当作有线局域网的扩展来使用,也可以独立作为有线局域网的替代设施,因此无线局域网提供了很强的组网灵活性。 无线局域网(WLAN)技术的成长始于20世纪80年代中期,它是由美国联邦通信委员 ...