首先从信息熵上讲是可以解的,只是得设计出合适的解法。 然后这次的问题其实在于 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 瓶毒药。不过我是做不到了,方案太难以设计了。
1
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 各有一瓶 不知道我理解的对不对 |
2
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 喝)
还是找不出来呀? |
3
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 喝) 还是找不出来呀? |
4
xmh51 2021-04-21 13:51:23 +08:00
@hm20062006ok 老鼠能重复利用啊。。 不死的还能用啊
|
5
woodensail OP @hm20062006ok 嗯,说的有道理,组内得重新设计一下。那么现在问题就转化为 3 只老鼠从 2 瓶毒药里面找到 2 瓶毒药,同时要保证 4 瓶药水都被喝到。
我来想想啊 |
6
xmh51 2021-04-21 13:53:26 +08:00
@hm20062006ok 哦哦 看到了 只能一次
|
8
woodensail OP @woodensail 额,应该是,4 瓶水里面找到 2 瓶毒药。感觉好难啊,似乎搞不出来了。
|
9
woodensail OP @hm20062006ok 嗯,我宣布我做不到,就算优化方案,最后还是会出现二选一的情况。草率了。
|