Chinaunix首页 | 论坛 | 博客
  • 博客访问: 394067
  • 博文数量: 61
  • 博客积分: 2525
  • 博客等级: 少校
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 13:22
文章分类

全部博文(61)

文章存档

2008年(4)

2007年(57)

我的朋友

分类:

2007-09-26 16:31:11

12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?
 
答案:
分别定义球为a b c d, e f g h, i j k l,取出abcd, efgh   
 第一种情形:
  如果重量相等,则说明所求在 ijkl 中,
  称量 i j ,
  如果相等,比较 a k ,如果a=k,则所求为 l ;如果ak不等,则所求为 k 。
  如果不等,比较 a i ,如果a=i,则所求为 j ;如果不等,则所求为 i 。   
 第二种:
  如果 abcd 轻,
  在efgh中取出 fgh ,替掉abcd中 bcd,从ijkl中取出 ijk 个放入 e 中填补空位:
  如果afgh轻:则说明所求在a或e,拿 e 和除 a 以外的任意一球比较,如果重量相等,则所求的球是 a ;如果不等,则所求的球是 e 。
  如果afgh重:说明所求在 fgh 中,且所求较重;比较 f g ,等重则所求为 h ;不等则重的为所求。
  如果一样重:说明所求在 bcd 中,且所求较轻;以下同afgh重的情形。   
 第三种:
  如果 abcd 重,
  在efgh中取出 fgh ,替掉abcd中 bcd,从ijkl中取出 ijk 个放入 e 中填补空位:
  如果 afgh 重:则说明所求在a或e,拿 e 和除 a 以外的任意一球比较,如果重量相等,则所求的球是 a ;如果不等,则所求的球是 e 。
  如果afgh轻:说明所求在 fgh 中,且所求较轻;比较 f g ,等重则所求为 h ;不等则重的为所求。
  如果一样重:说明所求在 bcd 中,且所求较重;以下同afgh轻的情形。   
  此题答案就是这样。下面与大家进而探讨称任意球数的通用性。   
 
 
问题总结:[最精彩的地方]
    天平称重,有两个托盘比较轻重,加上托盘外面,也就是每次称重有3个结果,就是ln3/ln2比特信息。n个球要知道其中一个不同的球,如果知道那个不同重量的球是轻还是重,找出来的话那就是n个结果中的一种,就是有ln(n)/ln2比特信息,如果不知道轻重,找出来就是2n(n个球中的一个,轻或者重,所以是2n)个结果中的一种,那就是ln(2n)/ln2比特信息。
    假设我们要称k次,根据信息理论,那显然两种情况就分别有:
    (1)k*ln3/ln2>=ln(n)/ln2 (k>=1) 解得k>=ln(n)/ln3
    (2)k*ln3/ln2>=ln(2n)/ln2 (k>1) 解得k>=ln(2n)/ln3
    这是得到下限,可以很轻易证明满足条件的最小正整数k就是所求。比如称3次知道轻重可以从3^3=27个球中找出不同的球出来,如果不知道轻重就只能从(3^3-1)/2=13个球中找出不同的球出来。
阅读(2686) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

F.U.Moon2008-04-03 20:30:13

不好意思,审题不到位....我以为那个重量不同于其它的球的球是重球....

F.U.Moon2008-04-03 20:16:42

在没有看你的答案之前,先给出我的解答: 1.将12个球分成三组,每组4个,那个重的球必定在这某一组中,任取两组(假设我们取第一二组)称一次,重的那组肯定含有那个重球,如果两组一样重那么重的那个球就在第三组中. 2.通过第一步,我们确定了某一组中含有一个重球.然后我们从这一组(假设为A组)中任取一个球,从丢弃的那两组球中任取两个出来,让这三个球组合成一组(假设为B组),如果B组重,那么说明我们刚刚从A组中取出来的球是重球,如果A组重,说明重球在A组中. 3.如果通过第二步我们确定A球是在A组中,那么我们再在A组中任取两个球出来称,重的那个当然是重球,如果两个球相等,说明没有称的那个球就是重球. 如果为13个球: 也是一样的方法, 1.我们任取4个球组成A组,再任取4个球组成B组,用天平称一称A和B,如果A重,重球在A中,如果B重,则重球在B在,如果两者相等,重球就在余下来的5个球中... 2.假设我们在第一步中确定了重球在A or B组中,那由这四个球称两次很容易得出哪个球是重球,如果在余下的5个球中,我们只要再取2个与2个相称,依上方法也很简单得出哪个球是重球``