你和我將玩一個與棋盤遊戲“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 的解決方案。 我不認為它是最優的。