苏菲拉底 向最好的头脑提问
文库

MIT Godel Escher Bach Lecture 2

极简规则反复自我应用,为何能长出无限复杂的图形?代码里没有自调用函数时,递归藏在哪一层? 节目发布 2012-12-02 CCurran Kelleher 学生
来源:https://www.youtube.com/watch?v=HqmUuHnvJ98 · 内容由苏菲拉底翻译整理,仅供个人学习使用
本期讲者
Curran KelleherMIT 开放课程《哥德尔、埃舍尔、巴赫》暑期研讨课讲者,本讲代替 Justin Curry 主讲;讲义及树、科赫曲线、蕨类、曼德博集合等示例程序均由其编写,后长期从事数据可视化开发与教学。
学生课堂现场的听众(该课程面向高中生),围绕无限周长、随机性与递归判定等问题多次提问,推动了讲解的深入。

这期还没有生成总结。

核心句型 · 10
1. What makes X … is the fact that …
“So, what makes this function recursive is the fact that it calls itself.”
用「使 X 具有某性质的正是…」点出本质原因。主语从句 + is the fact that 从句,强调因果关系的核心,适合下定义或点题。
2. if you were to do …, … would …
“If you were to do this rule an infinite number of times … the volume inside of this object would be finite”
were to 虚拟条件句,描述纯理论、不可能实际执行的假设(如无限次迭代)。比 if you do 更突出「思想实验」的语气。
3. the more …, the longer/更 …
“The more that you zoom in on the coast of Britain, the longer the perimeter gets”
「越…越…」双比较级结构,描述两个量的联动关系。科学解释中表达单调关系的首选句式,可仿写 the deeper…, the harder…。
4. Say we … / Let's say …
“So, say we start with this point here, it'll map to this point here.”
口语中引入假设或示例的高频开头,相当于 suppose。讲解算法、举数字例子时非常自然,比 assume 轻松得多。
5. That's what it means to + v.
“That's what it means to have infinite perimeter, which is why it's just so fascinating.”
「这就是…的含义」,用于把抽象概念落到刚讲完的具体图景上,收束解释。后接 which is why 顺势给出结果,衔接流畅。
6. A is pretty much the same thing as B in terms of …
“The Sierpinski triangle is pretty much the same thing as the ferns in terms of mappings”
in terms of 限定比较的维度:「就…而言两者基本是一回事」。做类比、归纳共性时必备,避免绝对化。
7. It's been mathematically proven that …
“It's been mathematically proven or you know, extrapolated that … the volume inside of this object would be finite”
被动完成时引出已确立的结论,隐去证明者、突出结论权威性。学术写作与讲解中陈述定理、共识的标准句式。
8. But keep in mind (that) …
“But keep in mind this is a theoretical creation. It's just in the world of math.”
提醒听者注意前提或限制条件,常用于防止误解(这里区分数学理想与物理现实)。演讲中转折补充的常用信号语。
9. … correspond to …
“All the arrows in the diagrams correspond to function calls in the program”
表示两个系统间的一一对应关系,是描述同构、映射时的核心动词,可仿写 each node corresponds to a state。
10. Let's hold off on … until after …
“Let's hold off on that answer until after we do the next one.”
「先把…放一放,等…之后再说」。组织讲解节奏、设置悬念的实用表达,hold off on 后接名词或动名词。
本期生词 · 89
fill in phr. v. 0:00
代课;临时顶替(fill in for sb.)
recursive /rɪˈkɜːrsɪv/ adj. 0:00
递归的;本讲核心术语,指自我调用或自我指涉的
self-similar /ˌsɛlfˈsɪmələr/ adj. 0:40
自相似的(局部与整体形状相同),分形的定义性特征
zoom in on phr. v. 0:40
放大观察;聚焦于
factorial /fækˈtɔːriəl/ n. 0:40
阶乘(n! = n×(n-1)×…×1)
exclamation point phr. 0:40
感叹号(美式说法;英式为 exclamation mark)
handout /ˈhændaʊt/ n. 1:24
(课堂发的)讲义、资料
argument /ˈɑːrɡjəmənt/ n. 2:40
(编程)参数、实参;注意不是「争论」义
indices /ˈɪndɪsiːz/ n. 5:53
index 的复数:索引、下标
if you will phr. 5:53
姑且这么说吧(缓和措辞的口头插入语)
transition networks phr. 6:54
转移网络(RTN,用有向图表示语法的形式化工具)
essence /ˈɛsəns/ n. 6:54
本质、精髓(communicate the essence of 传达…的精髓)
notion /ˈnoʊʃən/ n. 6:54
概念、观念(比 idea 更正式)
at random phr. 7:50
随机地、任意地
curly braces phr. 8:32
花括号 { }(编程术语)
preposition /ˌprɛpəˈzɪʃən/ n. 9:29
介词(语法术语)
relative pronoun phr. 9:29
关系代词(如 which、that,引导定语从句)
loop back on themselves phr. 9:29
绕回自身、回到自身(描述递归结构的常用表达)
nest /nɛst/ v. 10:10
嵌套(一层套一层地放入);名词 nesting 嵌套结构
bagel /ˈbeɪɡəl/ n. 10:54
百吉饼(环形硬面包)
pseudo code /ˈsuːdoʊ koʊd/ n. 11:41
伪代码(只表达思路、不能直接运行的代码);pseudo- 假的
entry point phr. 12:04
入口点(程序开始执行的地方)
trunk /trʌŋk/ n. 12:04
树干
scale /skeɪl/ v. 14:09
按比例缩放;n. 尺度
branch out phr. v. 15:02
分叉、岔开;引申义为拓展新领域
equilateral /ˌiːkwəˈlætərəl/ adj. 16:50
等边的(equilateral triangle 等边三角形)
segments /ˈsɛɡmənts/ n. 16:50
线段;段、部分(segment)
execution /ˌɛksəˈkjuːʃən/ n. 17:35
(程序、规则的)执行
generalize /ˈdʒɛnrəlaɪz/ v. 19:25
推广、一般化(把特例扩展为一般规则)
randomness /ˈrændəmnəs/ n. 19:25
随机性
coastlines /ˈkoʊstlaɪnz/ n. 20:10
海岸线(coastline)
randomization /ˌrændəmɪˈzeɪʃən/ n. 20:10
随机化(人为引入随机扰动)
extrapolated /ɪkˈstræpəleɪtɪd/ v. 21:04
外推、推断(extrapolate:由已知趋势推出未知)
perimeter /pəˈrɪmɪtər/ n. 21:04
周长;(营地等的)外围
finite /ˈfaɪnaɪt/ adj. 21:04
有限的(反义词 infinite 无限的)
mind-boggling /ˈmaɪndˌbɑːɡlɪŋ/ adj. 21:40
令人难以置信的、烧脑的
iterations /ˌɪtəˈreɪʃənz/ n. 21:40
迭代(次数);iteration 一次重复执行
satellite image phr. 24:06
卫星图像
refine /rɪˈfaɪn/ v. 24:39
使更精确、细化、改进
getting at phr. v. 29:26
(be getting at)想说的是、意指
averaging /ˈævərɪdʒɪŋ/ v. 31:39
取平均值(average 作动词)
coordinates /koʊˈɔːrdənəts/ n. 31:39
坐标
hold off on phr. v. 32:16
暂缓、推迟(做某事)
not necessarily phr. 33:06
不一定、未必(部分否定)
bottom out phr. v. 34:11
触底;(递归)到达终止条件而停止
manifestation /ˌmænəfəˈsteɪʃən/ n. 36:08
体现、表现形式
genie /ˈdʒiːni/ n. 36:08
(阿拉伯神话中的)精灵,如神灯精灵
well put phr. 36:08
表述得好(That was well put. 这话说得好)
coordinate transformation phr. 37:26
坐标变换(把一个坐标系中的点映到另一坐标系的函数)
mapping /ˈmæpɪŋ/ n. 41:55
映射(数学:点到点的对应规则)
probabilities /ˌprɑːbəˈbɪlətiz/ n. 48:25
概率(probability)
sparse /spɑːrs/ adj. 48:25
稀疏的、零落的
spiraling /ˈspaɪrəlɪŋ/ v. 49:06
盘旋(上升);spiral 螺旋(运动)
repetitive /rɪˈpɛtətɪv/ adj. 50:46
重复性的(与 recursive 递归的相对,本讲关键对比)
stepping out of the system phr. 52:38
跳出系统(GEB 核心概念:从更高层次审视系统)
abstract /æbˈstrækt/ v. 53:15
抽象、提取共性(动词重音在第二音节,区别于形容词)
perceive /pərˈsiːv/ v. 53:15
感知、察觉、领悟
mathy /ˈmæθi/ adj. 56:07
(口语)数学味重的、偏数学的
complex plane phr. 56:07
复平面(横轴为实数、纵轴为虚数的平面)
imaginary numbers phr. 56:07
虚数(含 i = √-1 的数)
square root phr. 56:55
平方根
linear /ˈlɪniər/ adj. 58:16
线性的;not linear 指变化不成简单比例、难预测
origin /ˈɔːrədʒɪn/ n. 60:39
(坐标系的)原点;起源
spiral inward phr. 60:39
向内盘旋、螺旋式收敛
radius /ˈreɪdiəs/ n. 61:28
半径
escape iterations phr. 61:28
逃逸迭代次数(曼德博集合渲染术语:轨道逃出圆所需步数)
approximation /əˌprɑːksəˈmeɪʃən/ n. 62:10
近似、近似值
render /ˈrɛndər/ v. 62:10
渲染、绘制(图形学术语);亦有「使成为」义
pixel /ˈpɪksəl/ n. 62:10
像素
applet /ˈæplət/ n. 62:54
(尤指 Java 的)小应用程序
implemented /ˈɪmpləmɛntɪd/ v. 62:54
实现、落实(implement:把设计变成可运行的代码)
nub /nʌb/ n. 64:22
小凸起、疙瘩;(the nub of) 要点
reframed /ˌriːˈfreɪmd/ v. 65:31
重新框定、重新定义(reframe:换一种框架看待)
integer /ˈɪntɪdʒər/ n. 67:56
整数
notation /noʊˈteɪʃən/ n. 67:56
记法、符号体系
overloaded /ˌoʊvərˈloʊdɪd/ v. 68:39
重载(运算符重载:为自定义类型重新定义 +、* 等运算)
increment /ˈɪŋkrəmɛnt/ v. 68:39
使递增、加一;n. 增量
blow you away phr. 68:39
使你大为震撼、令你叹为观止
labyrinth /ˈlæbərɪnθ/ n. 69:28
迷宫(比 maze 更文学化,源自希腊神话)
chord progressions phr. 70:10
和弦进行(音乐术语:和弦的先后序列)
whatnot /ˈwʌtnɑːt/ n. 70:10
(and whatnot)诸如此类、等等(口语)
embeds /ɪmˈbɛdz/ v. 70:10
嵌入、植入(embed A inside B)
restates /ˌriːˈsteɪts/ v. 70:57
重新陈述;(音乐)再现(主题)
per se /ˌpɜːr ˈseɪ/ adv. 71:41
本身、就其本身而言(拉丁语借词,常用于否定句)
distinction /dɪˈstɪŋkʃən/ n. 71:41
区别、区分(draw a distinction between 加以区分)
fine musical ear phr. 72:15
敏锐的音乐听觉(a fine ear for… 对…的敏锐辨别力)
call stack phr. 72:49
调用栈(记录函数调用返回位置的后进先出结构)
retain /rɪˈteɪn/ v. 74:05
保留、保持、记住
pop /pɑːp/ v. / n. 74:51
弹栈、弹出(与 push 压栈相对,栈操作术语)
理解自测 · 8 题
1. 递归函数为什么必须「触底」(bottom out)?阶乘函数靠什么终止?

