几道经典的几何作图趣题

    这段时间的古代汉语课和现代文学史课的时间利用得很好,我已经看完了Mathematics and Plausible Reasoning Vol.II和How to Solve It,并且已经读完了What is Mathematics的第一章。前面两本书主要是对数学思维方法的系统研究,有趣的新鲜东西并不太多。书里拿了几道比较经典的几何作图问题当作例题,比较有意思,在这里与大家分享一下。

1. 顺次给出四条边a, b, c, d以及对边a与c的夹角α,作一个四边形;
2. 给你一个三角形,作出一个内接于此三角形的正方形(正方形的四个顶点都落在三角形的边上);
3. 已知三角形的一个角α,这个角所对的边的高h,以及这个三角形的周长p。求作这个三角形。

  
1. 顺次给出四条边a, b, c, d以及对边a与c的夹角α,作一个四边形:先作出△ABC,其中AC=a,AB=c,两边夹角为α。然后分别以b和d为半径,在B点和C点画弧相交于D。平移AB和BD补成一个平行四边形ABDE。四边形AEDC即为所求。

  
2. 给你一个三角形,作出一个内接于此三角形的正方形:不妨先尝试满足部分条件,只让三个点落在三角形的边上。可以证明第四个点的轨迹是一条直线,问题迎刃而解。

  
3. 已知三角形的一个角α,这个角所对的边的高h,以及这个三角形的周长p。求作这个三角形。这题有点难。你需要集中精力思考,那个周长应该怎么放才合适。于是想到用作等腰三角形的方法把三条边拼接到一条直线上去。这样问题转化为作一个底边为p,对角为α/2+90°,高为h的三角形。此三角形的顶点A由一条平行于DE的直线与一段圆弧的交点所确定。这段圆弧可以这样作:先随便作一个满足∠DA'E=α/2+90°的△A'DE,显然△A'DE的外接圆上与A'同侧的所有点对DE的张角均为α/2+90°,而这个外接圆的圆心就是A'D和A'E的垂直平分线的交点。找到△ADE后,AD和AE的垂直平分线与DE的交点即为点B和点C。

趣题:构造游戏初始状态使得后行者必胜

    考虑这样一个双人对弈游戏:在一个8×8的方阵里分别填上1-64这64个正整数。然后A和B两个人轮流在格子中取数,A先取,B后取。取数的规则很简单:取过的数不能够再取,并且除了第一次以外,以后每次取的数必须与某个已经取过的格子相邻。所有数都取完后,所取数之和最大的人获胜。
    很显然,这个游戏对于A更有利一些。我们可以轻易构造一个初始状态,使得先取的人必胜。考虑A的这样一个策略:总是取能取的数中最大的一个。如果每次A都可以取走整个棋盘中最大的那个数,那A就赢定了(因为每次B接下来取的数都比A小)。这样的初始状态是很容易构造出来的,比如我们只需要从左往右从上至下依次填入这64个数就可以了,这可以保证如果从n到64的所有数都取走了,则n-1也可以被取走。
    现在的问题是,能否构造一个初始状态,使得后取的人有必胜策略?提示,解决这道题需要有超强的“整人”能力。你得想出足够多的坏点子才能找到弄死先行者的方法。你的心肠坏到足以解决这个问题吗?

  
    解决问题的关键在于,我们要给A埋下“陷阱”。考虑这样一种局部构造:奇数个大数彼此相连,这些大数周围一圈全是小数。上图就是这样一个陷阱,钻石代表大数,其余黄色的格子都是小数。只要A踩进了某个黄色格子,他就中计了:B和A开始轮流取大数,但大数只有奇数个,因此B获得的大数比A多一个。为了让事情变得更简单,我们只考虑最简单的一种陷阱:只有一个大数,周围的邻格都是小数。我们还有几个难点:万一A一开始就把陷阱内的钻石取走咋办,又如何避免自己不会掉进陷阱,还有我们必须保证B从这些陷阱里赚到的足以弥补在其它地方亏的。要想有足够多的陷阱对A起作用,我们得布上至少三个陷阱,这样A可以在最能赚的陷阱里开局,但无法避免落入另外两个陷阱。为了保证自己不会掉进陷阱,我们可以把棋盘的其余部分划分为多米诺骨牌(一个个1×2的小长方形),这样的话不管A取哪一个格子,B总可以取对应的另一个格子,不会踩到陷阱。于是我们想到了下面的这个构造:

    

    我们在四个陷阱里分别填上1-2-3-61,4-5-6-62,7-8-9-63,10-11-12-64这四组数,每个多米诺骨牌里填上两个相邻的数。这样的话,A的最好策略就是从第一个陷阱里开始取数。他能从第一个陷阱里赚到(61+2)-(1+3)=59分,但他在其它陷阱里将分别丢掉(62+4)-(5+6)=55分、(63+7)-(8+9)=53分、(64+10)-(11+12)=51分。而多米诺骨牌一共只有24个,他最多只能捡24分回来,这是远远不够的。因此,先取者必输无疑。

