你和我将玩一个与棋盘游戏“Mastermind”有相似之处的游戏。我心中想一个五位二进制数字的秘密数字,例如 10101。你被允许询问长度为五位的位序列。这样的问题被称为“位问题”。我的回答将报告你的猜测中有多少位在其正确的位置具有正确的值。
例如,如果你的位问题是 10110,而我的秘密是 10101,那么你的三个位(前三个,尽管我不会告诉你具体是哪三个)在其正确的位置具有正确的值。在这种情况下,我可能有其他与该答案一致的秘密数字,例如 00100。
热身题: 实际上,对于位问题 10110,有多少个数字与“三个正确”的答案一致?
关于支持科学新闻报道
如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道: 订阅。 通过购买订阅,您将有助于确保有关塑造我们当今世界的发现和思想的有影响力的故事的未来。
热身题解答: 将有 10 个。(如果您了解组合数学,答案来自“5 选 3”的计算。)它们将是:
10101, 10011, 10000, 11111, 11100, 11010, 00111, 00100, 00010, 01110.
有很多系统的方法可以生成这样的序列。我的方法是说:“假设前三个是正确的。接下来假设前三个中的最后一个是不正确的,但前三个中的前两个是正确的。接下来,前三个中的倒数第二个是不正确的,前三个中的第三个也可能是不正确的,但前三个中的第一个始终是正确的。然后前三个中的第一个是不正确的,其他也可能是。”
第二个热身题: 如果你猜测 10110,并且被告知所有五个都不正确,那么可能有哪些情况?
第二个热身题解答: 只有一个:01001。只需反转问题的所有数字即可。
问题
1. 确定一个五位位序列始终所需的最小位问题数量是多少?请记住,你的位问题中的任何猜测都不需要是正确的。你只需要知道如何在最后破解我的序列秘密。
2. 如果我们改变游戏规则,让你更难:你提出一些问题,然后在你问完最后一个问题后,我一次性回答所有问题。在这种情况下,需要多少个位问题才足够?
接下来的问题更具挑战性,并且游戏规则略有变化。当你提出你的第一个位问题时,你不会得到答案。 在那之后,每个位问题都以下列三种方式之一回答:
(i) “你与上一个位问题有相同数量的正确答案。”
(ii) “你比上一个位问题有更多的正确答案。”
(iii) “你比上一个位问题有更少的正确答案。”
在这些答案中,“正确”是指在正确位置的正确值。 我们将这种类型的响应称为低信息量回答。
3. 仅给出位问题的低信息量回答,是否有可能找到秘密数字,无论它是什么? 如果可能,你需要多少个位问题(包括最初的问题)才能保证找到秘密数字,假设问题的答案(除了最初的问题)在提出所有问题之后才给出?
4. 如果你立即得到答案,在低信息量情况下你需要多少个问题?
5. 如果代码长度为 N 位,并且所有答案都在最后给出,那么在低信息量情况下你需要多少个问题?
6. 如果代码长度为 N 位,但数字可以是某个 b > 2 的 b 进制,那么这个解决方案如何推广? 例如,b 可以是 10,并且允许所有数字 0 到 9。 我有一个需要 1 + (b-1)*N 的解决方案。 我不认为它是最优的。