趣题:这个图形有什么独特的性质?

下图是由 288 个相同的小立方体拼成的一个立体图形,它有一个非常独特,非常难能可贵的性质。要想用若干个相同的小立方体构造出一个具有同样性质的立体图形,这绝对不是一件容易的事情。事实上,下图已经是目前已知的满足该性质的立体图形中所用小立方体个数最少的了。你能猜出这个性质是什么吗?

Read more…

趣题:构造点集使得每条直线上的点都一样多

我们很容易在平面内放置很多点,使得任意两点确定的直线都只经过这两个点——你需要做的,仅仅是让任意三点都不共线就行了。那么,能否在平面内放置若干个点,使得任意两点确定的直线总是恰好经过三个点呢?更一般地,对于任意正整数 n > 2 ,能否在平面内放置若干个点,使得任意两点确定的直线总是恰好经过 n 个点呢?当然,我们要排除掉所有点都共线这种平凡的情况。

记得我很小的时候就想过这个问题。小时候有一种经典的智力题,大致就是叫你把多少多少棵树种成多少多少行,使得每行都有多少多少棵树。比方说,如何把 9 棵树种成 10 行,使得每行都有 3 棵树?答案如下图所示。但请注意,其实图中还有不少直线上只有 2 棵树,比如那条蓝色的虚线。

当时,我就曾经想过,如果树苗足够多,能否让每条可能的直线上都种有 3 棵树呢?于是,我没事儿就来尝试一番,但每一次都以失败告终。后来我才知道,这是不可能的。根据 Sylvester–Gallai 定理,在任意一个有限点集中,一定有一条直线恰好只经过两个点,除非所有的点都是共线的。这个定理有一个非常漂亮的证明,这里不得不提。假设存在某个点集,满足任意两点确定的直线上都存在其他的点。画出所有可能的直线,作出每一个点到每一条直线的垂线段,然后找出所有这些垂线段中最短的一条。不妨假设这条最短的垂线段是点 P 到某条直线 l 的垂线段,垂足点记作 H 。由假设, l 上至少有三个点,因此至少有两个点分布在垂足 H 的同一侧(允许和垂足重合)。不妨把这两个点记作 R 、 Q ,如下图所示。由于我们画出了所有可能的直线,因此 P 、 R 两点之间也有一条直线;此时, Q 到 PR 的垂线段就是更短的垂线段,于是产生矛盾。要想避免这样的矛盾,唯一的方法就是,所有的垂线段长度都为 0 ,换句话说我们根本作不出所谓的垂线段。这也就是所有点全都共线的情况。

我们刚才证明了,在一个点集中,只经过两点的直线一定存在,除非所有点全都共线;因此,当 n > 2 时,我们自然就无法让每条可能的直线上都有 n 个点,除非所有点全都共线。

Read more…

高度对称的多面体和它们的对偶多面体

正四面体、正方体、正八面体、正十二面体、正二十面体,这是古希腊人就发现的五种正多面体,它们拥有最高标准的对称性。这五种正多面体又叫做 Platonic 体,它们在古希腊的哲学观念中占据着至关重要的地位。 Leonhard Euler 发现,多面体的顶点数 V 、棱数 E 和面数 F 一定满足公式 V – E + F = 2 ,这叫做 Euler 多面体公式。利用这个公式,我们可以证明正多面体只有五种。假设一个正多面体的每个面都是正 p 边形,那么所有 F 个面一共就有 p · F 条边;每两条边拼在一起形成了一条棱,因而总的棱数就是 E = p · F / 2 。反过来, F 就应该等于 2 · E / p 。不妨再假设每个顶点处都汇集了 q 条棱,那么总的棱数似乎应有 q · V 个;但这样计算的话,每条棱都被重复算了两次,因而总的棱数实际上应该是 E = q · V / 2 。反过来, V 就应该等于 2 · E / q 。另外, Euler 的多面体公式告诉我们, V – E + F = 2 始终成立。

把上面几个式子合在一起,于是得到:

2 · E / q – E + 2 · E / p = 2

整理可得:

1/p + 1/q – 1/2 = 1/E

因此, 1/p + 1/q 一定大于 1/2 。但是,正多面体每个面至少都有三条边,每个顶点也至少汇集了三条棱,因此 p 和 q 都是大于等于 3 的整数。要想 1/p + 1/q > 1/2 ,只有以下五种可能:

  1. p = 3 , q = 3
  2. p = 3 , q = 4
  3. p = 4 , q = 3
  4. p = 3 , q = 5
  5. p = 5 , q = 3

这正好对应于那五种正多面体。最近 Localhost-8080 沉迷于折纸,我也因此学习了不少与多面体相关的东西。想不到,这些看似老生常谈的东西,里面的水可深着呢。这五种正多面体表面上只是问题的五个不同的解,但互相之间却有着出人意料的联系。我们再列一个更加完整的表格,有意思的东西会慢慢呈现出来:

名称 面数 F 顶点数 V 棱数 E 每个面的边数 p 每个顶点处的棱数 q
正四面体 4 4 6 3 3
正方体 6 8 12 4 3
正八面体 8 6 12 3 4
正十二面体 12 20 30 5 3
正二十面体 20 12 30 3 5

Read more…

趣题:用两枚硬币随机生成 1 到 n 之间的整数

为了随机地并且概率均等地生成一个 1 到 6 之间的整数,通常的做法就是抛掷一个正方体的骰子。不过,这并不是唯一的办法。如果你有一枚公正的、正反概率相同的硬币,以及一枚不公正的、正反概率之比为 1 : 2 的硬币,那么你也能概率均等地生成一个 1 到 6 之间的整数。首先抛掷那枚不公正的硬币,那么结果有 1/3 的概率是正面朝上,有 2/3 的概率是反面朝上。如果出现了正面朝上的情况,那么令 i = 1 ;如果出现了反面朝上的情况,那么就再抛掷那枚公正的硬币,掷出正面则令 i = 2 ,掷出反面则令 i = 3 。最后,再抛掷一次公正的硬币,如果正面朝上则令 j = 0 ,如果反面朝上则令 j = 3 。容易看出, i + j 的值有 1, 2, 3, 4, 5, 6 这六种可能,它们出现的概率是均等的,都是 1/6 。

有人或许会说,用硬币模拟骰子哪有那么复杂,只用一枚公正的硬币就能办到:连续抛掷三次硬币,并且规定掷出“正正正”代表数字 1 ,掷出“正正反”代表数字 2 ,“正反正”为 3 ,“正反反”为 4 ,“反正正”为 5 ,“反正反”为 6 ,掷出“反反正”和“反反反”则重来,这不就行了吗?不过,这种方法有一个局限性:它不能保证整个过程在有限步之内完成。而我们刚才的方法中,总的步骤数有一个上限:三步之内必然完成。

我们的问题是:是否对于所有的正整数 n ,都能找到两枚合适的硬币,使得借助它们便能在有限步之内概率均等地产生一个 1 到 n 之间的整数?

Read more…