问题如下:

科学家创造了一种叫做化合物A的新化合物,它将在与化合物B混合后10天爆炸。该化合物A储存在带有<跨度级=“数学容器”的架子上的标签瓶中。 > $ N-1 $ 瓶子的非反应材料,科学家不知道哪个是化合物A. <跨度类=“MATH-CATTEMANT”> $恰好有一瓶复合A.架子上的N $ 瓶子。科学家拥有<跨越类=“数学集装箱”> $ O(log(n))$ 烧杯充满了化合物b的烧杯。如何确定哪个 $ n $ 瓶子是复合A的时间,完全是10天的时间吗?

我有点卡住,因为我不知道在10天内不知道如何缩小特定瓶子。很明显,您只需将瓶子的前半部分施加到第一个烧杯,然后如果它没有反应,则知道所需的瓶子是下半部分等。但我如何缩小它而不见证前几次测试的结果?

我们需要创建一系列爆炸的东西,帮助我们缩小它的哪一个(允许在N / 4中说,然后n / 10,然后n / 100等)。 我怎么做这个?

有帮助吗?

解决方案

这是一个经典的问题,我以前看到的陷入困境而不是CS问题(有一些固定的 $ n $ 和固定数量的烧杯),虽然我不记得它的任何来源。

您可以解决如下: 从 $ 0 $ $ n-1 $ ,并从 $ 1 $ $ \ lfloor \ log_2(n-1)\ rfloor + 1 $ 表示所需的比特数数字 $ 0 $ $ n-1 $ 在二进制中)。

现在为每个瓶子,请执行以下操作:让 $ x $ 是瓶子的标签。对于每个 $ i $ ,使得 $ 1 $ “> $ i $ $ x $ 的二进制表示中的位置,在烧杯 $ i $

现在经过10天,爆炸的烧杯将恰好拼出二进制中爆炸瓶的数量。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top