13球分4组,第13球单独一组(如果该球为坏球则无法同时判断出轻重),详细见下面第三部分:
(13球的解法其实就是在12球方法上再添1个不参加称量的球!)
12个球称3次找坏球的完美解答
古老的智力题详述:
有12个球特征相同,其中只有一个重量异常,要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。
网上的最多的方法是逻辑法,还有少数画成图的所谓策略树和基于此的程序算法.这道题有13种不同的答案.这里我提出一种新的完全的数学解法:
一·首先提出称量的数学模型:
把一次称量看成一个一次代数式,同样问题就可以描述成简单的矩阵方程求解问题.怎么把一次称量表示成一个代数式呢?
1),简化描述小球的重量(状态)----正常球重量设为0,设异常球比正常球重为1或轻为-1,异常球未知轻重时用x代表(只取1或-1).用列向量j表示所有球的重量状态.
2),简化描述称量的左右(放法)-----把某号球放左边设为1,右边设为-1,不放上去设为0.用行向量i表示某次称量所有球的左右状态.
3),描述称量结果:
由1),2)已经可以确定一个称量式
∑各球的重量*放法=天平称量结果.--------(1)式
如果我们用向量j,i分别表示球的重量状态和球的左右放法情况(j为行向量,i为列向量),对于(1)式,可以改写为
j*i=a(常数a为单次称量结果) -------------(2)式
例如有1-6号共6个小球,其中4号为较重球,拿3号5号放左边,1号4号放右边进行称量,式子为:
(-1)*0+0*0+1*0+(-1)*1+1*0+0*0=-1,
从-1的意义可以知道它表示结果的左边较轻;
同样可以得到0表示平衡,1表示左边较重.
4),方程用来描述称量过程,还需附加一个重要的条件:代表放左边的1和右边的-1个数相等,也就是
∑各球的放法=0-------------------------(3)式
这样就解决了称量的数学表达问题.
对于12个小球的3次称量,分别用12维行向量j1,j2,j3表示,由j1j2j3便构成了3×12的称量矩阵J;对于某一可能情况i,对应的3次称量结果组成的3维列向量b,得
J*i=b
二·称球问题的数学建模
问题的等价:
设J为3×12的矩阵,满足每行各项之和为0。i为12维列向量,i的某一项为1或-1,其他项都是0,即i是12×24的分块矩阵M=(E,-E)的任一列。而3×27的矩阵C为由27个互不相同的3维列向量构成,它的元素只能是1,0,-1.
由问题的意义可知b=J*i必定是C的某一列向量。而对于任意的i,有由J*i=b确定的b互不相同.
即
J*M=J*(E,-E)=(B,-B)=X -----(设X为3×24的矩阵)
因为X为24列共12对互偶的列向量,而C为27列,可知从C除去的3列为(0,0,0)和1对任意的互偶的列向量,这里取除(1,1,1)和(-1,-1,-1).
由上式得J*E=B推出J=B,X=(J,-J)。因此把从27个3维列向量中去除(0,0,0),(1,1,1),(-1,-1,-1)然后分为互偶的两组(对应取反)
[ 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1];
[ 0, 1, 1, 1, 0, 0, 0, 1, 1,-1,-1,-1];
[ 1, 0, 1,-1, 0, 1,-1, 0,-1, 0, 1,-1].
[ 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1];
[ 0,-1,-1,-1, 0, 0, 0,-1,-1, 1, 1, 1];
[-1, 0,-1, 1, 0,-1, 1, 0, 1, 0,-1, 1].
现在通过上下对调2列令各行的各项和为0!!即可得到J.我的方法是从右到左间隔着进行上下对调,然后再把2排和3排进行上下对调,刚好所有行的和为0。得
称量矩阵J=
[0, 0, 0, 0, 1,-1, 1,-1, 1,-1, 1,-1];
[0, 1,-1,-1, 0, 0, 0,-1, 1, 1,-1, 1];
[1, 0,-1, 1, 0,-1,-1, 0,-1, 0, 1, 1].
相应三次称量两边的放法:
左边5,7,9,11 :右边6,8,10,12;
左边2,9,10,12:右边3,4,8,11;
左边1,4,11,12:右边3,6,7,9 。
*********** ********** ************ **********
1号球,且重 -平、平、左 1号球,且轻 -平、平、右
2号球,且重 -平、左、平 2号球,且轻 -平、右、平
3号球,且重 -平、右、右 3号球,且轻 -平、左、左
4号球,且重 -平、右、左 4号球,且轻 -平、左、右
5号球,且重 -左、平、平 5号球,且轻 -右、平、平
6号球,且重 -右、平、右 6号球,且轻 -左、平、左
7号球,且重 -左、平、右 7号球,且轻 -右、平、左
8号球,且重 -右、右、平 8号球,且轻 -左、左、平
9号球,且重 -左、左、右 9号球,且轻 -右、右、左
10号球,且重-右、左、平 10号球,且轻-左、右、平
11号球,且重-左、右、左 11号球,且轻-右、左、平
12号球,且重-右、左、左 12号球,且轻-左、右、右
三·问题延伸
1,13个球称3次的问题:
从上面的解答中被除去的3个向量为(0,0,0)(1,1,1)(-1,-1,-1).而要能判断第13个球,必须加入1对对偶向量,如果加入的是(1,1,1)(-1,-1,-1),则
[ 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,1];
[ 0, 1, 1, 1, 0, 0, 0, 1, 1,-1,-1,-1,1];
[ 1, 0, 1,-1, 0, 1,-1, 0,-1, 0, 1,-1,1].
[ 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1];
[ 0,-1,-1,-1, 0, 0, 0,-1,-1, 1, 1, 1,-1];
[-1, 0,-1, 1, 0,-1, 1, 0, 1, 0,-1, 1,-1].
第一行的非0个数为奇数,不论怎么调也无法使行和为0。故加入的行只能为自对偶列向量(0,0,0),结果是异球可判断是否是第13球时却无法检查轻重。也可见,13球称3次的问题和12球称3次的问题只是稍有不同,就如12个球问题把球分3组4个称,而13个球问题把球分4组(4,4,4,1),第13个球单独1组。
2,(3^N-3)/2个球称N次找出异球且确定轻重的通解:
第一步,先给出3个球称2次的一个称量矩阵J2
[ 0, 1,-1];
[-1, 0, 1].
第二步,设Kn=(3^N-3)/2个球称N次的称量矩阵为N行×Kn列的矩阵Jn,把(3^N/3-3)/2个球称N-1次的称量矩阵J
第三步之1,在N-1行的矩阵J上面添加1行各项为0,成新的矩阵J'.
第三步之2,在N-1行的矩阵J上面,添加行向量t=(1,1,...,1,-1,-1,...,-1),成新的矩阵J".t的维(长)和J的列数一致,t的前面各项都是1,后面各项都是-1;t的长为偶数时,1个数和-1个数相等;t的长为奇数时,1个数比-1个数少1个;
第三步之3,在N-1行的矩阵-J上面,添加行向量t=(1,1,...,1,-1,-1,...,-1),成新的矩阵J"'.
第四步,当J的列数即t的长为奇数时,用分块矩阵表示矩阵Jn=(J',J",J"',Xn,Yn,Zn);当J的列数即t的长为偶数时,用分块矩阵表示矩阵Jn=(J',J",J"',Xn,-Yn,Zn);
此法可以速求出一个J3为
[ 0, 0, 0, 1,-1,-1, 1,-1,-1, 0, 1, 1];
[ 0, 1,-1, 0, 1,-1, 0,-1, 1, 1, 0,-1];
[-1, 0, 1, -1, 0, 1, 1, 0,-1, 1, 0,-1].
同样可以继续代入求出J4,J5的称量矩阵。
3,2类主要的推广:
第1类,有(3^n-3)/2个球,其中有一个异球,用天平称n次,找出该球并确定是较轻还是较重。
第2类, 有n个球,其中混入了m个另一种规格的球,但是不知道异球比标球重还是轻,称k次把他们分开并确定轻重? 显然,上面的推广将球分为了两种,再推广为将球分为n种时求称法。
对于第一类推广,上面已经给出了梯推的通解式。而对于第二类推广,仅对于m=2时的几个简单情况有了初步的了解,如5个球称3次找出2个相同的异球,9个球称4次找出2个相同的异球,已经获得了推理逻辑方法上的解决,但是在矩阵方法上仍未理出头绪,16个球称5次找出2个相同的异球问题上普通的逻辑方法变得非常烦琐以至未知是否有解,希望有高手能继续用矩阵方法找出答案,最好能获得m=2时的递推式。
上面的通解法得到的J4=
[ 0,0, 0, 0, 0, 0,0, 0, 0,0,0, 0, 1,1, 1, 1, 1, 1,-1,-1,-1,-1,-1,-1,1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1,-1,0,-1, 1];
[ 0,0, 0, 1,-1,-1,1,-1,-1,0,1, 1, 0,0, 0, 1,-1,-1, 1,-1,-1, 0, 1, 1,0, 0, 0,-1, 1, 1,-1, 1, 1, 0,-1,-1,1, 0,-1];
[ 0,1,-1, 0, 1,-1,0,-1, 1,1,0,-1, 0,1,-1, 0, 1,-1, 0,-1, 1, 1, 0,-1,0,-1, 1, 0,-1, 1, 0, 1,-1,-1, 0, 1,1, 0,-1];
[-1,0, 1,-1, 0, 1,1, 0,-1,1,0,-1,-1,0, 1,-1, 0, 1, 1, 0,-1, 1, 0,-1,1, 0,-1, 1, 0,-1,-1, 0, 1,-1, 0, 1,1, 0,-1].
问题:有13个大小、外形相同的球,其中的一个重量与其它12个不同,请用天平,最多使用三次,找出那个重量不同的球。
前言:这是一个非同寻常的问题,半个月前,我一见到它,就被这个问题迷住了,在苦苦思索了一整天,又看了无数解答之后,仍然没有想出正确的结果,我放弃了(我开始怀疑题目的正确性),直到昨天2001年9月16日夜,我想出了解答。(如果这真的是华为的面试题的话,我肯定被淘汰了)
解题思路:12个标准球,1个非标准球。在找出非标准球的时候,每一个球都有可能,称之为嫌疑球。在这里我要先讨论几个可以用一次称量就找到的情况:
1. 有两个嫌疑球,和若干标准球的时候,可以一次找到。具体的做法就是取一个嫌疑球同一个标准球比较,如果重量不同,则可以确定天平上的嫌疑球就是非标准球,否则,剩下的那个就是非标准球。
2. 有三个嫌疑球,和有这三个嫌疑球参与的一次比较结果,并且在这次比较中,三个嫌疑球不在同一侧。比较方法是,取两侧的嫌疑球各一个,同两个标准球比较,如果相同,那就可以肯定,没有参加比较的嫌疑球是非标准球,如果两个嫌疑球一侧偏重,则上次比较结果中在较重一侧的嫌疑球是非标准球,否则就是较轻一侧的嫌疑球是非标准球。
3. 只剩一个嫌疑球的时候。
解题方法:
首先对13个球标号并分组:
1、 2、 3、 4 A1组
5、 6、 7、 8 B1组
9、10、11、12 C1组
13
称量A与B,记录结果R1(这里用大于0表示A>B,其它类推)
然后二次分组
13、2、 7、 8 A2组
1、 6、11、12 B2组
5、10、 3、 4 C2组
9
称量A2与B2,记录结果R2
开始分析结果:
如果R1=R2=0,则证明非标准球没有上过天平,这样,嫌疑球有2个:9号球、10号球。符合我前面提出的解决条件。可以解决这个问题。结果将在9,10中产生。
如果R1=0,R2>0(或者R2<0),则证明第二次测量的时候,非标准球上了天平,这样,嫌疑球有三个:13,11,12。这符合我在前面提到的第二种情况,也可解决。结果将在13,11,12中产生。
如果R1>0,R2=0,非常简单,这证明非标准球在第二次测量的时候,离开了天平,嫌疑球有三个:5,3,4。我们可以用第一次的比较结果作条件,用第二个解决办法找到非标准球。结果将在5,3,4中产生。
如果
R1>0,R2>0,证明第二次测量的时候,非标准球一直天平上,但此时嫌疑球好像是有四个:1、2、6、7、8,其实不是这样的,从测试结果上看,非标准球没有离开过自己的位置,这样的话,只有2与6是嫌疑球。结果将在2,6中产生。
R1>0,R2<0,同理,非标准球移动了自己的位置,这么来说,嫌疑球就应该是:1,7,8。显然这符合第二个条件。结果将在1,7,8中产生。
显然已经没有必要讨论R1<0的情况了,这同R1>0实际上是一样的
先将13个球按1,2,3…13编上号.
第一次,取1~8号球, 天平两边各放入(1,2,3,4) 和 (5,6,7,8)号球
如果 (1,2,3,4) = (5,6,7,8) 则重量不同的球应在 9,10,11,12,13中
第二次 取(1,2,3)放入天平一端, 另一端放入(9,10,11)
如果 (1,2,3)=(9,10,11), 则重量不同的球应在 12,13中
第三次 取1号球 和 12号球放上天平
如果相等,则重量不同的球是13号
如果不等,则重量不同的球是12号
如果 (1,2,3)>(9,10,11) 则重量不同的球应在9,10,11中,并且此球比其它球轻.
第三次 取9号球 和 10号球放上天平
如果相等,则重量不同的球是11号
如果(9)>(10) ,则重量不同的球是10号
如果(9)<(10) ,则重量不同的球是9号
如果 (1,2,3)<(9,10,11) 则重量不同的球应在9,10,11中,并且此球比其它球重.
第三次 取9号球 和 10号球放上天平
如果相等,则重量不同的球是11号
如果(9)>(10) ,则重量不同的球是9号
如果(9)<(10) ,则重量不同的球是10号
如果 (1,2,3,4) > (5,6,7,8) 则重量不同的球应在1~8号球中
第二次 取(1,2,3,5,6)放入天平一端, 另一端放入(9,10,11,12,13)
如果 (1,2,3,5,6)=(9,10,11,12,13), 则重量不同的球应在 4,7,8中
第三次 取7号球 和 8号球放上天平
如果(7)=(8),则重量不同的球是4号
如果(7)>(8),则重量不同的球是8号
如果(7)<(8),则重量不同的球是7号
如果 (1,2,3,5,6)>(9,10,11,12,13), 则重量不同的球应在1,2,3,56中, 并且此球比其它球重,因(1,2,3,4)>(5,6,7,8),可以排除不是5,6号球, 则此球应在
1,2,3中.
第三次 取1号球 和 2号球放上天平
如果相等,则重量不同的球是3号
如果(1)>(2) ,则重量不同的球是1号
如果(1)<(2) ,则重量不同的球是2号
如果 (1,2,3,5,6)<(9,10,11,12,13), 则重量不同的球应在1,2,3,56中, 并且此球比其它球轻,因(1,2,3,4)>(5,6,7,8),可以排除不是1,2,3号球, 则此球应在
5,6中.
第三次 取1号球 和 5号球放上天平
如果相等,则重量不同的球是6号
如果不等 ,则重量不同的球是5号
如果 (1,2,3,4) < (5,6,7,8) 则重量不同的球应在1~8号球中, 应用与 (1,2,3,4)>(5,6,7,8) 同样的推理方法就
可找出.
将12个球每组4个均分成3组,第一次将任两组拿到天平上称,若
(一)这两组重量相等,则异类球在剩下的一组中,再用两次称4个球,找异类球,这个简单,不提了.
(二)这两组不相等,则从天平两个盘中分别取出两个对调(记住拿出哪两个球),若:
(1)天平有相反的偏向,那么异类在哪两个对调的球中可以确定(比普通重或轻也可以确定),再称一次,搞定
(2)天平偏向没改变,把对调的球(总共4个)拿走,再在剩下的球(两边各两个)分别拿出一个对调,并把球换盘称,应该÷就知道了。