秤球問題
一、特殊情況12個小球的情況
問題1: 有12只球,編號1--12,它們外形相同,除其中1只略輕(稱作壞球)外,其餘重量相等.要求用一架天平稱量3次,找出這隻壞球.
解法:
第一次稱量 |
第二次稱量 |
第三次稱量 |
結論 : 壞球爲 |
1,2,3,4<5,6,7,8 |
1,2<3,4 |
1<2 |
1 |
1>2 |
2 |
||
1,2>3,4 |
3<4 |
3 |
|
3>4 |
4 |
||
1,2,3,4>5,6,7,8 |
5,6<7,8 |
5<6 |
5 |
5>6 |
6 |
||
5,6>7,8 |
7<8 |
7 |
|
7>8 |
8 |
||
1,2,3,4=5,6,7,8 |
9,10<11,12 |
9<10 |
9 |
9>10 |
10 |
||
9,10>11,12 |
11<12 |
11 |
|
11>12 |
12 |
問題2:有12只球,編號1--12,它們外形相同,其中有11只重量相等,另外1只重量略有不同(稱作壞球),但不知這隻球是偏輕還是偏重.要求用一架天平稱量3次,找出這隻壞球,並判定它是偏輕還是偏重。
解法:
第一次稱量 |
第二次稱量 |
第三次稱量 |
結論 : 壞球爲 |
1,2,3,4<5,6,7,8 |
1,5,6<2,8,9 |
1<9 |
1 輕 |
1=9 |
8 重 |
||
1,5,6=2,8,9 |
3<4 |
3 輕 |
|
3=4 |
7 重 |
||
3>4 |
4 輕 |
||
1,5,6>2,8,9 |
5<6 |
6 重 |
|
5=6 |
2 輕 |
||
5>6 |
5 重 |
||
1,2,3,4=5,6,7,8 |
9,10<5,11 |
9<10 |
9 輕 |
9=10 |
11 重 |
||
9>10 |
10 輕 |
||
9,10=5,11 |
1<12 |
12 重 |
|
1>12 |
12 輕 |
||
9,10>5,11 |
9<10 |
10重 |
|
9=10 |
11 輕 |
||
9>10 |
9 重 |
||
1,2,3,4>5,6,7,8 |
1,5,6<2,8,9 |
5<6 |
5 輕 |
5=6 |
2 重 |
||
5>6 |
6 輕 |
||
1,5,6=2,8,9 |
3<4 |
4 重 |
|
3=4 |
7 輕 |
||
3>4 |
3 重 |
||
1,5,6>2,8,9 |
1=2 |
8 輕 |
|
1>2 |
1 重 |
二、一般性總結
稱球問題是網絡上流傳得比較廣的一個智力題。最常見的一種形式是這樣的:
有12個外觀相同的小球,其中有一個球是壞球,壞球和好球的重量不同。利用一架天平,在三次以內找到壞球,並得知壞球比好球輕還是重。
在這裏,我不打算給出這道題的解法,而是給出一個思考過程以及通解。我儘量說得簡單一點,不會太難,即使是文科出身也不用害怕。
我們每使用一次天平,得到結果可能是左低右高,左高右低和平衡三種。那麼使用t次天平,得到的結果最多有3t種。而每一個小球都可能是壞球,壞球又有偏輕或偏重兩種可能,所以N個小球一共有2N種可能。我們指出壞球的位置和性質的依據是什麼呢?當然是通過使用天平得到的信息。每一種可能的天平狀態組合都代表一種壞球的排列。每使用一次天平,都能把壞球可能出現的範圍縮小,最後鎖定目標。所以這道題有解的條件應當是2N≤3t。考慮到左邊是偶數而右邊是奇數,所以條件其實是2N≤3t-1。
就這麼簡單?噢,不。我們還有一點沒有考慮到,上面那個結論其實是不成立的。下面這個過程有點複雜,請聽清楚啦。對於N=(3t-1)/2個小球,我們放到天平左盤和右盤的個數都是a。無論天平是左低右高還是左高右低。嫌疑犯(壞球)和嫌疑犯性別(壞球的輕重)的組合都被減少到2a個。例如左低右高的情況下,壞球要麼在左邊a個裏且比較輕,要麼在右邊a個裏且比較重。要是天平平衡了呢?嫌犯就一定在天平外的b個球裏面。搭配上性別則一共有2b種可能。而天平的三種狀態所圈定的嫌犯範圍之和應該就是使用天平前嫌犯的範圍。所以2a+2a+2b=2N=3t-1。那麼應該怎樣設置a和b的大小比較合適呢?對,應該讓a和b儘可能接近,這樣不管這次稱量的結果如何,剩下的工作量都幾乎相同。以避免某些情況下兩三次就解決了戰鬥,有些情況卻路漫漫而修遠。
理想的分解是2a=3t-1,而2b=3t-1-1。這樣無論哪種情況,我們都可以用不超過t-1次完成剩下的工作。但我們不能這麼做--因爲2a是偶數而3t-1是奇數!這種時候,我們最好的辦法也只是把它分解成3t-1-1|3t-1-1|3t-1+1。也就是說,要是這時天平平衡了,整個工程就不能使用t次天平完成。
考慮到這一點,新的定理是:
當2N≤3t-3時,我們能夠在t次內找到N個球內唯一一顆壞球,並得知其比標準球輕還是重。
順便補充一點,如果不需要知道壞球比標準球輕還是重,那麼滿足2N≤3t-1就夠了。這個結論的證明比前面的推導過程還要複雜一些,在這裏我就不多說了,有興趣的話我可以單獨解釋。到現在爲止,你已經知道網上的題目哪些是有解的,哪些是沒解的。比如12個球稱三次就完全夠了,再多一個球,我們就有沒法判斷球輕重的時候。而14個球,3次以內找到壞球只能憑運氣。下次要是再有朋友給你亂出題,你就可以義正嚴辭的回絕他了。
現在我要給出通解啦。爲了簡化下面的過程,我們假設小球的個數正好是(3t-3)/2。
首先我們把小球分成數量相等的三組A1~An|B1~Bn|C1~Cn,其中n=(3t-1-1)/2。第一次使用天平的時候,不妨把A組和B組分別放在天平左右盤。如果天平左低右高,那麼有可能因爲左邊n個小球之一較重,也可能因爲右邊n個小球之一較輕。反過來也是一樣。這種時候,轉到下面的情況(1)處理。而天平平衡的時候,則壞球一定在剩下n個小球中,(2)討論了這種問題。
【情況1】這時的條件是:已知A1~An中一個球較重,或者B1~Bn中一個球較輕,其中n=(3t-1-1)/2。我們把可以在C中任意拿出一個好球(C中的都是好球嘛)放到B中去。然後由情況(3)討論接下來的處理方法。
【情況2】這時的條件是:已知壞球C1~Cn中,且不知輕重關係,其中n=(3t-1-1)/2。我們把C分作三組a1~am|b1~bm|c1~cm+1,其中m=(3t-2-1)/2。注意看啦,c組要比a,b兩組多出一個。怎麼?我們昨天不是說這種情況沒辦法完成嗎?但是,我們現在多了一項武器--好球。對,我們可以從已經判斷爲一定是好球的A,B組中任意拿出一個好球,和a一起放到天平左盤,把c組放到天平右盤,如果天平左低右高,那麼一定是a組中m個球較重或者c組重m+1個球較輕,反過來也於這個類似,情況(3)正是討論這種問題的。如果平衡的話,說明b組的m=(3t-2-1)/2個小球是問題小球,這不正好和我們當前要討論的問題一樣嗎?所以我們又回到了情況(2)。
【情況3】這種情況最爲複雜,我們知道的是a1~am中一個小球較重,或者c1~cm+1中的一個小球較輕,其中m=(3t-2-1)/2。另外,還有一個標準小球。我們把a分爲α1~αs|β1~βs|γ1~γs+1三組;把c分爲ε1~εs+1|ξ1~ξs+1|ζ1~ζs,其中s=(3t-3-1)/2。把αε放再天平左盤,βξ放在天平右盤。要是天平平衡,說明要麼γ組的s+1個小球較重,要麼ζ組的s個小球較輕,這恰恰是一個更小規模的情況(3)。要是天平不平衡呢?以左低右高爲例,左盤是αε而右盤是βξ,這種情況不可能是由ε較重引起的--如果ε中的球有壞球,它只會比好球輕。同樣也不會是β較輕引起的。所以,這個時候,要麼是α中的s個球之一較重,要麼是ξ中的s+1個球之一較輕。這同樣是情況(3)。
好了,到這裏所有的情況都有了一個遞歸的算法。可以把問題分解直到下面這些情況:
- 使用一次天平,一個標準球,判斷一個壞球是輕還是重。
- 有兩個球,要麼其中一個球較重,要麼其中一個球較輕,仍然有標準球可以利用,使用一次天平找到壞球。
- 三個球,要麼是1號與2號球之一比較重,要麼是3號球比較輕。使用一次天平找到壞球。
相信這三個問題相當簡單吧。什麼,你不知道最後一種怎麼做?呃,1號2號上天平,要是傾斜了,低的那邊是壞球;平衡的話……
好了,你可以嘗試使用五次天平解決120個球了。不過,一定要先找到一張非常非常大的紙。
另外補充一點:對於(3t-1)/2個小球,如果另外給定一個標準球的話,就能以情況(2)爲入口,在t次內找到壞球,並得知其偏重還是偏輕。而少了一個標準球,就只能保證找到壞球,網路上的13球問題就是這樣的。