关于之前那个 6 只耗子找 8 瓶水中的 2 瓶毒药的问题的解法

2021-04-21 12:44:37 +08:00
 woodensail

首先从信息熵上讲是可以解的,只是得设计出合适的解法。 然后这次的问题其实在于 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 瓶毒药。不过我是做不到了,方案太难以设计了。

822 次点击
所在节点    问与答
9 条回复
rationa1cuzz
2021-04-21 13:28:00 +08:00
老鼠( ABCDEF )药( 12345678 )
两组:x[ABC 1234] y[DEF 5678]
两种情况:
1 、x 或 y 有两瓶 假设 x 组两瓶 12 13 14 23 24 34 六种情况分别对应死亡情况 AB ABC AC ABC ABC BC
2 、x y 各有一瓶
不知道我理解的对不对
hm20062006ok
2021-04-21 13:43:06 +08:00
如果其中一组有两瓶毒药。小鼠 A 喝毒药 1,2,小鼠 B 喝毒药 2,3,小鼠 C 喝毒药 3,4. 如果三只都死了,可能的组合有:1,3 有毒( 1 被 A 喝,3 被 B,C 喝)。2,4 有毒( 2 被 A,B 喝,4 被 C 喝)
还是找不出来呀?
hm20062006ok
2021-04-21 13:47:06 +08:00
如果其中一组有两瓶毒药。小鼠 A 喝毒药 1,2,小鼠 B 喝毒药 2,3,小鼠 C 喝毒药 3,4 。
如果三只都死了,可能的组合有:
1,3 有毒( 1 被 A 喝,3 被 B,C 喝)。2,4 有毒( 2 被 A,B 喝,4 被 C 喝)

还是找不出来呀?
xmh51
2021-04-21 13:51:23 +08:00
@hm20062006ok 老鼠能重复利用啊。。 不死的还能用啊
woodensail
2021-04-21 13:51:49 +08:00
@hm20062006ok 嗯,说的有道理,组内得重新设计一下。那么现在问题就转化为 3 只老鼠从 2 瓶毒药里面找到 2 瓶毒药,同时要保证 4 瓶药水都被喝到。
我来想想啊
xmh51
2021-04-21 13:53:26 +08:00
@hm20062006ok 哦哦 看到了 只能一次
AndyVerne
2021-04-21 13:53:57 +08:00
@xmh51 如果考虑到老鼠能重复利用的话,2 只老鼠就完事了┑( ̄Д  ̄)┍
woodensail
2021-04-21 13:54:24 +08:00
@woodensail 额,应该是,4 瓶水里面找到 2 瓶毒药。感觉好难啊,似乎搞不出来了。
woodensail
2021-04-21 14:04:37 +08:00
@hm20062006ok 嗯,我宣布我做不到,就算优化方案,最后还是会出现二选一的情况。草率了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX