回头看 — 人不擅长什么,就发明什么
这一章讲三件事: 前面十七章其实是同一件事的十七个样子; 作者自己给这套解题法起的名字,以及它长什么样; 还有一份账——这本书刻意没讲的东西,以及我们补进来的每一句书外内容。
它在全书链条里的位置: 这是收口。原书第 9 章只有三千多字,是一篇回顾; 我们在它后面加了一节账单,因为读者有权知道哪些话不是这本书说的。 需要的基础: 读过前面任意几章。
1. 先看现象:九个话题,还是一件事
把前面十七章的题目摆在一起:0、逻辑、余数、归纳、计数、递归、爆炸、不可解。 看起来是八九个互不相干的数学话题。
但原书最后那段师生对话点破了一件事:书里有不少相同的话题被反复提及—— 「遗漏」和「重复」、先试小的数、认清结构、抽象化1。
这一章要做的就是把那条线抽出来。
全章的主走查:第 06 章那道题「今天星期日,100 天后是星期几」
────────────────────────────────────────────────────────
§4 它示范的正是全书唯一的那套动作 —— 换个世界解,再换回来
────────────────────────────────────────────────────────
图说:这一章不引入任何新东西。走查用的是一道你已经会做的题,
目的是看清「你当时到底做了什么」。
2. 一条线:每一章都在把「人做不动」变成「机器照做就行」
这一节把九章各压成一句,请连着读下来2:
| 原书章 | 我们的章 | 它把什么变成了什么 |
|---|---|---|
| 0 的故事 | 01 | 给「没有」一个位子,规则就不必分情况;一句话:做出简单的规则 |
| 逻辑 | 02–05 | 把一件事切成「条件成立」和「不成立」两半,而不是眉毛胡子一把抓 |
| 余数 | 06–07 | 把分散的东西同等看待、加以分类;分完之后,原本要反复试的问题轻松解决 |
| 数学归纳法 | 08 | 把大问题分解成 n 个同类同规模的小问题,于是能依次机械地解答 |
| 排列组合 | 09–10 | 先缩小规模找出本质,再抽象化,于是数不清的东西算得出来 |
| 递归 | 11–12 | 分解成同类但不同规模的问题——注意和归纳法那一行的差别 |
| 指数爆炸 | 13–14 | 认出「规模稍一扩大就棘手」的形状;反过来利用它,复杂问题也能简化 |
| 不可解问题 | 15–17 | 划出原理上的界:能解决的问题是无穷的,但那个无穷只是可数的 |
第 4 行和第 6 行值得并排看,原书专门对比过: 归纳法分解出来的是「同类同规模」的小问题,递归分解出来的是「同类不同规模」的3。
3. 全书反复用的两个动作
这一节回答:如果只带走两个动作,该带哪两个。
动作一:先用较小的数试算4。
第 06 章找星期数的周期、第 10 章配药先做 5 粒、第 11 章汉诺塔先解 3 层、 第 12 章繁殖先数 5 天——全都是这一招。 原书给的理由是:用小数试一试,才能发现规律、性质、结构、循环; 否则即使解决了问题,也只是一知半解5。
动作二:把得到的结果抽象化6。
第 09 章从「10 米 11 棵树」抽象成「n 米 n+1 棵树」、 第 08 章从「1 加到 100」抽象成断言 G(n)——都是这一步。 原书给的理由更狠:如果一个解法只能用在当前这道题上,那它名不副实; 只有同样能用在其他类似问题上的方法,才配叫解法7。
两个动作合起来是一条完整的路:先蹲下来看小的,再站起来看一般的。
4. 主走查:幻想法则
这一节是全章的主走查,它给上面那两个动作起了个名字。
作者给自己这套解题法起了个名字,叫幻想法则8:
【幻想法则】
① 把问题从「现实世界」带到「幻想世界」
② 在幻想世界里解决它
③ 把答案带回「现实世界」
拿第 06 章那道题走一遍:
现实世界 幻想世界(余数的世界)
────────── ────────────────────
今天星期日,100 天后星期几? ──→ 100 ÷ 7 = 14 …… 余 2
│
↓
答案:星期二 ←────── 余数 2 对应星期二
图说:三步里每一步都能照着做,难的是第 ① 步 —— 想到「这道题可以搬进余数的世界」。
整本书教的其实就是「有哪些世界可以搬」。
原书说这也可以叫高速公路法则:要去很远的地方,先开 上高速、 高速跑到离目的地最近的出口、再下高速开过去9。
而作者提醒了一句:这本书里频繁出现了幻想法则——书中到处都是这种图10。 回头看确实如此:
| 章 | 现实世界 | 幻想世界 |
|---|---|---|
| 01 | 一个大数难比较 | 指数表示法(只看 0 的个数) |
| 03–05 | 一堆缠在一起的条件 | 真值表 / 卡诺图 |
| 06 | 10 的 100 次方天 | 除以 7 的余数 |
| 07 | 一张一张试铺法 | 黑白格的个数差 |
| 07 | 一条一条试路线 | 顶点的度数是单是双 |
| 14 | 一个 68 位的大数 | 它的对数(一个两位数) |
5. 为什么会有这些工具:因为人不擅长
这一节是原书最后一段真正的判断,它把全书的动机翻了出来。
作者说,回顾全书会浮现出「人类不擅长某事」的印象, 而正是这些「不擅长」,催生出了各种闪耀的智慧11:
| 人不擅长什么 | 于是发明了什么 |
|---|---|
| 处理庞大的数字 | 计数法:单元、按位、指数表示法 |
| 毫无差错地进行复杂判断 | 逻辑:逻辑表达式、卡诺图 |
| 管理大量事物 | 分组:同一组的东西当同类看待 |
| 处理无穷 | 用有限的步骤对付无穷(归纳法、递归) |
这四行合起来是一句话:想方设法缩小问题规模、降低复杂程度, 让问题达到「可以机械式地解决」的状态12。
而到了那个状态,就可以把接力棒交给下一位赛跑运动员——计算机13。
最后作者留了一句给读者:你有不擅长的地方吗?那里或许会让你产生新的智慧14。
6. 这本书刻意没讲什么,以及我们补了什么
这一节是我们加的,原书没有。它分两半:书的边界,和我们的账。