2004 年 8 月謎題解答

1. 如果沒有額外的假設,Harout 永遠不會使用 Jack。 無論金幣數量多麼龐大,情況都是如此。 為了理解原因,請考慮以下歸納論證。

從熱身題中,我們知道 Harout 不會用 Jack 運送他最後的一枚、兩枚、三枚或四枚金幣。 假設 Harout 不會用 Jack 運送他最後的 k 枚或更少金幣,但會運送 k+1 枚金幣。 送一枚金幣毫無意義,因為無論如何 Jack 都會拿走它。 送出全部 k+1 枚金幣也不會給 Jack 誠實的動機。

因此,假設 Harout 傳送了介於兩者之間的某個數量 m:1 < m < k+1。 Harout 可以想象 Jack 這樣推理:“即使我誠實,Harout 下次也會使用保險承運人,因為剩餘的數量將少於 k。 所以我不如偷走這 m 枚金幣。”


支援科學新聞報道

如果您喜歡這篇文章,請考慮透過以下方式支援我們屢獲殊榮的新聞報道: 訂閱。 透過購買訂閱,您正在幫助確保關於塑造我們當今世界的發現和想法的具有影響力的故事的未來。


2. 對於信任直到被欺騙協議下的 10 枚金幣,Harout 將準備大小分別為 4、3、2 和 1 的包裹。 假設 Jack 每次都誠實,Harout 將看到 6 枚金幣運到蘇黎世,其中 4 枚給了走私者。 在任何時候欺騙都不符合 Jack 的利益,因為這樣做他永遠不會得到超過 4 枚金幣。

3. 對於 20 枚金幣,Harout 將設定大小分別為 5、5、4、3、2 和 1 的批次。 如果走私者誠實,他將收到 6 枚金幣,在任何其他情況下都不會收到更多。

4. 對於 50 枚金幣,Harout 將設定大小分別為 5、9、8、7、6、5、4、3、2 和 1 的批次。 走私者 Jack 將獲得其中的 10 枚金幣。 不誠實對他沒有幫助。

5. 假設 Jack 寧願不誠實(當利潤相等時)以便報復 Harout,並且 Harout 知道這一點。 對於 10 枚金幣,批次應包含 3、3、2 和 2。 Harout 將有 5 枚金幣運到蘇黎世,而 Jack 將獲得 5 枚。 對於 20 枚金幣,批次將包含 4、5、4、3、2 和 2。 走私者將獲得 7 枚,而 Harout 將有 13 枚運送到蘇黎世。 對於 50 枚金幣,批次將包含 4、9、8、7、6、5、4、3、2 和 2。 走私者將收到 11 枚,而 39 枚將運送到蘇黎世。

以下是如何計算 Jack 傾向於誠即時的批次大小。(我有一種涉及動態規劃的複雜方法,但威爾士格溫特的 Peter Carpenter 向我展示了一種更優雅的方法。)Harout 傳送的最後一批應該只有一枚金幣。 如果他在最後傳送更多金幣,Jack 肯定會偷走它們。 倒數第二批應該有 2 枚,然後是 3 枚,依此類推。 這告訴我們,如果 Harout 最初的金幣收藏數量為 1 枚、3 枚、6 枚、10 枚、15 枚、21 枚、28 枚、36 枚……金幣,應該傳送多少。

這些“完美金幣數”源自序列 1、1+2、1+2+3、1+2+3+4、……。 如果 Harout 最初有 1+2+3+...+n 枚金幣,那麼他將它們分成大小分別為 nn-1、n-2、... 和 1 的批次,並按降序傳送。 如果 Harout 最初的金幣收藏不是一個完美的數字,那麼他的第一批就是將他的收藏數量減少到下一個較低的完美金幣數的數量。 例如,如果他有 31 枚金幣,他的第一批將包含 3 枚金幣(將剩餘數量減少到 28,即 1+2+3+...+7)。

如果 Jack 在利潤相等時傾向於不誠實,那麼論證就會變得更加複雜。 下面我概述了一個依賴於稱為動態規劃和遞迴的技術的解決方案。 如果您覺得太難理解,那麼您可以按照謎題愛好者 Peter Carpenter 的方法獲得非常接近的結果: 給定 n 枚金幣,根據 Jack 是好人的模型為 n-1 枚金幣劃分批次,然後在最後傳送 1 枚金幣。 以下方法略好一些

設函式 Merchant(n) = 如果走私者到那時為止一直誠實,並且商人採取最優策略,則商人將從最後的 n 枚金幣中保留的數量。

函式 Smuggler(n) = 假設商人遵循商人的最優策略,走私者將從最後的 n 枚金幣中獲得的數量。

函式 Try(n,k) 確定當從剩餘的 n 枚金幣中傳送 k 枚時會發生什麼。 如果走私者從偷竊 k 枚金幣中獲得的收益至少與收取 1 枚佣金加上走私者從商人針對 n-k 的策略中獲得的收益一樣多,那麼走私者就會偷竊。 否則他不會。

我們可以這樣定義 Try(n,k) 的值
如果 k >= [1 + Smuggler(n-k)],那麼走私者會偷竊 k 枚金幣。 商人將比他已經收到的多運送 (n-k)/2 枚金幣到蘇黎世,並且走私者除了他作為佣金收到的之外,還將收到他偷竊的 k 枚金幣。

否則,走私者不會偷竊。 然後,商人將在本次行程中運送 k-1 枚金幣,加上 Merchant(n-k) 的值。 走私者將從本次行程中獲得 1 枚金幣,加上 Smuggler(n-k) 的值。

我們可以設定 Merchant(0) = 0 和 Smuggler(0) = 0,以及 Merchant(1) = 0 和 Smuggler(1) = 1(因為如果 Jack 到那時為止一直誠實,Harout 將用 Jack 運送他的最後一枚金幣)。

然後我們可以從那裡向上構建。 假設我們已經計算了 Merchant 和 Smuggler 對直到 n-1 的輸入的計算結果。 為了弄清楚當商人有 n 枚金幣並且走私者到那時為止一直誠即時,商人應該怎麼做,假設商人評估了從 1 到 n-1 的每個 k 的 Try(n,k)。 然後商人選擇對他最有利的 k 值,並將其選為他的下一批。

這種推理會產生最佳的批次劃分。 例如,如果最初有 12 枚金幣,批次將為 4、3、2、2、1。 Jack 將運送 4 枚、3 枚和前 2 枚,但不會運送第二個 2 枚,因此 Harout 將透過保險承運人傳送最後的值。

© .