首先从信息熵上讲是可以解的,只是得设计出合适的解法。 然后这次的问题其实在于 2 瓶有两瓶毒药,没法用传统方式来解。所以问题的本质在于把 n 选 2 的问题转化为 n 选 1 。
首先说一下错误思路,常见的思路是 8 选 2 一共有 28 种可能性。针对每一种可能性,我们调出一杯水,从而将问题转化为 28 选 1 。但是问题在于这不是 28 杯里面有一瓶毒药,而是 28 杯里面只有一瓶没有毒,很明显我们传统的解决模式解决不了这种场景。
然后就是我的思路,分治。8 杯水和 6 只老鼠分两组,在每组内部,我们让 1 号鼠喝 1 、2 ; 2 号鼠喝 2 、3 ; 3 号鼠喝 3 、4 。 下面是分析时间,此时有两种可能,一种是两组各一瓶毒药,另一种是一组两瓶,另一组没有。 如果某组一只老鼠都没死,则该组无毒药,相对应的另一组一定有两瓶毒药。而有两瓶毒药的这组,如果 1 号活下来则 3 、4 是毒药,其他同理,如果 3 只都死了则 2 、3 是毒药。 如果两组都有老鼠死亡,则每组各有一瓶毒药,然后很明显,1 、2 死了则 2 是毒药,2 、3 死了则 3 是毒药,只有 1 死是 1 号,只有 3 死是 4 号。
以上,其实这个问题的极限远不止于此,如果只考虑信息熵,理论上 6 只老鼠最极限的情况下能从 11 瓶水里面找出 2 瓶毒药。不过我是做不到了,方案太难以设计了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.