参考资料:http://www.brand.site.co.il/riddles/200802q.html

趣题:鸽笼原理的应用 IMO 2001 Problem #3

    IMO 2001第三题:21个女生和21个男生一起参加了一场数学竞赛。结果显示,每个参赛者最多做对了6道题,并且对于任一对男生和女生,至少有一道他们都做对了的题。
    求证:存在这样的一道题,至少有三个女生和三个男生同时做对。

    当然,这个题目背景无趣而又生硬。如果是我的话,我肯定会把题目改成下面这个样子:21个女生和21个男生参加速配游戏,每个人独立地在自己的纸上写下不超过6种兴趣爱好。结果显示,对于任一对男女,他们都写下了至少一个相同的爱好。求证,存在某一个兴趣爱好,有至少三男三女都把它写上了。

    我是一个忠实于原题的好娃娃,因此还是用数学竞赛来当题目背景。对于每个问题,如果有至少3个男生答对了,就给这个问题添加一个标记“B”;如果有至少3个女生答对了,就给这个问题添加一个标记“G”。然后我们画一张21×21的表格,横行代表男生,纵列代表女生。每一个格子都代表一道对应的男女同时做对的题(不同的格子可能对应相同的题目),我们把对应的题目的“B”、“G”标记填进格子里。
    下面我们说明,每一横行里至少有11个格子标了“G”,每一个纵列里至少有11个格子标了“B”。考虑某一个特定的人,他(她)与每一个异性参赛者都有同时答对的题目,但他(她)自己最多只做出6道题。这6道题目需要“分配”给21个异性参赛者。我们希望知道最多有多少道题被不超过2个异性参赛者答对。显然,最极端的情况就是其中的5道题目每道分别被2个异性做对,剩下的第6道题被其余11个异性做对。反过来这也就是被至少三个人答对的题目最少的情况,因此每一行(列)里都有至少11个格子标有异性的标记。
    这样,我们就有了至少21*11个标有“G”的格子,和至少21*11个标有“B”的格子。但21*11*2 > 21*21,因此总有一个格子被同时标上了“G”和“B”。

来源:http://www.cut-the-knot.org/pigeonhole/BoysGirlsProblems.shtml

趣题:猜帽子游戏与Hamming编码

    三个人坐成一个圆圈,每个人头上戴着一顶黑色的或者白色的帽子。每个人都只能看到另外两个人头上的帽子颜色。现在,他们需要独立地猜测自己头上的帽子颜色。每个人都需要在自己的小纸条上写下“黑色”、“白色”或者“放弃”。如果说至少一个人猜对,并且没有人猜错,那他们就获胜了;只要有任何一个人猜错,或者所有人都写的“放弃”,那么他们就输了。如果在游戏开始前他们能够商量一个策略,那么最好的策略是什么?
    仔细想一下你会发现,要想保证他们百分之百地获胜是不可能的,因为游戏中大家不能交流信息,谁也不能保证自己能猜对。但是,有一种策略能保证他们有75%的几率获胜。事实上,当人数n=2^k-1时,我们有一种方法可以让获胜的概率达到(2^k-1)/(2^k)。你能想到这种策略吗?

    设身处地地想,你会想到一个很自然的策略:如果一个人看到另外两个人的帽子颜色一黑一白,那这个人就放弃(换了你你也不敢猜);如果另外两个人的帽子颜色一样,那你就猜相反的颜色(概率上看也要大些)。我们来看一下在哪些情况下使用这样的策略能够获胜:

3个黑帽子:每个人都看到两个黑帽子,每个人都猜自己是白帽子,所有人都猜错;
2个黑帽子,1个白帽子:戴黑帽子的人看到一黑一白,于是放弃;戴白帽子的人看的是两个黑帽子,因此他将猜对,从而所有人都获胜;
2个白帽子,1个黑帽子:和上面这种情况是类似的,所有人都将获胜;
3个白帽子:和第一种情况是类似的,所有人都猜错。

    注意到只有在第一种情况和第四种情况下才会输掉游戏,这两种情况占了所有情况的2/8。于是,使用这种策略有75%的概率获胜。

    我们需要想一想,在这个看似几乎不可能获胜的游戏中,为什么这种策略会有如此高的获胜概率。最关键的就是,这种策略充分利用了胜负判断的准则:大家要错就一起错,只有一个人错怪划不来的;要获胜就只让一个人猜对,多几个人同时猜对也没用。

    根据上面的讨论,我们开始尝试把游戏的人数推广到一般的n。为了叙述方便,我们把每个人头顶上的帽子颜色依次用0和1来表示,数字1表示黑帽子,数字0表示白帽子。于是所有可能的情况就是2^n个01串。游戏开始前n个人预先约定一些“保留串”。他们的策略就是,观察其余n-1个人的帽子颜色:如果和所有的保留串都不匹配里,则放弃;如果恰好符合某个保留串,就猜自己是相反的颜色。比如,当n=3时,他们可以约定两个保留串000和111。如果实际情况是001的话,前两个人看到的是?01和0?1,不属于任何一个保留串,于是放弃;第三个人看到的是00?,正好和000相符,于是他就反过来猜自己不是那个0。注意到一些有趣的事实:如果实际情况恰好就是这些保留串之一,那大家就全猜错了;如果实际情况与所有保留串都相差两个数字以上,那大家全部放弃;如果实际情况与某个保留串恰好差一个数字,那只有一个人猜对,其余人放弃,从而获得胜利。现在的问题就是,如何寻找一个保留串集合,使得和某个保留串只差一个数字的情况尽可能的多。注意,我们必须要保证,任意两个保留串之间不能只差一个数字,这样的话才能保证发现有相符保留串的人不会面临“两可”的情况。假如你找到了t个保留串,则保证获胜的情况最多有t*n个(每个串“变一位”都有n种方法)。显然,最完美的情况就是t+t*n恰好等于总的情况数2^n。当n=2^k-1时,t+t*n是有可能恰好等于总情况数2^n的,也就是说每种可能的情况要么就是一个保留串,要么与唯一的一个保留串恰好差一位。此时,t+t*n=t(n+1)=t*(2^k)=2^(2^k-1),t应该等于2^(2^k-1-k)。下面我们说明这t个保留串是如何生成的。
    每个保留串都由原码和校验码两部分组成。我们把n位01串的位置编号转化为二进制,二进制里只有一个数字1的位置(即左起第1,2,4,8,…位)叫做校验码,有至少两个1的位置(3,5,6,7,9,…等其余位置)上的数字称作原码。显然,原码应该有n-k位(即2^k-1-k位)。枚举2^(n-k)种原码的01组合,对于每一组原码,定义第i个校验码的值为,除了它本身以外,所有编号的二进制表达中右起第i个数字为“1”的位置上一共有奇数个1还是偶数个1(相当于把标“x”的位置上的数异或一遍)。比如,第2个校验码是1,当且仅当有奇数个位置上的原码满足,位置编号的二进制表达形如…???1?且该位置上的数值正好也是1。所有可能的原码加上它对应校验码就是我们的保留串。

  01串:     a1  a2  a3  a4  a5  a6  a7
十进制编号:  1   2   3   4   5   6   7

二进制编号: 001 010 011 100 101 110 111
校验码1(a1):         x       x       x
校验码2(a2):         x           x   x
校验码3(a4):                 x   x   x
保留串0:     0   0   0   0   0   0   0
保留串1:     1   1   0   1   0   0   1
保留串2:     0   1   0   1   0   1   0
保留串3:     1   0   0   0   0   1   1
保留串4:     1   0   0   1   1   0   0
   ……      ……     ……        
保留串14:    0   0   1   0   1   1   0
保留串15:    1   1   1   1   1   1   1

    我们可以说明,对于任一个n位01串,只要它不是我们的保留串,我都有办法只变动一个数字让原码和校验码相符(从而变成一个保留串)。我们可以观察一下,由原码算出来的校验码和实际的校验码有哪些不同。如果只有一位校验码不同,直接把它改过来就是了;如果有多位校验码不同,那就找出改动哪一位原码可以让这些校验码同时取反。从位置编号的二进制的角度来考虑,这样的一位原码显然是唯一存在的。同时,我们可以保证任两个

用相同形状的多联骨牌拼接完全对称图形

    最近,Claudio Baiocchi提出了这样一个问题:用相同形状的多联骨牌拼成完全对称图形,问对于哪些多联骨牌问题是有解的。这个问题最早出现在Erich Friedman今年一月的Math Magic里。令人吃惊的是,所有不超过6联的骨牌都是有解的。Erich Friedman自己找到了大多数的解,Corey Plover也找出了一些解,其余的解则是George Sicherman发现的。
    单联到6联的骨牌个数分别为1, 1, 2, 5, 12, 35。它们的解分别如下:

Monomino:

Domino:

Trominoes:

Tetrominoes:

Pentominoes:

Hexominoes: