12球问题,大家都知道吧?
不妨再描述一下题目:
12个球中,11个好的,1个坏的。坏球的质量和好球不太一样,偏轻或者偏重。
现在要求用一台天平,称3次,找到这个坏球。如果可以的话,并告知这个球是偏轻还是偏重。

很早以前就看过这个题目,解法很是诡异,反正是一边4个球,然后怎么组合一下……从来没有记住过。当时一直以为发现这个解法的人是一个绝对的天才。

不过,今天从一本书上看到了这个解法的构造方式。换句话说,这个问题,其实并不是什么灵光一闪的结果,或是推理帝的神作。

下面就来介绍这种从一张空白草稿纸开始,看上去有些机械化的的解法构造。

==========分割线==========
数学内容
不喜勿入
==========分割线==========

首先,我们来分析一下,3次称重实现找出坏球的可能性。
毕竟,如果这是一个不可解的问题,那么,一切的尝试都是没有意义的。
(当然,这个论断,很多民科可能并不认同)

一次称重能带给我们的信息:
左边重,右边重,或者两边一样重。
总共3种情况。

3次称重的话,总共可能得到3*3*3=27种结果。
从图论的角度来看就是,一棵度为3,深度为3的树,最多可以有27片叶子。

那么,12只球,算上轻重两种可能,共24种情况。

显然,如果我们把这24种情况分别映射到那棵树的27片叶子里,
我们就能通过从根节点出发,3次分支选择,到达某片叶子,然后得到结论。

好,既然确定了思路,下面就来介绍如何获得这个解。

首先,我们将那27片叶子编码,
简单点说就是把一个3位的3进制数,从000到222依次写下来。
(这里我的建议是,每个数字都竖着写,高位在上,低位在下,从左到右,一顺铺开)

呃,别急……似乎我们在使用天平的时候,似乎更加习惯这样的记号:
左边重:1
一样重:0
右边重:-1

而不是从0到2。

不过,这个问题很好解决,我们可以将0~2依次映射到-1~1

写完以后,我们可以发现,这一组数,关于000有着某种对称,下面的图是“沿着000对折”以后的结果:

   0   0   0   0   1   1   1   1   1   1   1   1   1
   0   1   1   1  -1  -1  -1   0   0   0   1   1   1
   1  -1   0   1  -1   0   1  -1   0   1  -1   0   1
0
0
0
   0   0   0   0  -1  -1  -1  -1  -1  -1  -1  -1  -1
   0  -1  -1  -1   1   1   1   0   0   0  -1  -1  -1
  -1   1   0  -1   1   0  -1   1   0  -1   1   0  -1

发现没有,下面一排的数字,分别是上面一排的对偶,所有-1都成了1,1都成了-1,当然,如果可以的话+0变成了-0。

那么,问题似乎可以化简一下,我们只考虑坏球偏重的那种情况。如果偏轻的话,只要对应到对偶的那片叶子就好了。

这样接下来的任务就是把12颗球(记作ABCD好了)对应到上面那排数字上好了。
于是有:

   0   0   0   0   1   1   1   1   1   1   1   1   1
   0   1   1   1  -1  -1  -1   0   0   0   1   1   1
   1  -1   0   1  -1   0   1  -1   0   1  -1   0   1

   A   B   C   D   E   F   G   H   I   J   K   L

唔,似乎最后那个111没有用到?那就不要管他了……

为了让结果可以操作,我们需要让每一行的1,0和-1都是4个(就不要管111那一列了)。
先数一下,每行的数码的个数,方便后面的调整。

     -1   0   1
百    0   4   8
十    3   4   5
个    4   4   4

嗯,让4个百位的1变成-1,1个十位的1变成-1就好了。

这里说一下调整的方法,要调整某一列,就让它变成它的对偶值就好。这样另外一种轻的情况就是原来的数值。
不过,这里调整的时候,可能需要简单的凑一下数据,对照第一组提供的两行编码试一下,不会太困难。

具体的调整方案很多。
一种方案是:
C,(H,J),(G,K),(F,L)。后面3组括号里,任选2组,5个符号。

或者只调整4个符号:
L,I,然后(H,J),(G,K)任取一组。

这里就取
C,H,J,G,K
于是我们得到新的编码:

   0   0   0   0   1   1  -1  -1   1  -1  -1   1
   0   1  -1   1  -1  -1   1   0   0   0  -1   1
   1  -1   0   1  -1   0  -1   1   0  -1   1   0 

   A   B   C   D   E   F   G   H   I   J   K   L

对12种可能编码以后,我们就要从这个编码反推回称重的方案了。
这样,先写下3行空格,每行8个位置,就像这样:
__ __ __ __ X __ __ __ __
__ __ __ __ X __ __ __ __
__ __ __ __ X __ __ __ __

然后,依次把字母填上去,遇到1就填左边,-1填右边,0不管。譬如先填B的01-1就成这样

__ __ __ __ X __ __ __ __
 B __ __ __ X __ __ __ __
__ __ __ __ X B  __ __ __

把12个字母填完以后,就成了这样:

 E  F  I  L  X  G  H  J  K
 B  D  G  L  X  B  E  F  K
 A  D  H  K  X  B  E  G  J

于是,这个就是我们所要的解。要是想再糊弄人一点,不妨对A~L做一个轮转替换……

最后,以上内容抄袭自《蚁迹寻踪及其他数学探索》12章。
非常有意思的一套书,原书质量和翻译质量均属上乘。如果有谁要送我礼物的话,不妨买个一本两本给我。

最后是福利

话说,从来不去攻城的男人是什么呢……
大概就是法师了吧……

其实我还扯了更多