称球问题

     问题1:13个球,其中12个重量相同,只有一个次品不知是轻还是重了。请用天平称三次,将这个次品找出来。

     [解析]

     13个球要称量,肯定要分3堆。不放到天平上的那堆,很容易就知道不外乎只能考虑357个。若放7个,怕是傻了,剩下两次怎么分得清?3个,太天真了。最可能是5个。蒙对了这数目,省你不少力气,不然要多费一层思考的堆栈来排除了。具体解决方案如图1所示。

 图1

      问题2:12个球,已知其中11个重量相同,另一个不知否是次品。请用天平称三次,确定其中有无次品,如果有的话,将这个次品找出来,并确定其是偏轻还是偏重

     [解析]

     解决方案如图2所示。

图2

    称球问题的一般性问题如下:

    用天平称k次,在n个球中找出唯一的一个重量不标准的次品球,n最大是多少?如何找?其中关于这个次品球的说法,通常有3种变形:

    1. 已知次品球是更轻(或更重);

    2. 不知次品球的轻重,找出它即可,无需确定其轻重;(例如问题1)

    3、不知次品球的轻重,找出它并确定其轻重。(例如问题2)

    在这3种情形下,n的最大值分别如下:

    1. 已知次品球是更轻(或更重),这时n的最大值 = 3^k;

    2. 不知次品球的轻重,这时n的最大值 = (3^k-1)/2;

    3. 不知次品球的轻重,找出它并确定其轻重,这时n的最大值 = (3^k-3)/2。

    对于第1种情况,如果已知次品比正品重(或轻),就把这堆球三等分,将任意两堆放到天平两边称一次,即可确定次品是在哪一堆,一直重复这三等分法,就能确定次品是哪一个。所以称k次最多可以分辨3^k个球。

    对于后面2种情况:

    研究一般性问题最好的方法是先看简单特殊的问题,从直观中找出思路。

    细考图1的决策树中,沿着所有平衡分支走到底的全平衡叶子,里面包含着每次称量都是平衡情况下的疑似次品球,它总是放在天平外。因为都没经过称量,所以它包含着每个球的两种状态。如果这叶子里只有一个球,那么次品球就是它(图1中是13)了,但不知其轻重。而所有其他叶子里的球,都至少经过了一次的称量。球一旦上过天平,它的两种状态就分离开来,沿着两个分支走去,所以不可能同在一片叶子里,在这些叶子里,每个球都只能有一种状态。考虑n个球,通过称量要把它们分辨来,因为非全平衡叶子必须包含一个球的两种状态,共需要2n-1片叶子。K次称量最多可以有3^k片叶子,我们有:2n-1 <= 3^k即n <=(3^k+1)/2。这是称k次能够分辨的球数的上限。这个上限不一定能够达到,要看实际的称量是怎么分配的。

    这个决策树很直观地揭示出很多信息。其一,(3^k+1)/2是个很好的上界,通过合适的配置可能实现。如在第一次平衡后的子树显示,加一个正品球就可以分辨5个球(9、10、11、12、13),这达到了这个上界,注意到这个13球的决策树的叶子中有两个空位,如果称量时手里有个已知的正品球(图3中是0),如图3所示,第一次称9个加上这个正品球,3次就能分辨14个球,也达到这个上界。所以13球的局限在于天平分配上,这暗示着没有已知正品球时,可以达到的极限是n =(3^k-1)/2。其二,因为全平衡叶子不能分辨球的两种状态,如果要求确定次品的轻重,我们就不能利用这个叶子,所以这种情况下的极限是n =(3^k-3)/2。有了这些猜测和决策树分配的思路,不难用数学归纳法证明这些结论,证明过程如下:

