8 瓶水 2 瓶有毒 6 个耗子 要求单次检验出结果

2021-04-20 18:58:15 +08:00
 eroko
这题应该怎么算?
11670 次点击
所在节点    问与答
146 条回复
tinytoadd
2021-04-21 11:37:59 +08:00
@tianxia #42 这个有点问题,6 瓶里有一瓶有毒,那么无法 判断剩下的两瓶里哪一瓶有毒
sujin190
2021-04-21 11:42:49 +08:00
这不就是二分法查找么,不很简单么,也需要讨论的这么复杂么。。。
bk201
2021-04-21 11:50:23 +08:00
@nieyujiang 你自己不用喝,结果就出来了呀
cking
2021-04-21 11:52:37 +08:00
随便拿一瓶 给老鼠喝 然后把老鼠弄死 告知实验结果 这瓶有毒 然后这题结束 因为还有一瓶有毒的 肯定不会尝试 所以这题一次就结果了
snw
2021-04-21 12:21:48 +08:00
@sujin190
你试试?
iwasthere
2021-04-21 12:30:18 +08:00
数学渣,评论看的懵逼
sujin190
2021-04-21 12:42:04 +08:00
@snw #65 8 瓶水分成 4 瓶两堆,给两只老鼠喝

如果都死,那就是两个 4 瓶里各 1 瓶有毒,然后每个 4 瓶再分成 2 瓶每堆,然后没边再各取 2 瓶一堆给两只老鼠喝,就能确定有毒的在哪 2 瓶里,最后两只老鼠在试剩下分成两堆的 4 瓶就能确定哪瓶有毒了啊

如果只有一边死,那就确定两瓶有毒的都在一边的四瓶里,另外 4 瓶就可以扔了,然后再把有毒的 4 瓶分成 2 瓶两堆,给两只老鼠喝,重复刚才的流程就是了啊

这不简单么,有啥好讨论的
Dvel
2021-04-21 12:42:58 +08:00
这题目出错了,8-2=6,这题不用算法,直接怼就行,应该是更多的瓶子或更少的老鼠。
Dvel
2021-04-21 12:44:55 +08:00
@Dvel #68 说错了,死一只的话就检测不出来了。
tiramice
2021-04-21 12:45:38 +08:00
@sujin190 要求单次检验出结果,你这检验几次了?
sujin190
2021-04-21 12:47:34 +08:00
@tiramice #70 好吧,单次检测时这个意思啊。。我错了
cyrbuzz
2021-04-21 13:28:09 +08:00
分成两组 1-4 。

每组 4 瓶编号 1-4 。

用三只,

一只喝 1,3,一只喝 2,3,一只喝 1,2 。

另外一组分别喝,1,3 2,3 和 4 。

A: 13 和 23 死掉的情况,看另一只喝 1,2,死了,1 和 2 都有毒。没死,3 确定有毒,4 可能有毒看下一组情况。
B: 13 死了,23 没死,1 有毒,4 可能有毒看下一组情况。
C: 13 没死,23 死了,2 有毒,4 可能有毒看下一组情况。
D: 13 和 23 都没死,4 可能有毒看下一组情况。

此时看另一组:

A1: 13 和 23 死掉的情况,4 死了,3 和 4 有毒,4 没死,3 和上一组 4 有毒。
B1: 13 死掉了,23 没死,4 死了,14 有毒,4 没死,1 和上一组 4 有毒。
C1: 13 没死,23 死了,24 或者 2 和上一组 4 。
D1: 13 和 23 都没死,4 死了,4 和上组死掉的那个没死就是上组 4,4 没死,把上组的`可能`换成`肯定`。
Samuelcc
2021-04-21 13:33:33 +08:00
搜了一下,感觉应该是找到正解了。这道题目是 group testing 问题中的 non-adaptive 情况,应该是这类型题目最难的一种变体。解法是构建 t-separable 的矩阵进行测试,测试后将结果还原。
这篇文章有比较详细的论述,有兴趣的可以看看 https://people.cs.umass.edu/~arya/courses/690T/lecture14.pdf
rationa1cuzz
2021-04-21 13:41:43 +08:00
@cyrbuzz 两组 X 、Y 假设都在 X 组 A 鼠(13) B 鼠(23) C 鼠(12) 假设 12 都是毒药 ABC 都死 假设 13 都是毒药 ABC 都死
Ritr
2021-04-21 13:47:09 +08:00
@suisetai 绝了
ElmerZhang
2021-04-21 14:12:56 +08:00
假设 8 瓶水为 1-8,第一轮先给一只老鼠喝 1+2+3,另一只老鼠喝 4+5+6 。
假如某一只老鼠死掉,最多再用两只老鼠即可找出其中有毒的水。剩下的 7 、8 再用一只就可以找出有毒的水。
假如第一轮都没死,就是 7 、8 有毒。
ElmerZhang
2021-04-21 14:13:49 +08:00
看错题目,要求单次,我再想想
cyrbuzz
2021-04-21 14:17:35 +08:00
@rationa1cuzz 额,说的是= =,少一组验证。
ElmerZhang
2021-04-21 14:21:59 +08:00
仍然编号 1-8,6 只老鼠分别喝 1+2 2+3 3+4 5+6 6+7 7+8 。
想了一些用例,应该是可解的。
wuxinling
2021-04-21 14:32:25 +08:00
如果水多一些还需要好好考虑,

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

https://tanronggui.xyz/t/771969

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

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

© 2021 V2EX