問題描述:
有12枚硬幣,其中有一枚是假幣,但是不知道是重還是輕。現給定一架沒有砝碼的天枰,問至少需要多少次稱量才能找到這枚硬幣?如何證明給出的方案是最少次數?
思路分析:
我們首先想到的可能是將12枚硬幣分成兩堆,每堆6枚放到天枰上稱量,這樣的得到的結果一定是天枰是傾斜的。得不到任何其他信息,反而白白浪費了一次稱量機會。因此第一次稱量一定是選擇一部分去稱量,利用均分原理,天枰左邊放一部分硬幣,右邊放一部分硬幣,還剩下一部分硬幣。從平均情況考慮,三部分中含有假幣的概率是相等的。因此,第一次稱量中,我們可以將12枚硬幣分成3份,每份4枚硬幣,記為甲、乙、丙。
取甲、乙放到天枰上稱量,一共會出現3種情況:
- 平衡:說明甲乙中都不會含有假幣,則假幣一定在丙中,記丙中的4枚硬幣為A、B、C、D。(依然不能將4枚硬幣分成2份!無意義!!)取A、B放到天枰上稱量,則又會出現三種不同情況:
- AB平衡:AB不可能為假幣,一定在C、D中。
- 取C與A量,若平衡,說明D是假幣;若不平衡,說明C是假幣。
- A重/B重:A為假或B為假。取甲中任意一枚(真幣)與A稱量。若平說明B為假幣,且假幣輕;若依然A重,說明A為假幣且假幣重;
- AB平衡:AB不可能為假幣,一定在C、D中。
- 左傾:說明假幣在甲或乙中。分別記甲中四枚硬幣為ABCD,乙中四枚硬幣為EFGH,丙中四枚硬幣為IJKL(都是真幣)。取ABE和CDI稱量,則會出現
- 若ABE與CDI平衡,則說明他們都是真幣。FGH為假幣且假幣輕。取FG稱量:
- 若平衡,說明H為假幣;
- 否則FG中誰輕誰是假幣。
- 若左傾(即ABE重,CDI輕)。第一次稱時,ABCD>EFGH。所以假幣在AB中,且假幣重;
- A與I在稱量一次,若平則B是假幣,若A重,則A是假幣。
- 若右傾(即ABE輕,CDI重)。第一次稱時,ABCD>EFGH。所以假幣在CD中,且假幣重;
- C與I再稱量一次,若平則D是假幣,若C重,則C是假幣。
- 若ABE與CDI平衡,則說明他們都是真幣。FGH為假幣且假幣輕。取FG稱量:
- 右傾:(與左傾情況完全對稱)
通過上面的分析可知,無論什么情況,3次稱量就可以得出哪個是假幣。
理論分析:
- 一次天枰稱量能夠得到左傾、右傾、平衡3種情況,如果把一次稱量當做是一次編碼,則它是3進制編碼才能夠表示;
- 我們想要用3進制編碼表示的是:12枚硬幣,且假幣的輕重未知。
- 每枚硬幣都可能是假幣,共12種情況,假幣有可能比真幣輕,也有可能重,共12*2=24種情況;
- 3n>=24 則n至少為3才可以。
- 所以從信息論的角度講,3次稱量是最小值。