图3

    考虑一般问题,把球分三堆,放两堆等数的球上天平,如果平衡,次品当然在外面这一堆。如果不平衡,比如说左边重,我们只知道外边的肯定是正品,但不知道次品是在天平的哪一边。重的那一边的球定义为“疑重球”,如果次品是在这边,则次品一定是较重。轻的那一边定义为“疑轻球”,如果次品是在这边,则次品一定是较轻。所以天平上的这些球经过一次称量之后已经被消除掉一部分的不确定性,称为半确定的球。半确定的球集合中只有两类的球,疑重球或疑轻球,集合中可以混合着这两类球,但知道每个球属于哪一类。

    现在证明。在叙述时,我们只考虑这堆球的数量在可达到的最多个数时的情况。对少于这个数的情况,我们总是可以这样安排:使得分三堆时,每一堆都不大于证明中的分法的数量,这样归纳法总是能够进行下去。引理和定理中的球数是可以达到的最大的数量,否则在三分时总有一方超过证明里分配的数量,从归纳法推导可以看出这将导致k=1情况下不可能实现。

    引理1:对于多于2个的一堆球,已知次品在其中,称k次可以并最多在3^k个半确定的球中找出次品,并且知道其轻重。

    证明:用数学归纳法。k=1时,3个半确定的球,一定至少有两个属于同一类,比如说疑重球,将这两个上天平,重的那个就是次品,如果平衡,外边的那个就是次品,而且知道这次品是较重还是较轻。验证正确。

    假设结论对k-1次正确。将不多于3^k个半确定的球三等分,如果不能够等分,除天平两边要等数外,三方都不多于3^(k-1)个球,且使得两边共有偶数个疑重球,记为2a个。这总是可以做到的。这样天平左右各有a个疑重球和3^(k-1)-a个疑轻球。一般有多种可能的a值满足要求,任取一个都行。这时如果左边重,左边的a个疑重球和右边的3^(k-1)-a个疑轻球,共3^(k-1)个半确定球有嫌疑,其他都是正品。如果右边重,同理将嫌疑缩小到3^(k-1)个半确定球。如果平衡,嫌疑在外面的3^(k-1)个半确定球中。已知用k-1次称量可以分辨不多于3^(k-1)个半确定的球。证毕。

    引理2:已知次品在其中,加一个已知的正品球称k次,可以并最多在(3^k+1)/2个球中找出次品,但有且仅有一种情况不知其次品的轻重。

    证明:k=1时,有2个球,取一个与正品球上天平,如果平衡,次品在外面,但不知它比正品轻还是重,注意这是归纳证明中仅有的情况。如果只有1个球,它就是次品了,称一次就可以知道比正品轻了还是重了。

    假设结论对k-1次正确。考虑第一次天平称量,一边取(3^(k-1)-1)/2个加上一个正品球,另一边取(3^(k-1)+1)/2个球。我们知道这次称量以后,如果天平平衡,那么嫌疑在外面。余下k-1次可以解决这里的不超过(3^(k-1)+1)/2个球,其中有且仅有一种情况不知其次品的轻重。如果天平不平衡,天平的两边都是半确定的球。由引理1知道,余下k-1次可以解决这里的(3^(k-1)-1)/2 + (3^(k-1)+1)/2 = 3^(k-1)个球。因此称k次,可以并最多解决(3^k + 1)/2个球。证毕。

    定理:在一堆等重球中有一个重量不同的次品球,用天平称k次找出来,这堆球可以且最多是(3^k - 1)/2个球。

    证明:在第一次称量时我们最多可以将3^(k-1)-1个球两等分放在天平上,如果不平衡,由引理1,可以再称k-1次分辨3^(k-1)-1个半确定的球。如果平衡,天平这里都是已知球,由引理2,可以再称k-1次解决外面的(3^(k-1)+1)/2个球。所以总共可以解决(3^k-1)/2个球。证毕。

    因为这个证明是构造性的,所以可以由此得出相应的称量方案。如果给定的球数比这个构造性证明中的球数少,那么称量过程中在每次分堆时应尽量三等分,并把不齐整的数搁在外边那堆。

    如果在称球问题中不知道有没有这个次品球存在,这和第3种情形是同一个问题。从引理2的证明中知道,只有每次分堆时,天平都是平衡的,总是被分在外面的那个球不知其相比正品是偏轻、偏重还是正常。把这个球去掉,或者说要解决的问题少了一个球就行了。这也就是说,用天平称k次可以在一堆(3^k-3)/2个球中确定有没有一个重量不同的次品,(如果有的话)次品是哪一个,以及次品是较轻还是较重。

 

posted @ 2013-05-03 18:34  姚来飞  阅读(898)  评论(1编辑  收藏  举报