12小球问题与三进制解法(包括13小球)

2024-02-13 1:54:56 24看球吧 admin

  (网易BLOG不能用了,迁移过这里暂存一下。这是来自2008-05-30 21:00:33的回忆)

  12小球的问题,现在网上很多地方都有提到三进制解法,但对于求解过程和原理都模糊其辞,说不清楚。尤其是如何获取编码的问题,还没有简单易行的手段。本文将清楚的描述编码过程、提供简易有用的编码方法,并解释清楚其中的原理。

  问题是这样的:12个球,其中有一个球与其他重量不同。(不知是重还是轻!) 用天平称三次,找出它,并指出它是轻了还是重了。(如果是13小球,则只能知道是哪个,不能知道实际轻重)

  最好的解决方法,是使用三进制。(其实也不知道这能不能用“三进制”来概括,只是姑且这么说说)

  在使用三进制之前,先看看最容易想到的方法,是逻辑判断法。

  这只是一个例子,并没有从原理上解决问题。当小球数量发生变化的时候,就必须重新想一个方案,使用不同的判断流程。对需要的人来说,流程也不是很好理解。

  目前大家比较认可的数学解法,是使用3进制。

  先将12个小球进行编码,规则是:大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  1、使用0,1,2三个数字,编码成3位的号码,一共有27个。

  2、去掉其中3个3位一样的编码000、111、222,还剩下24个。

  这里,先提出【对称】这个定义,所谓对称,是指:以某个数字为对称轴,保持不变,另外两个数字互相换成对方的情况。如001,按0对称是002,按1对称是221,按2对称是110。大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  3、把这24个编码按开头的数字分成3组,称为0组、1组、2组。

  4、从0组任取4个编码,每取出一个同时删除3个组中的对称编码,取完4个之后,1组、2组也只剩下了4个编码,一共剩下12个编码。(任取是真的任取,因此最终的结果不是唯一的。)

  这样操作之后,剩下的12个编码就作为12个小球的编码,其中一个例子如下:

  下面开始使用天平。

  将第一位为1的4个小球放在天平左边,第一位位2的4个小球放在天平右边,并记录结果,平衡记为0,左边轻记为1,右边轻记为2。

  将第二位为1的4个小球放在天平左边,第二位为2的4个小球放在天平右边,并记录结果。

  将第三位为1的4个小球放在天平左边,第三位为2的4个小球放在天平右边,并记录结果。

  三次的结果记录下来也形成了一个编码,如010,002等。

  这个结果的编码对应的小球就是有差异的小球了。如果编码能直接找到,表示这个小球比正常的轻,否则使用其相对0的对称编码一定可以找到,这时候找到的小球也是有差异的小球,但是表示这个小球比正常的重。

  为什么会出现按0对称编码才能找到小球的情况呢?因为,我们记录规则是【左边轻为1,右边轻为2】,同时,称量的规则是【左边放1,右边放2】。因此在差异球比较轻的情况下,结果编码会与放置编码相同;差异球比较重的情况下,结果编码会与放置编码相反。大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  就是这样了。

  如果是13个小球,只需要对12个进行编号,第13个不必编号。如果按照上述条件能有结果,那么除了知道是哪个球异常,还能知道轻重。如果结果是000则表示问题小球是没有编码的第13个球。此时不知道它是轻还是重。

  另外,编码的位数,即等于需要使用天平的次数。因此,可以从数学上计算出12个小球需要3次天平才能得到结果。计算公式如下: ( 12*2 ) + 3 = 3^N , N就是需要使用天平的次数,在这里等于3。

  所以,使用N次天平可以称出 (3^N - 3 )/2 个小球中的差异球,就是说,39个小球可以使用4次天平得到结果,3个小球使用2次天平。3个以下就不能使用天平称出来了。

  从信息量看, 3^3=27 ,排除没有异常的000,似乎是可以有13对代码的,也就是说如果把一开始被我抛弃的111,222两组代码利用起来,可能有一种办法可以直接从13个小球中找到差异球并知道它的轻重。但是我没有想出来。

12小球问题与三进制解法(包括13小球)

12小球问题与三进制解法(包括13小球)

发表评论: