《美丽的数学》 读后感
读完《美丽的数学》一书,我不禁感叹,南外推荐的书真好。
这里,我希望通过三个例子解释这本书的厉害所在。
质数的数量——反证法
2 , 3 , 5 , 7 , … 2, 3, 5, 7, \dots 2,3,5,7,…,这是小学时学到的质数。
但是,谁曾想过,质数有几个?
早在几千年前,伟大的欧几里得想出了证明。(以下过程不严谨,只是简略说明)
他先假设有有限个质数,设为集合
S
S
S。
则
∏
x
∈
S
x
\displaystyle{\prod_{x\in S} x}
x∈S∏x 也为有限整数,设其为
y
y
y。
则
y
+
1
y+1
y+1 都不能被这些质数整除,所以
y
+
1
y+1
y+1 也为质数,矛盾,得证。
当问题很难证明时,可以假设相反的结论,一步步推导,直到矛盾。
反证法思想光芒无处不在。
归并排序——分治法
将 n n n 个数从小到大排序,该怎么排?
为了方便,我们将 i i i 数列的第 i i i 个数记为 a i a_i ai。
一般,我们会想到把最小的 a i a_i ai 先排到最前,删去,再将第二小的排到后面,依次往复。
这就是选择排序。
对于
n
n
n 个数,我们需要找到最小的数需要
n
n
n 次计算。
所以,选择排序需要
n
2
n^2
n2 次比较,记为该算法的时间复杂度为
O
(
n
2
)
O(n^2)
O(n2)
当然,因为各种原因,运算次数总会在
n
2
n^2
n2 前乘上一个常数或加上一个较小的数。
事实上,将这些数输入到电脑里(即使是全自动的)也要时间。
普通电脑一秒可以做 2 × 1 0 8 2\times10^8 2×108 (即两亿,我的电脑一秒跑 1.9 × 1 0 8 1.9\times 10^8 1.9×108 次)次运算,当 n n n 超过 2 × 1 0 4 2\times 10^4 2×104 ,即两万时,就比较慢了。
如何变快?
考虑到一个结论:单个元素总是有序的,这是最简单的情况。
所以,我们可不可以这样:将所需要排序的区间(即要从哪个点到哪个点排序)每次缩小一半,直到只剩一个数要排?
我们假定缩小的两半都已排好序,记为 X X X 和 Y Y Y,每次像选择排序一样依次取最小值。
通过简单的比较,我们知道,每次取出的最小值只能为 X 1 X_1 X1 或者 Y 1 Y_1 Y1。
所以,在 X 1 X_1 X1 和 Y 1 Y_1 Y1 中去更小的,放入答案序列中,删去该元素原来的位置,依次计算。
最后,其中一个序列会剩下一些元素,因为有序,所以直接全部放进去。
每次将问题分解成更小的问题,叫做分治。
分治的英文名叫做 Divide and conquer,分(Divide)而治(Conquer)之。
《美丽的数学》中还举了一个例子:分形。这里一种分形的前几步。
这是一个自相似图形,图中自己和自己的三个角长得一样,只是大小不同。
要得到该图形的前 k k k 步,我们可以分治解决。
设 f ( x , y , z ) f(x,y,z) f(x,y,z) 为 ( x , y ) (x,y) (x,y) 为最上角的 z z z 步的分形图案。
则 f ( x , y , z ) f(x,y,z) f(x,y,z) 可以分解为以下三个子问题:
上面的角,为
f
(
x
,
y
,
z
−
1
)
f(x,y,z-1)
f(x,y,z−1)。
左下的角,为
f
(
f(
f( 左下坐标
,
z
−
1
)
,z-1)
,z−1)。
右下的角,为
f
(
f(
f( 右下坐标
,
z
−
1
)
,z-1)
,z−1)。
思考:如何求出左下、右下的顶点坐标?
书中给出了更巧妙的办法。
将杨辉三角(帕斯卡三角)中所有的奇数全部涂黑。
如何证明?分治。
之前,我们的老师讲过一个巧妙的比喻:国家主席下达命令,一层一层下达,最后到达百姓手中。
这是什么?分治。
分治思想光芒无处不在。
几何还是图论?——图论建模
大家应该知道凸多面体的著名公式。
V − E + F = 2 V-E+F=2 V−E+F=2
,其中 V V V 为顶点数, E E E 为边数, F F F 为面数。
该如何证明呢?
这是一个正方体。为了去重,我们已经删去了最底下的面,其它所有边都在图上。
现在我们对它进行略微调整:
可以发现,只要边相同,图是等价的,因为这是一个图。(我不知道 这里 的图量词用张还是个)
图的本质就是顶点集合和连接它们的边集。
有可能各位还不明白,但是这样,问题就迎刃而解。
下面定义被高度简化,可能不准确。
我们定义连通图为图上点能互相到达的图。
我们定义一个子图为点集的子集(不一定是真子集)和连接这些点的边集的子集(同样)。
我们定义环为一个环上点连接的环上边的个数都恰好为
2
2
2 的子图。
我们定义(注意这里名词是我造的)圈为在图上一个环上点除了环的边以外互不直接相连的环。
以上看不懂就只用知道一句话:圈就是里面没有东西的圈。
如何计算面的总数?面的总数就是图中边的总数
×
2
\times 2
×2(
2
E
2E
2E),还是圈的个数
+
1
+1
+1。可以发现,两个圈共用一条边。
如何计算边的总数?它就是原来图上边的总数,也是
E
E
E。
如何计算顶点的总数?它就是图上顶点的总数,也是
V
V
V。
接着,我们开始删边,删到这个图只要再删边就不连通为止。
显然,一个
n
n
n 个顶点的图满足以上条件时有且只有
n
−
1
n - 1
n−1 条边,在数学里,我们称它为树。
在删边的过程中,圈的个数依次减少 1 1 1(共用的两个圈毁掉了,但是又生成了一个,也就是合并了)。
所以删掉 E − ( V − 1 ) E-(V-1) E−(V−1) 条边, 也就是 E − V + 1 E-V+1 E−V+1 条边后,边数从 F − 1 F-1 F−1 到 0 0 0。
所以 E − V + 1 = F − 1 E-V+1=F-1 E−V+1=F−1,也就是 E − V − F = − 2 E-V-F=-2 E−V−F=−2,也就是 V − E + F = 2 V-E+F=2 V−E+F=2。
得证。
这就是图论的精华所在——将不是图的东西转化为图。
图可以做到的还有很多。
图可以表示一个状态(比如走迷宫时,到了哪个点)能到达哪些状态。
这就是给两个状态加了一条单向边。
图可以表示优先级。
对于每组元素
u
>
v
u>v
u>v,就将
u
u
u 和
v
v
v 之间加一条单向边。
所形成的图叫做 DAG,即有向无环图。
思考:为什么不能有环?尝试反证。
图基本上涉及到各个领域。
图论建模精神无处不在。
综上所述,数学之美无处不在。
得证。