主题:【原创】从两个经典智力趣题谈起(一) -- 丁坎
可找出,平衡第三次和真品比较也可知轻重
金条就没有这个问题了。
切环那道题我按金条的方法解了,还是衲子此贴链接出处说的明白。
每次称,结果只有三种,左边重(0),右边重(2),一样重(1)。这样称n次,最多只会出现3^n个不同的结果。而这些结果中,考虑到
1) 两个互补的数(相加等于3^n-1)实际上对应的是同一个小球;
2) 全是1的数字相当于称来称去,所有参加称的小球重量相等,这与已知(有一个小球重量不等)矛盾
这样能够测出的球的数目不会超过(3^n-1)/2。
那么如果我们能找到一种方法可以达到这个数目,我们就是找到了上确界。
这个方法我没有想到。如我上个帖子里所述,那里面测的是(3^n-3)/2个小球,要想加上第(3^n-1)/2个小球,每次称的时候都要把它放在左边,右边加上一个已知是正确的小球。可是正确的小球在称完第一次以后才能得到,除非改题。
本帖一共被 1 帖 引用 (帖内工具实现)
这里举个实例,三次称12/13个球的方法
首先编号,编号过程冗长无聊,大家完全可以跳到最后面看结果(ctrl+f查找“好了现在开始称”)。
第一步把0-26用三进制表示出来:
decimal ternary
0 000
1 001
2 002
3 010
4 011
5 012
6 020
7 021
8 022
9 100
10 101
11 102
12 110
13 111
14 112
15 120
16 121
17 122
18 200
19 201
20 202
21 210
22 211
23 212
24 220
25 221
26 222
在把其中互补的放在一块
#1 #2
000 222
001 221
002 220
010 212
011 211
012 210
020 202
021 201
022 200
100 122
101 121
102 120
110 112
111 111
调整一下编号1和编号2,除了000/222以外,让4个小球编号1的每一位上是0的数目和是2的数目相等。我用的方法是,先把编号中1的个数小于2的小球花插着标上0或1, 再让不为1的每一位除以2和它异或:
switch? #1 #2 1 2 3
0 001 221 0 0
1 002 220 1 1 0
0 010 212 0 0
x 011 211 x
1 012 210 1 0
0 020 202 0 1 0
1 021 201 1 0
0 022 200 0 1 1
1 100 122 1 1
x 101 121 x
0 102 120 0 1
x 110 112 x
剩下的3个x就等于它所在的列里1的个数被4减:
switch? #1 #2 1 2 3
0 001 221 0 0
1 002 220 1 1 0
0 010 212 0 0
1 011 211 0
1 012 210 1 0
0 020 202 0 1 0
1 021 201 1 0
0 022 200 0 1 1
1 100 122 1 1
0 101 121 0
0 102 120 0 1
1 110 112 1
如果一个小球被标为1,那么把它的编号1和编号2互换:
#1 #2
001 221
220 002
010 212
211 011
210 012
020 202
201 021
022 200
122 100
101 121
102 120
112 110
终于,我们用它给小球编号
#1 #2
1 001 221
2 220 002
3 010 212
4 211 011
5 210 012
6 020 202
7 201 021
8 022 200
9 122 100
a 101 121
b 102 120
c 112 110
好了现在开始称,每次称的时候,把所有编号1中第i位是0的放在左边,第i位是2的放在右边:
第一次称, 1368在左边,2457在右边
第二次称, 17ab在左边,2689在右边
第三次称, 2356在左边,89bc在右边
每次称完,如果左边重,记作0,右边重,记作2,一样重,记作1。称n此后得到的数字就是有问题小球的编号。如果是编号1,这个小球比其他小球重。如果是编号2,这个小球比其他小球轻。如果得到的数字是111,那么有问题的是从来没有称过的小球,也就是第13颗小球,但是我们不知道它轻还是重。
{}表示向上取整。
m={log2(N)}
n={log2(m)}
x=m-n.
当N=7,m=3,n=2,x=1.
当N=63,m=6,n=3,x=3.
当N=2047,m=11,n=4,x=7.
要讲《太玄经》,先来说说它的作者扬雄扬子云。扬雄在今天的知名度不太高,很多人甚至记得 陋室铭 中那句 西蜀子云亭 而仍然不知道扬雄何许人也。其实扬雄是个牛人,
智慧多得在任何一个方向都可以满溢而畅流的那种大牛人。雕虫小技这个常用语就源自他的自述-----他本来以文章辞赋名世,后来觉得这些东东技术含量太低,干脆声称那只是自己小时候玩玩而已,大了不玩这些。 那他玩什么呢? 什么都玩,见牛人就PK,当世的人大多服了他,没人有资格成为他的挑战对象,所以他憋得只好找古代的牛人PK。
汉书是这样记载的:
(词赋方面的创作只是是他早期的作为,上面那个单子还遗漏了一部他为了PK《尔雅》而写的的重要著作---《方言》
《輶轩使者绝代语释别国方言》简称《方言》,扬雄著,是中国第一部记录方言的著作,是中国语言学史上一部里程碑式的著作,成为世界上第一部方言比较词汇集而开方言地理学之先河。
)
他PK易经的作品就是我们今天要谈的《太玄经》,这部书写出来后,
意思是说,今天这些学者白吃官饭,连易经都搞不明白,能拿你的《太玄经》怎样?我怕后人只好拿这部书去盖酱菜坛子。这部书的命运被刘歆不幸而言中,后世的人实在被《太玄经》搅得头大,用李白的话来说就是 白首太玄经,《太玄经》的义理没什么人理解,它的书名倒成了深奥难解的符号。(那个以砸缸成名的优秀儿童司马光长大后又与酱菜坛子过不去----写了《太玄经集注》,要把《太玄经》从酱瓿上解救出来,效果不明显)
《太玄经》简单地说就是扬雄用八十一块砖头构建的一座自然哲学殿堂,要理解这座殿堂,最好的方法是对比这座殿堂与用六十四块砖头构建的另一座自然哲学殿堂----周易。
周易的六十四块块砖头就是六十四卦,每卦六个位置,每个位置有两种可能的符号:一长横或两短横___ _ _。
六个位置被称为六爻,爻位自下而上被称为:
初,二,三,四,五,六。每爻对应爻辞。
《太玄经》的八十一块砖头就是八十一首,每首四个位置,每个位置有三种可能的符号:一长横,两短横或三短横 ____ _ _ _ _ _。
四个位置自上而下被称为:
方,州,部,家。每个位置不直接对应辞句,而是每一首拥有自初至上的九赞。
首的数目等于3*3*3*3=81,赞的数目等于81*9=729,扬雄以两赞为一日(夜与昼),再加上一点小的调整,从赞数变出365,即一年的天数,这样就把历法融入了这座殿堂,据说还融合了当时的两种天文学说浑天说和盖天说,此处不再详论,有兴趣者可自行阅读《太玄经》。
重点还是我们关心的进位制。
谈进制,就必须有高位低位之分,且通过进制表达出来的数根据其大小有顺序之分。
这两点,在扬雄的《太玄经》里有没有呢?
有!
首先,书中《玄数》篇写道:
嬴就是满的意思,家,部,州,方就是从低位到高位的进位,(当然,方嬴則玄的玄并不是下一个高位,而只是说,整个《太玄》系统到此就圆满了)
其次,更直接的士,八十一首的顺序编次,由中至养,中为四个一长横,养为四个三短横
如果我们以一长横为0,二短横为1,三短横为2,
则可将中写为三进制数字0000=0,养写为2222=2*27+2*9+2*3+2*1=80
自中至养一共八十一首,其顺序与如上求得的数值大小完全一致,每一首的序数恰为其三进数值加1,同中养二例。
通过以上两点,可以确凿无疑的宣称《太玄经》蕴涵了三进制思想。
而以这两点为标准,可以说,断言邵雍之前的周易系统有二进制思想是不充分的。
珍珠问题的扩展将随后单独讨论,以方便那些对此问题兴趣特别浓厚的朋友。
扩展讨论完毕后将从数学回到哲学,综合讨论 周易,太玄,道德经 和 二进制,三进制的本体论意义。
另有深意吗?
若有,愿请教!
从两个经典智力趣题谈起(四)(上)
关于称珍珠问题,前面给出了一个常规解法,现在讨论一下三进制思路下的扩展和通解。
这个题目是公认的经典智力趣题,涉及的内容又比较初等,按说解法应该已经被历代高手穷尽了。我在前几年搞出来一个通解,却好象不见有人提到过,我自己也一直没有公布,今天就在西西河说说吧。(万一的确没有人提过,请大家记得我的发明权,呵呵。如果有人提出过,请告诉我出处。)
上篇 来由篇(有思路,较长,没耐心的等下篇吧)
解出称三次分十二颗珍珠的问题后,一个很自然的问题是:
如果允许称四次,可以区分多少颗珍珠?
如果一时没有头绪,不妨退一步:
如果允许称二次,可以区分多少颗珍珠?
这个不费事,任何人稍加尝试都可以得出正确答案:三颗。
二次三颗,三次十二颗,这中间是什么关系?
首先回到我们的常规解法,可以发现两点:
1 多次根据一次称量的三种不同结果来区分三个可能的赝品
2 当第一次称量的八颗珍珠平衡时,剩下的四颗可以通过两次称量完成检测,而这,在单独的两次中是无法完成的。
这就给了我们两个启示:
1 三进制
2 进行称量的不同次数之间不应该分开考虑,而必须作为一个整体考虑。
在这个背景下,我们可以想到,每次称量可以提供三种结果,N次称量可以提供的可能性是3的
N次方。考察一下3的2次方9与可分辨数3,3的3次方27与可分辨数12之间的关系,不难求得
可分辨数= (3的N次方-3)/2
这个公式的涵义是什么呢?
赝品在每次称量时有三种可能:左盘,右盘,不选
反过来,这三种可能在赝品轻重确定的情况下,将直接确定天平的状态。
比如说,赝品重于真品,则赝品的
左盘,右盘,不选
直接确定天平的
左重,右重,平衡
若赝品轻于真品,则刚刚相反。
这时我们明白,几乎每一组天平测量结果都可以确定一个赝品及其轻重,尽管我们此时还不明白减3的涵义,但已经可以确定这种思路的正确性了。
有了思路之后,还要找出具体的执行方案,也希望在具体方案中找到减3的原因。
以称三次为例(呵呵,我当时就是直接硬求出来的,并没有想到求助于称两次),我的思路是:
A
分别以1,0,-1标记一颗珍珠在某次称量时的状态:左盘,不选,右盘
以一个三维数值矢量来标记某颗珍珠的三次称量称量,
如1,1,1 则表示这颗珍珠每次都被放入左盘。
共有27个可能的数值矢量。
以左,平,右标记天平的一次称量结果:左重,平衡,右重
(其实用1,0,-1是一样的,但我当时脑袋被折腾晕了,不想再费脑浆去转换,所以用了更直观的记法。)
以一个三维字符矢量来标记天平三次称量结果,
如左,左,左则表示天平三次称量结果都是左盘更重。
共有27种可能的字符矢量。
现在的问题是要用27个数值矢量去标记珍珠,以找出赝品,
让我们来看看,这种标记需要满足些什么条件:
首先,要区分一颗珍珠与另一颗珍珠,另一颗珍珠必须拥有不同的矢量,
否则无法根据三次测量结果来区分则两颗珍珠。
所以,12颗珍珠应该拥有彼此不同的数值矢量。
其次,如果两颗珍珠每次取用状态完全相反,则无法判断是此重还是彼轻,
所以,一旦一个数值矢量被选中,由它取反而得的矢量就该被排除
比如说1,0,1被选中,-1,0,-1就该被排除。否则当称量结果为左平左时,我们无法判断
是1,0,1重于真品,还是-1,0,-1轻于真品。
也就是说,除000外的26个数值矢量可以被分成互为取反的13对,每对只能有一个被选用。
其实分析到了这里,也就明白了减去000是必然的,因为一旦它被选用,就意味着某颗珍珠根本没有参与称量,如果它恰好是赝品,我们就无从知道它比真品重还是轻。
再次,被选用的12个数值矢量相加,总和必须是0,0,0,这是要求天平左右两盘的珍珠数必须相等,这样才能保证天平称量的重量差别是由赝品与珍品的重量差别迎起的,而不是由左盘3颗右盘4颗那样的数量差别引起的。
当时就根据这三条标准,再减去0,0,0,并连带的减去极端情况的思路,把1,1,1和-1,-1,-1减去,(其实这两个矢量可以不排除)从24个可能的数值矢量中凑出了满足三标准的12个矢量,从而得到一个解。
硬凑很久之后,终于得到一个解答,虽然颇有成就感,但也累得精疲力竭。
所以后来我又狠狠地思考了一番,是否有一种方便快捷的方法,无论称量次数是多少,都可以迅速求出一组解,很幸运地是,这种方法被我找到了。
呵呵,喝口水先。
(使用尽量中文 兄的思路和我很接近,只是我用 +1,-1 代表左右似乎更直观一些,在第二,三个条件的表达上
也比较好理解。
使用尽量中文 兄 直接使用三进制编码应该也有一些优越性,他在寻求12个数值矢量时就不再是纯粹的拼凑,而有一套固定的程序,可惜我看得不太懂,也无法确证它在数学上的正确性,
特别是称量次数较大的时候。)
衲子的这个思路跟我在《三思科学》上看到的思路很接近外链出处
【描述】
i、 有Nb个黑球和Nw个白球,其总数N是个奇数。
ii、现在要从中挑出M个球(M为偶数,M≤N-1),满足这个条件:
其中的黑球个数Mb是偶数,白球个数Mw也是偶数。M=Mb+Mw。
(Nb、Nw 以及M 这三个数的数值是事先给定的;而Mb和Mw的取值有自由度,仅需满足:“是偶数”,以及“相加为M” 这两个约束条件即可)。
【引理】对于任意的和为奇数的Nb和Nw,以及任意的偶数M<Nb+Nw,前述任务都是可以达成的。
【证明】
不失一般性,假设Nw>Nb(Nw≠Nb,因为Nb+Nw 是奇数)。
先尽量选黑球,从0直到最大可能的偶数 Nb0 = 2×floor(Nb/2)。 [floor(x) 是取x的整数部分,例如floor(4.9) = 4。]
如果M∈[0, Nb0],那么任务就可以完成了。
如果M>Nb0,那么我们再接着取 Nw1 = M-Nb0 个白球,即可完成任务。 因为M和Nb0都是偶数,所以Nw1也是偶数。另外,也不难证明Nw1≤Nw。
所以任务完成。证毕。
【例子】假设有3个黑球,4个白球,要选满足条件(ii)的6个球。
做法:先取2个黑球,这就到黑球数为偶数的顶了。再接着取4个白球,即可完成任务。
【描述】有 N = 3^n(3的n次方)个球,为方便以后的描述起见,将它们排好序。已知的信息是:其中有一个坏球;并且这个坏球出现的位置及其轻重,可归类为下列两种情况:
1、如果坏球出现在前‘N+’个位置上(1,……,N+),那么坏球重于好球。
2、如果坏球出现在后‘N-’个位置上(N+,……,N),那么坏球轻于好球。
(N+和N-这两个数是已知的,N+ + N- = N。)
有一台只能给出{“左重”、“平衡”、“左轻”}指示的天平。
【称球引理1】称量n次,便可将那个坏球所在的位置找出来(由题设,一旦确定其位置,那么亦马上可知其为轻或为重)。
【证明】
(A)当 n=0 时,就是说,有 N = 3^0 = 1 个球,已知其中有一个坏球(并且N+也是已知的,其取值为0或1。譬如若N+=0,那么坏球必然轻于好球,因为坏球位于1,排在N+的后面),这就意味着,坏球的位置及轻重都是已知的。所以不需称量,就已经知道结果了。故而所需的称量次数为0。
(B)设 n=K 时,命题成立。
(C)当 n=K+1,我们在 N= 3^(K+1) 个球中,选出 M= 2 × 3^K 个球,条件是:其中可能是轻球的个数,以及可能是重球的个数,都是偶数。(由“二色划分引理”,这是可以做到的。)既然它们都是偶数个,那就可以各自分为两半,在天平的左右托盘各放一半。
例如,假设我们选出了总共 M=6 个球,其中两个可能为轻球,四个可能为重球。那么我们将可能为轻球的那两个,分成两个子集,在天平的左右托盘各放其一;将可能为重球的那四个,亦类似地分成两半。就是说,在天平的左右托盘各放1个可能是轻球的球,以及2个可能是重球的球。
现在,天平的设置为:左盘有{QQ……Q,Z……Z},右盘有{qq……q,z……z}。其中,‘Q’表示可能是轻球;‘Z’表示可能是重球。大写字母表示在左盘,小写字母表示在右盘。由划分方法,“QQ……Q”的个数等于“qq……q”的个数;“Z……Z”的个数等于“z……z”的个数。
我们进行称量,假设结果是“平衡”,那就说明,坏球只能在没被选中的那 N-M = 3^K 个球中。我们还剩下K次称量,由(B),我们可以从中找出坏球。
假设结果是“左轻”,那就说明,“Z……Z” 和 “qq……q” 那些球肯定是好的(因为不然的话,假设坏球是“Z……Z”或“qq……q”其中之一,那就应该左端为重、右端为轻才对),那些未被选中的 N-M = 3^K 个球 也都洗脱了嫌疑,因为罪魁祸首可以确定是在 “QQ……Q” 或者 “z……z”之中。 这些仍有嫌疑的球总共有多少个呢? 正好 3^K 个!因为“QQ……Q”和“z……z”各为选中的轻、重球的一半,所以它们的和就是选中的球总数的一半,就是 M/2 = 3^K。 我们现在还剩下K次称量,由(B),可以从中找出坏球。
假设结果是“左重”,推理类前。
引理证毕。
【描述】有 N =(3^n - 1)/2 个球,其中可能有一个坏球。(坏球可能比好球轻、也可能比好球重。)我们手头还有一个已知的好球。
有一台只能给出{“左重”、“平衡”、“左轻”}指示的天平。
【称球引理2】称量n次,便可确定:有没有坏球,若有,坏球在哪儿,它比好球轻还是重?
【证明】
分析:这N个球可能的状况共有 1 + 2×N = 3^n 个。(‘1’:没有坏球;‘2×N’:坏球在1……N个位置上,每个位置上还有轻或重两种可能。) 称量n次能给出的信息就是 3^n 个(不取log2())。所以,这个N是n次称量所能确定结果的球数上确界。 同样地,“称球引理1”也是上确界。
(A)当n=1,那么N=1,将它和手头的好球用天平作比较,就知道结果了。
(B)设n=K,命题成立。
(C)当n=K+1,我们如此来划分那N个球:
留着 N0 = (3^K - 1)/2 个球不选,选中的是 N - N0 = (3^(K+1) - 1)/2 - (3^K - 1)/2 = (3^(K+1) - 3^K)/2 = (3× 3^K - 3^K)/2 = 3^K. 这是奇数,无法分成相等个数的两份,放在天平的左右边。不用急,这时那个好球正好可以派上用场了。将那 3^K 个球,连同一个好球,划分成两份(每份有(3^K+1)/2个球),放在天平的两端。进行称量。
假设结果是“平衡”,那么那个可能的坏球只能在那留下的N0个球中。我们还剩K次称量,由(B),保证可以完成任务。
假设结果是“左重”,那么那个必然的坏球就在天平上的 N - N0 个球中,我们就可以给这些球贴上标签,凡是在左端的球,都贴上“可能重”的标签;凡是在右端的球,都贴上“可能轻”的标签。(好球不用贴标签了。) 那么我们手头的问题是: 3^K 个有标签的球,需要称量K次,将坏球(及其轻重)找出来。由“称球引理1”,这是可以完成的。
假设结果是“左轻”,推理类前。
引理证毕。