否则函数会无限调用自身,永远无法返回结果。阶乘靠条件「n 大于 1 才递归、否则返回 1」终止(第 3-4、50-51 段)。

2. 科赫雪花的著名悖论是什么?为什么会这样?

面积有限而周长无限。每次对边应用「三等分加凸起」规则都会让总长度变长,无限次迭代后周长发散,而图形始终被包在有限区域内(第 31-32 段)。

3. 为什么没有人能确定英国海岸线的长度?

海岸线近似分形:测量尺度越细,画出的折线越贴合细节,总长度就越长且不收敛,因此长度依赖于测量尺度(第 36-38 段)。

4. 混沌游戏每步随机选顶点,为什么最终图形却总是同一个谢尔宾斯基三角形?

因为三个「走一半」操作构成的映射把整体递归地映回自身,随机迭代的落点必然收敛并填满同一个吸引子结构,与具体随机序列无关(第 44-45、75 段)。

5. 谢尔宾斯基三角形和蕨类的程序代码里没有自调用函数,讲者认为递归体现在哪里?

递归在映射层面:各坐标变换把图形不断映回自身内部,代码只是重复执行这些映射。递归属于数学结构,不属于代码写法(第 71、76 段)。

6. 曼德博集合图像中黑色区域和彩色区域各代表什么?

黑色点是迭代 Z=Z²+C 后始终不逃出半径 2 圆的点,才是真正的曼德博集合;彩色只表示各点逃逸所需的迭代次数,是为了好看(第 90-91、97 段)。

7. 讲者如何区分「递归过程」与「递归结构」?各举了什么例子?

递归过程是生成规则(如递归函数、递归语法),递归结构是带嵌套的产物。英语句子和巴赫音乐是递归结构,由递归过程生成(第 104 段)。

8. 蕨类 IFS 的四个映射为何用 .01/.07/.07/.85 的不等概率?

概率决定各区域落点密度。若概率均等,「向上盘旋」映射难以连续发生,点大多堆在底部,图形稀疏难看;85% 的权重让主茎方向被充分填充(第 73-74 段)。

苏菲拉底 向最好的头脑提问 · ASK THE BEST MINDS 私享文库 · 内容仅供个人学习