53

合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问
Page 2: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问
Page 3: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问
Page 4: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

前 言

前 言

计算机在科学、经济、商业等各个领域的重要作用早已广为人知。然而现在,

计算机科学不仅处于当今科学与技术的中心地位,而且正在改变着几乎所有的其他

学科。在一定程度上,这是廉价计算处理能力迅速发展的结果,但是最根本的改变

还是来自计算机科学的概念和工具在其他学科的成功应用。比如从数据的组织方式

到问题的求解方式;通过对生命系统的计算机建模,计算机科学的方法正在改变生

物学;类似地,它也正在改变天文学家、流行病学家和经济学家的研究方式。在这

一过程中,计算机科学正从一个令人讨厌的工程学科变成一个富有创造性的科学学

科。为了更好地进行问题求解、系统设计,以及理解人类行为,人们希望更多的研

究者能在理解计算机科学的基础上,从计算的视角来重新审视自身学科的问题,最

终产生一系列新的科学发现与技术创新。2008 年美国 NSF 启动的 CDI 重大计划就

是这个思路,而计算思维在这个重大计划中起着关键的作用。 计算机科学源于欧美,目前,美国的计算机科学处于世界领先地位。在美国,

人们将计算思维能力的培养列为高校计算机科学专业的第一任务,目前这一任务正

在从美国国家战略这个层面,由美国政府投入巨资向美国中小学延伸。 计算思维的结构是计算思维表述体系的一个关键问题,一个良好的结构会降低

人们理解该领域的复杂程度,促进该领域的发展。一般认为,周以真给出的计算思

维本质结构,Denning 给出的“伟大的计算原理”结构框架,以及本书推荐的“计

算机方法论”的结构框架是 3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

题、计算学科的 3 个学科形态、计算学科的核心概念、计算学科中的数学方法、计

算学科中的系统方法等内容作为本书的重要内容,对部分内容进行了删减、修改甚

至重写,侧重以“一般(类)问题求解能否自动有效进行”为核心的计算思维习惯

的训练和养成,力求通俗易懂。增加“跨学科的计算问题案例”一章,将原来“社

会与职业问题”中的职业化本质、道德选择,以及有效的检举等内容纳入其中。 本书是中国大学 MOOC“计算思维的结构”课程的配套教材,书中内容力争

做到计算思维课程表述的最小集,相关的习题和答案、程序、PPT 文档、微视频,

以及补充资料(如课程评估方面的 BLOOM 分类法、SOLO 分类法,难度、复杂度

与能力)等均放在课程网站上,供大家参考。 本书是陈国良院士领导下的教育部“以计算思维为切入点的大学计算机课程

改革项目”的成果之一,本书的出版得到了国家自然科学基金项目(61363070)和 2014 年教育部高教司——微软公司校企合作专业综合改革项目的资助,以及教

育部高等学校大学计算机课程教学指导委员会各位同仁的帮助和支持,在此一并表

示感谢! 作 者

2017 年 5 月

Page 5: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

1

目 录

第 1 章 绪论..................................................... 1 1.1 计算思维概述................................................ 2

1.2 计算思维的结构............................................ 5

1.3 计算机方法论概述........................................ 8

习题 1 ................................................................... 10

第 2 章 计算学科的基本问题.............. 12 2.1 汉诺塔问题.................................................. 12 2.2 算法复杂性中的难解性问题 ...................... 14 2.3 证比求易算法.............................................. 14 2.4 P=NP? ........................................................ 15 2.5 RSA 公开密钥密码系统 ............................. 16 2.6 停机问题...................................................... 19 2.7 旅行商问题与组合爆炸问题 ...................... 21 2.8 找零问题、背包问题与贪婪算法 .............. 23 2.9 GOTO 语句与程序的结构 .......................... 24 2.10 哲学家共餐问题与计算机的

资源管理 ................................................... 26 2.11 两军问题与计算机网络 ............................ 27

2.11.1 两军问题 .......................................... 27

2.11.2 互联网软件的分层结构 ................. 28 2.12 人工智能中的若干哲学问题 .................... 29

2.12.1 图灵测试 .......................................... 29 2.12.2 西尔勒的“中文屋子” ................. 31 2.12.3 计算机中的博弈问题...................... 31

习题 2 ................................................................... 33

第 3 章 计算学科的 3 个学科形态 ... 34 3.1 一个关于“学生选课”的例子 .................. 34

3.1.1 对“学生选课”例子的

感性认识 ............................................ 34 3.1.2 对“学生选课”例子的

理性认识 ............................................ 36 3.1.3 “学生选课”系统的工程设计 ......... 37

3.2 抽象形态...................................................... 38

3.3 理论形态 ...................................................... 38 3.4 设计形态 ...................................................... 39 3.5 3 个学科形态的内在联系 ........................... 40 3.6 计算机语言的发展及其 3 个学科

形态的内在联系.......................................... 42 3.6.1 自然语言与形式语言 ........................42 3.6.2 图灵机与冯·诺依曼计算机...............44 3.6.3 机器指令与汇编语言 ........................50 3.6.4 虚拟机 .................................................52 3.6.5 高级语言 .............................................54 3.6.6 应用语言 .............................................55 3.6.7 自然语言 .............................................56

习题 3.................................................................... 58

第 4 章 计算学科的核心概念 .............. 61

4.1 算法.............................................................. 61 4.1.1 算法的历史简介 ................................61 4.1.2 算法的定义和特征 ............................62 4.1.3 算法实例 .............................................63 4.1.4 算法分析 .............................................66 4.1.5 常用的两类算法:搜索与排序 .......71

4.2 数据结构 ...................................................... 77 4.2.1 数据结构的基本概念 ........................77 4.2.2 基于 Vcomputer 机器的

数据结构概述.....................................78 4.2.3 基于 Vcomputer 机器的

数据的逻辑结构 ................................79 4.2.4 基于 Vcomputer 机器的

数据的存储结构 ................................83 4.3 数据的存储和表示 ...................................... 86

4.3.1 补码在计算机中的表示 ....................87 4.3.2 图像 .....................................................89

4.4 数据的编码、校验 ...................................... 90 4.4.1 字符、字符串和汉字 ........................91 4.4.2 奇偶校验算法.....................................92

Page 6: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

目 录

2

4.5 CC1991 报告提取的核心概念.....................93 习题 4 ....................................................................95

第 5 章 计算学科中的数学方法 .........99

5.1 数学的基本特征...........................................99 5.2 数学方法的作用.........................................100 5.3 计算学科中常用的数学

概念和术语 ................................................100 5.3.1 集合................................................... 100 5.3.2 函数和关系 ...................................... 102 5.3.3 代数系统 .......................................... 103 5.3.4 构造计算学科的逻辑电路的

基础——布尔代数 .......................... 104 5.3.5 一位加法器的设计.......................... 105 5.3.6 定义、定理和证明.......................... 108 5.3.7 必要条件和充分条件 ..................... 109

5.4 证明方法 ....................................................109 5.4.1 直接证明法和间接证明法 ............. 109 5.4.2 反证法 .............................................. 110 5.4.3 归纳法 .............................................. 111 5.4.4 构造性证明 ...................................... 112

5.5 计算学科构造性的基础

——递归和迭代.........................................112 5.5.1 递归................................................... 113 5.5.2 迭代................................................... 115

5.6 随机数和蒙特卡洛方法.............................116 5.6.1 随机数 .............................................. 116 5.6.2 蒙特卡洛方法 .................................. 118

5.7 公理化方法 ................................................119 5.7.1 理论体系 .......................................... 119 5.7.2 公理化方法的基本概念 ................. 120 5.7.3 实例................................................... 121

5.8 计算学科的形式化方法.............................122 5.8.1 形式系统的组成、基本

特点和局限性 .................................. 122 5.8.2 形式化方法概述.............................. 123 5.8.3 形式规格 .......................................... 124 5.8.4 形式验证 .......................................... 125

习题 5 ..................................................................126

第 6 章 计算学科中的系统

科学方法 ...................................... 128

6.1 系统科学与系统科学方法 ........................ 128 6.1.1 系统科学的基本概念...................... 128 6.1.2 系统科学遵循的一般原则 ............. 130 6.1.3 常用的几种系统科学方法 ............. 131 6.1.4 实例 ................................................... 131

6.2 软件开发中使用系统科学方法的原因 .... 132 6.2.1 人固有能力的局限性以及

使用工具后产生的力量.................. 132 6.2.2 复杂性............................................... 133 6.2.3 软件系统的复杂性 .......................... 134 6.2.4 软件开发的系统化方法

需要遵循的基本原则...................... 135 6.3 使用系统方法的思考 ................................ 137 习题 6 ................................................................. 138

第 7 章 跨学科的计算问题案例....... 139

7.1 社会与职业中 3 个典型的计算问题 ........ 139

7.1.1 职业化............................................... 139

7.1.2 道德的选择 ...................................... 140

7.1.3 检举 ................................................... 140 7.2 割圆术的计算问题 .................................... 141

7.2.1 割圆术的形式化描述...................... 142

7.2.2 割圆术的步骤 .................................. 142

7.2.3 实例 ................................................... 143

7.2.4 使用 Raptor 模拟割圆术................. 144 7.3 森林火灾的计算问题 ................................ 145

7.3.1 森林火灾的形式化描述.................. 146

7.3.2 模拟森林火灾的步骤...................... 146

7.3.3 实例 ................................................... 147 7.4 多普勒效应的计算问题 ............................ 149

7.4.1 多普勒效应的形式化描述 ............. 149

7.4.2 模拟多普勒效应的步骤.................. 150

7.4.3 实例 ................................................... 150 7.5 小世界网络模型的计算问题 .................... 151

7.5.1 小世界网络重连的形式化描述 ..... 151

7.5.2 模拟小世界网络重连的步骤 ......... 152

7.5.3 实例 ................................................... 152

Page 7: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

3

7.6 科赫曲线.................................................... 154

7.6.1 科赫曲线的形式化描述.................. 154

7.6.2 模拟生成科赫曲线的步骤 ............. 155

7.6.3 实例................................................... 155

7.6.4 使用 Raptor 模拟科赫曲线 ............ 155 7.7 向日葵种子生长模拟 ................................ 157

7.7.1 预备知识 .......................................... 158

7.7.2 向日葵种子生长模拟的

形式化描述 ...................................... 158

7.7.3 模拟向日葵种子生长的步骤 ......... 159

7.7.4 实例................................................... 159

7.7.5 使用 Raptor 模拟向日葵

种子生长 .......................................... 159 7.8 烟花模拟.................................................... 161

7.8.1 烟花模拟的形式化描述 ..................162

7.8.2 烟花模拟问题的粒子系统模型

中粒子运动的相关方程 ..................163

7.8.3 烟花模拟的步骤 ..............................164

7.8.4 使用 Raptor 对烟花模型

进行仿真 ...........................................164 7.9 俄罗斯方块游戏 ........................................ 167

7.9.1 俄罗斯方块游戏的形式化描述 .....167

7.9.2 构建一个俄罗斯方块模型

的算法步骤.......................................168

7.9.3 使用 Raptor 模拟俄罗斯

方块游戏 ...........................................168 习题 7.................................................................. 171

参考文献............................................................ 173

Page 8: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 1 章 绪 论

1

第 1 章

绪 论

伟大的计算原理是美国 ACM 前主席 Denning 教授,2003 年在 Communications of the ACM 上

发表的《伟大的计算原理》(Great Principles of Computing)一文中提出的一个旨在弘扬计算机科

学的概念框架。 Denning 认为,计算(Computing)是一门关于信息处理的科学,现在大量的事实表明,它是

一门人工科学,又是一门自然科学。如果我们将不同学科领域存在的问题当作一个计算问题,从

计算的角度揭开这些问题的神秘面纱,就有可能推动这些领域的发展,比如生命科学、化学、金

融学,甚至法律。而计算原理正是推动这些发展的关键。以前,我们对计算的描述,往往侧重其

核心的技术,比如编程、计算机制图、网络、高性能计算等。而如果按“伟大的计算原理”描述

计算,其好处如下。 (1)提供理解物理、社会或者其他现象的新方式。 (2)指出解决问题的新途径。 (3)强调创造知识,而不是使用信息。 (4)提高创造和创新能力。 (5)为计算机科学课程的教学提供新的方法,激发同学们的兴趣和爱好。 Denning 分析了计算技术,以确定它们所依据的原理,在《伟大的计算原理》一文中将计算

的原理划分为五个类别:计算(Computation)、通信(Communication)、协作(Coordination)、自

动化(Automation)、记忆(Recollection);2009 年 6 月 Denning 又在 Communications of the ACM上发表了论文《超越计算思维》(Beyond Computational Thinking),增加了评估(Evaluation)和设

计(Design)两个类别,总共有 7 个类别。 计算原理的类别就像是一个计算知识领域的窗口。每个窗口都有各自的视角,从不同窗口看,

会发现一些相同的素材。比如,可以从协作的角度来了解网络协议,也可以从通信的角度了解网

络协议,还可以从记忆的角度来了解网络协议。Denning 相信,这 7 个类别现在是完整的,并具

有持久的影响力。 我国教育部高等学校大学计算机课程教学指导委员会在综合考虑周以真教授和 Denning 教授

研究成果的基础上,在《大学计算机基础课程教学基本要求》(高等教育出版社,2016 年 1 月出

版)中给出了计算思维表述体系,如表 1.1 所示。表中增加了周以真教授非常强调的重要学科原

理,即“抽象原理”,给出了相应的 42 个核心概念,对掌握的重点也做了相应的说明。

Page 9: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

2

表 1.1 计算思维表述体系

分类 关注点 相关核心概念 掌握重点

计算 可计算性和计算

复杂性 计算模型、可计算性、计算复

杂性 了解计算发展的历史;了解图灵机、可计算性、

计算复杂性等基本概念

抽象 关注对象的本质

特征 抽象、抽象层次、概念模型、

实现模型

理解抽象及其过程;了解概念模型与形式模型;

掌握利用模型对问题进行分析和建模的方法;了

解抽象层次及虚拟机概念

自动化 信息处理的算法

设计 算法、程序;迭代、递归;启

发式策略、随机策略;智能 理解算法、程序的概念;掌握迭代、递归等基本

方法;了解典型问题算法的求解策略

设计 可靠和可信系统

的构建 分解、复合、折中、可靠性、

安全性、重用性

了解分解、复合、试错、折中等设计系统的基本

方法;了解信息封装、接口、原型系统等概念;

了解实现重用性、安全性、可靠性的思想

评估 复杂系统性能的

评价 评价指标与基准、瓶颈、冗余、

容错、性能仿真 了解度量系统性的指标和常见方法;理解瓶颈、

冗余、容错的概念;了解可视化建模与仿真

通信 不同过程和对象

间的可靠信息传

信息及其表示、信息量(熵)、

编码与解码、信息压缩、信息

加密,校验与纠错、协议

理解信息编码思想;理解信息在计算机内的表示

与存储方式;掌握基本编码方法;了解通信可靠

性保障的基本思想

协作 多个自主计算实

体间的有效配合

和时序控制

同步、并发、并行、事件、服

务 理解并发、并行、同步、死锁、事件服务的概念;

了解常见的协同策略与机制

记忆 信息的表示、存

储和检索

数据类型、数据结构、数据组

织、检索与索引、局部性与缓

理解常用数据类型和数据结构的概念;了解数据

类型、数据结构与算法和程序的相互关系;掌握

选择数据类型和数据结构的方法;了解提高数据

管理、访问效率的常用方法

1.1 计算思维概述

关于计算思维,周以真教授发表了 2 篇重要论文,分别为 2006 年发表在 Communications of the ACM 上的《计算思维》(Computational Thinking)和 2008 年发表在英国皇家学会《哲学汇

刊》(Philosophical Transactions of the Royal Society)上的《计算思维和关于计算的思维》

(Computational Thinking and Thinking about Computing)。在第 1 篇论文中,周以真给出了计算思

维的一个总的定义,并对计算思维具体是什么、其特征是什么进行了描述。第 2 篇论文探讨了计

算思维的本质。 计算思维的提出,对美国教育界和科学界均产生了重要影响,并促成了美国国家科学基金

(NSF)两个重大计划 CPATH 和 CDI 的产生。 2007 年,美国 NSF 启动了旨在振兴美国计算教育的国家计划——CPATH(CISE Pathways to

Revitalized Undergraduate Computing Education),该计划旨在通过“计算思维”从根本上改变美国

大学计算教育的现状。 2008 年,美国 NSF 又启动了一个涉及所有学科的以计算思维为核心的国家重大科学研究计

划 CDI(Cyber-Enable Discovery and Innovation),计划将计算思维拓展到美国的各个研究领域。

美国 NSF 希望通过 CDI 等研究计划,使人们在科学与工程领域以及社会经济技术等领域的思维

Page 10: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 1 章 绪 论

3

范式发生根本性的改变。基金会确信,这种思维范式的改变将会为美国产生更多新的财富,并最

终提高美国人民的生活质量。 2011 年,NSF 又启动了 CE21(The Computing Education for the 21st Century)计划,该计划

建立在 CPATH 成功的基础上,其目的是提高 K-14(中小学和大学一、二年级)老师与学生的计

算思维能力。

2015 年 12 月 10 日,经美国参众两院投票通过,美国总统在白宫签署了名为“让每个学生取

得成功的法案(Every Student Succeeds Act,ESSA)”,将以计算思维培养为核心的计算机科学提

高到与数学、英语等同的重要地位,并投入巨资在美国国内广泛推行。 计算思维的提出,同样引起了中国计算机界的重视。2010 年 7 月 19 日至 20 日,C9 高校联

盟(包括北京大学、清华大学、浙江大学、复旦大学、上海交通大学、南京大学、中国科技大学、

哈尔滨工业大学、西安交通大学)在西安交通大学举办了首届“九校联盟(C9)计算机基础课程

研讨会”。陈国良院士在会议上做了“计算思维能力培养研究”的报告。 会议研讨了国内外计算机基础教学的现状和发展趋势,并就如何增强大学生计算思维能力的

培养,进行了充分的交流和认真的讨论,2010 年 9 月在《中国大学教学》杂志上发表了影响深远

的《九校联盟(C9)计算机基础教学发展战略联合声明》,旗帜鲜明地把“计算思维能力的培养”

列为计算机基础教育的核心任务。2012 年 5 月,教育部高教司在合肥工业大学召开了“大学计算

机”课程改革研讨会,会上明确了大学计算机课程要像大学数学、大学物理一样,成为大学的基

础性课程。这是教育部对非计算机专业大学计算机课程的新要求。 针对国内外计算机教育发展的新动向,2012 年春节刚过,教育部高等学校计算机科学与技术

专业教学指导委员会、中国计算机学会教育专业委员会、全国高等学校计算机教育研究会召开了

一次主任(理事长)扩大会议,就计算思维能力的培养进行了研究。认为“随着信息化的全面深

入,无处不在、无事不用的计算使计算思维成为人们认识和解决问题的重要基本能力之一。一个

人若不具备计算思维的能力,将在从业竞争中处于劣势;一个国家若不使广大受教育者得到计算

思维能力的培养,将在激烈竞争的国际环境中处于落后地位。计算思维,不仅是计算机专业人员

应该具备的能力,而且也是所有受教育者应该具备的能力。计算思维,也不简单类比于数学思维、

艺术思维等人们可能追求的素质,它蕴含着一整套解决一般(类)问题的方法与技术。因此,作

为教育部计算机教育的咨询与指导机构和计算机教育专业社团,我们有责任来推动计算思维观念

的普及,促进在教育过程中对学生计算思维能力的培养,为提高我国在未来国际环境中的竞争力

做出贡献。”会议发表了“积极研究和推进计算思维能力的培养”报告。 在对计算思维进行了长达 5 年的跟踪研究和教学实践的基础上,教育部高教司在 2012 年设立

了“以计算思维为切入点的大学计算机课程改革项目”。2013 年 5 月,教育部高等学校大学计算

机课程教学指导委员会的新老两届主任和副主任共聚深圳,就进一步推动项目进展,在高校计算

机教育中加强计算思维的研究和教育进行了深入的讨论,并在深圳发表旨在大力推进以计算思维

为切入点的计算机教学改革的宣言,即“计算思维教学改革宣言”。 宣言开篇写道:一个古老而又年轻的概念,计算思维的概念,正在科技界和教育界萌发、激

荡和蔓延。所到之处,彻底更新和改变了现在被广泛认同的一些理论和认识。一种新的关于计算

和计算机科学的观点正在以雷霆万钧之势荡涤着旧有的传统,焕发出面向新时代和新技术的崭新

面貌。从事计算机科学、思维科学、教育科学、社会科学、人文科学等各方面的专家,围绕着不

同的要求和目的被吸引到这一领域里来。这种共同的兴趣正酝酿着新的重大的理论革命和技术飞

跃,一种全新的对计算机科学的理解和应用的时代已经展现在我们的面前。

Page 11: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

4

现在,人们已经认识到计算思维的重要性了,文化正在改变。中国一些学者甚至进一步地指

出,计算思维的培育是教育改革,乃至科技改革的一个重要突破口,或者说,是中国科教战线的

“诺曼底”。 为了充分地理解计算思维,下面,我们分别介绍计算思维的定义、计算思维的特征、计算思

维的本质、计算思维的结构等内容。 周以真教授在《计算思维》中给出了计算思维一个总的定义,该定义被国际学术界广泛采用。

计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机

科学之广度的一系列思维活动。为便于理解,文中又给出了计算思维更详细的 7 种描述和 6 大特

征,如表 1.2 和表 1.3 所示。

表 1.2 计算思维的 7 种描述

(1)计算思维是通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道问题怎

样解决的思维方法

(2)计算思维是一种递归思维,是一种并行处理,是一种把代码译成数据又能把数据译成代码的方法,是一种

多维分析推广的类型检查方法

(3)计算思维是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注点分离

(Separation of Concerns)的方法

(4)计算思维是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模,使其易于处理的思维方法

(5)计算思维是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法

(6)计算思维是利用启发式推理寻求解答,即在不确定情况下的规划、学习和调度的思维方法

(7)计算思维是利用海量数据来加快计算,在时间和空间之间、在处理能力和存储容量之间进行折中的思维方法

表 1.3 计算思维的 6 大特征

(1)概念化,不是程序化。计算机科学不是计算机编程。像计算机科学家那样去思维意味着远远不仅限于能为

计算机编程,还要求能够在抽象的多个层次上思维

(2)根本的,不是刻板的技能。根本技能是每一个人为了在现代社会中发挥职能所必须掌握的。刻板技能意味

着机械的重复。当计算机科学解决了人工智能的大挑战——使计算机像人类一样思考之后,思维真的可以变成

机械。然而,就时间而言,所有已发生的智力,其过程都是确定的。因此,智力无非也是一种计算。这就要求

人们将精力集中在“有效”的计算上,最终造福人类

(3)人的,不是计算机的思维。计算思维是人类求解问题的一条途径,但决非要使人类像计算机那样思考。计

算机枯燥且沉闷,人类聪颖且富有想象力,是人类赋予计算机激情。配置了计算设备,我们就能用自己的智慧

去解决那些计算时代之前不敢尝试的问题,实现“只有想不到,没有做不到”的境界。计算机赋予人类强大的

计算能力,人类应该好好利用这种力量去解决各种需要大量计算的问题

(4)数学和工程思维的互补与融合。计算机科学在本质上源自数学,因为像所有的科学一样,它的形式化基础

建筑于数学之上。计算机科学又从本质上源自工程,因为我们建造的是能够与实际世界互动的系统,基本计算

设备的限制迫使计算机科学家必须计算性地思考,而不能只是数学性地思考。构建虚拟世界的自由使我们能够

超越物理世界的各种系统。数学和工程思维的互补与融合很好地体现在抽象、理论和设计 3 个学科形态(或过

程)上

(5)是思想,不是人造品。不只是我们生产的软硬件等人造物将以物理形式到处呈现并时时刻刻触及我们的生

活,更重要的是计算的概念,这种概念被人们用于问题求解、日常生活的管理,以及与他人进行交流和互动

(6)面向所有的人、所有地方。当计算思维真正融入人类活动的整体以致不再表现为一种显式之哲学的时候,

它就将成为现实。就教学而言,计算思维作为一个问题解决的有效工具,应当在所有地方、所有学校的课堂教

学中都得到应用

Page 12: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 1 章 绪 论

5

计算思维吸取了问题解决所采用的一般数学思维方法,现实世界中巨大复杂系统的设计与评

估的一般工程思维方法,以及复杂性、智能、心理、人类行为的理解等的一般科学思维方法。 计算思维建立在计算过程的能力和限制之上,由机器或人执行。计算方法和模型使我们敢于

去处理那些原本无法由个人独立完成的问题求解和系统设计。 计算思维最根本的内容,即其本质(Essence)是抽象(Abstraction)和自动化(Automation)。

计算思维中的抽象完全超越物理的时空观,并完全用符号来表示,其中,数字抽象只是一类特例。 与数学和物理科学相比,计算思维中的抽象显得更为丰富,也更为复杂。数学抽象的重大特

点是抛开现实事物的物理、化学和生物学等特性,仅保留其量的关系和空间的形式,而计算思维

中的抽象却不仅仅如此。 计算思维中的抽象最终是要能够机械地一步一步自动执行。为了确保机械的自动化,就需要

在抽象的过程中进行精确和严格的符号标记和建模,同时也要求计算机系统或软件系统生产厂家

能够向公众提供各种不同抽象层次之间的翻译工具。 抽象层次是计算思维中的一个重要概念,它使我们可以根据不同的抽象层次,进而有选择地

忽视某些细节,最终控制系统的复杂性;在分析问题时,计算思维要求我们将注意力集中在感兴

趣的抽象层次,或其上下层;另外,对各抽象层次之间的关系人们也应该有一个初步的了解。 计算思维提出后,不少国家,如美国、英国,以及中国的学术组织举办过一系列的学术研讨。

其中,2010 年,在美国 NSF 的资助下,美国国家研究委员会(NRC)召开了一系列会议,给出

了《关于计算思维的本质和适用范围的工作报告》(Report of a workshop on the scope and nature of computational thinking),报告给出了“计算思维”的五个公开问题(Open Questions):计算思维

的结构问题、计算思维者的识别问题、计算思维与技术之间的关系问题、计算思维的教学方法问

题与计算思维相关的计算社团的角色问题。其中,第一个问题,也即“计算思维的结构问题”是

最重要的核心问题,下面做简单介绍。 在 NRC 的研讨会上,关于计算思维的本质和所应用的领域范围,与会者(包括来自美国科

学院、美国工程院和美国医学院的国家顾问)提出了许多不同的观点。 虽然与会人员没有明确表示不同意与自己不同的计算思维观点,但是几乎每一个人都在坚持

他们自己的观点,强调计算思维在某个特别方面的作用或者是对某个个体的重要特性。因此,为

了达成一致,与会人员提出了计算思维的结构问题,该问题涉及计算思维的核心是什么,计算思

维的组成元素是什么,不同元素之间的逻辑关系是什么等内容。 与会人员认为,一个符合逻辑的计算思维结构有助于计算思维的应用和发展。这个问题将引

发后续关于计算思维本质的结构、伟大计算原理的结构框架以及计算机方法论的结构框架等 3 种

具有代表性的计算思维结构的讨论,这种讨论会进一步加深人们对计算思维的理解。

1.2 计算思维的结构

根据周以真的定义,计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人

类行为理解等涵盖计算机科学之广度的一系列思维活动。 这样,问题来了,这里指的计算机科学的基础概念是什么,其中最为核心的基础概念又是什

么?如果回答是“算法”,则有可能将我们又带回传统计算机科学认识的老路,也即计算机科学=程序设计。

Page 13: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

6

美国 ACM 前主席 Denning 在《超越计算思维》一文中就是根据这个问题,对周以真教授提

出的计算思维给了如下两个否定: (1)计算思维不是计算机科学独有的特征; (2)计算思维不能充分地代表计算机科学的特征。 Denning 认为,他提出的“伟大的计算原理”能够做到这两点。 近年来,我国教育部高等学校计算机类教学指导委员会力推学生系统能力的培养,也从一个

侧面对计算思维的作用隐含地提出了不同意见。的确如此,尽管算法,或者更广泛地说程序设计,

对于计算机科学而言非常重要,但只是其中实践方面的一个部分。 Denning 认为,系统、模型、创新这些内容也是计算机科学实践方面的重要内容,并与程序

设计具有同等的地位,过分地强调程序设计不利于计算机科学的发展。Denning 担心,周以真提

出的计算思维如果讲不清楚的话,就有可能将我们带回我们曾一直想逃避的老路上去,也即计算

机科学=程序设计。 美国国家科学基金会注意到了关于“计算思维”认知的不同意见,2008 年春,委托美国国家

研究委员会对“计算思维的本质和适用范围”进行研讨,研讨会邀请了包括美国科学院、美国工

程院和美国医学院的代表参会,参会人员对计算思维在各自领域的重要作用进行了肯定,2010 年

4 月总结整理后的报告《关于计算思维的本质和适用范围的工作报告》由美国国家科学院出版社

出版,报告认为计算思维认知的关键在于确定什么是计算思维的基本元素,元素之间的关系又是

如何,从而引出了计算思维的结构问题。 一个领域的结构问题向来就是一个迷人的问题,如果这个结构能用公理系统来描述,就是最

理想的了,现在我们知道,根据哥德尔定律,在一个足够复杂的系统中,建立一个绝对完备的系

统是不现实的,但这不等于我们不追求这种系统,当然可以对完备性的要求适当地放宽,即使在

完备性方面有点“不足”,也是令人神往的。 想必周以真教授也深知其中的道理。2008 年 7 月,周以真教授又在英国著名期刊《英国皇家

学会哲学学报》上发表论文《计算思维与关于计算的思维》,对计算思维的本质进行了讨论,给出

了抽象(Abstraction)和自动化(Automation)的两个概念,明确了计算思维的本质是抽象和自动

化,也就是计算思维中最重要的两个元素,在《关于计算思维的本质和适用范围的工作报告》推

出后,周以真教授在其宣讲用的 PPT 文档中,用抽象(含抽象层次)和自动化构建了计算思维的

结构图。 大家注意,Denning 的两个“NO”不是说周以真提出的计算思维不好,而是说,Denning 自

己提出的“伟大的计算原理”更能充分地展示计算机科学的伟大。其实,周以真是从思维这个层

面给出计算思维本质的结构,Denning 是从原理出发给出计算思维的结构框架,显然,还可以从

思想方法这个层面给出计算思维的结构框架,这就是本书推荐的一种有效的计算思维教学框架,

也即“计算机方法论”的结构框架。本书认为,周以真给出的计算思维本质结构框架、Denning给出的“伟大的计算原理”结构框架,以及本书推荐的“计算机方法论”的结构框架是三种具有

代表性的计算思维结构框架。下面分别简单介绍。 1.计算思维本质的结构框架

2006 年 3 月,周以真发表《计算思维》一文,给出计算思维的定义,并对计算思维的特征进

行了描述。2008 年 7 月,周以真发表论文《计算思维与关于计算的思维》,指出计算思维的本质

是抽象和自动化。2010 年后,她给出了计算思维本质的结构框架图(见图 1.1)。

Page 14: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 1 章 绪 论

7

图 1.1 计算思维本质的结构框架图

2.“伟大的计算原理”结构框架

2003 年 11 月,Denning 在《ACM 通讯》杂志上发表文章《伟大的计算原理》,给出了最初的

5 个伟大原理:计算、通信、协作、自动化、记忆(见图 1.2)。2009 年 6 月,他又在《ACM 通

讯》杂志发表文章《超越计算思维》,增加了评估和设计两个伟大原理,将“抽象”原理放在设计

原理之中,Denning 认为,“伟大的计算原理”包含了周以真提出的“计算思维”的内容。2015

年 1 月,Denning 根据“伟大的计算原理”结构框架(见图 1.2)撰写了名为“伟大的计算原理”

的教材,并由麻省理工学院出版发行。

通信

协作

自动化

计算设计

评估

记忆

COMPUTINGMECHANICS

图 1.2 伟大的计算原理结构框架图

3.计算机方法论的结构框架

2001 年 7 月,在上海召开的 CC2001 工作研讨会上,本书作者介绍了“计算机科学与技术方

法论”,2002 年 9 月出版教材《计算机科学与技术方法论》,并给出了计算机方法论的公理化描述。

根据计算机方法论的结构框架,2007 年 9 月撰写出版了教材《计算机科学导论:思想与方法》,

2009 年,由计算机方法论结构框架构建的“计算机科学导论”课程被评为国家级精品,2011 年该

教材入选国家“十二五”规划教材,2015 年 7 月该教材第 3 版出版发行。本书也建立在计算机方

法论的结构框架之上,结构基本一致,只是更强调计算思维习惯的养成,以及跨学科的交融(见

图 1.3)。

自动化

抽象

应用语言

高级语言

汇编语言

机器指令

Page 15: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

8

图 1.3 计算机方法论的结构框架图

1.3 计算机方法论概述

计算机方法论(Methodology of Computer Science,MCS)是一个具体的科学技术方法论,它

将一般科学技术方法论中最基本的 C(Cognition,认知)和 P(Practice,实践)两个元组改为

更具体的 A(Abstraction,抽象)、T(Theory,理论)、D(Design,设计),因此,它是一个五元

组,即: MCS=<Q,A,T,D,F>

其中: (1)Q 是一个包含子集 A、T、D 的集合。 (2)A 是计算学科中所有属于“抽象”概念的集合。 (3)T 是计算学科中所有属于“理论”概念的集合。 (4)D 是计算学科中所有属于“设计”概念的集合。 (5)F 表示由 Q 到它自身的一个关系。 认知与实践以及其相互关系是一般技术方法论研究的核心内容。计算机方法论研究的核心内

容,其实也就是一般技术方法论研究的核心内容,只不过具体化为计算学科的抽象(感性认识)、

理论(理性认识)和设计(实践)3 个过程及其内在联系所要研究的内容。 由于“科学研究从问题开始”与“认识以实践为基础”是从不同角度得出的不同命题,而其

本质是一致的。因此,我们可以将科学问题从抽象、理论和设计 3 个过程中提取出来,构成与 3个过程具有相同地位的重要内容。

计算机方法论遵循一般科学技术方法论的普遍原理,但是,它又不同于一般科学技术方法论。 一般科学技术方法论在学科认识中具有一般性的指导意义;而计算机方法论直接面对和服务

计算机科学

系统科学 方法

社会和职 业问题

数学方法 核心概念

哲经法教文史 理工农医军管艺

计算机方法论

的结构框架

理论

设计

抽象

计算问题

Page 16: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 1 章 绪 论

9

于计算学科的认识过程,它是我们认知计算学科的工具。就某种意义而言,计算机方法论的建立

正是计算学科成熟的标志之一。 计算机方法论的研究不仅具有理论意义,也具有现实意义,它能促进计算学科的发展,有助

于计算学科的建设与人才培养。下面,从五个方面来概括它的意义。 (1)有助于我们正确理解计算学科中所蕴含的科学思维方法。 抽象、理论和设计是计算机方法论中最基本的 3 个概念。3 个学科形态的划分,反映了人们

的认识从感性认识(抽象)到理性认识(理论),再回到实践(设计)中来的科学思维方法,并有

助于我们从方法论的高度来认知计算学科。 (2)有助于总结和提升计算学科所积累的各种方法与经验。 计算学科自 20 世纪 40 年代诞生以来,科学家们在不到百年的时间里取得了大量的里程碑式

的科学成果,使该学科得到了迅猛的发展。这些成果所包含的研究方法更是一份宝贵的财富。 然而就大多数研究者而言,研究成果是他们自觉追求的目标,而方法则是为取得成果而采取

的手段。一旦研究工作获得成功,大多数研究者对于自己的科研成果的价值甚为清楚,而对获得

成果所使用的方法却重视不够,一般很少有人自觉地将自己的研究方法加以系统的总结和提升,

使它们成为具有普遍意义的思想工具。 计算机方法论的任务就是要系统地总结和提升这些方法,使它们成为具有普遍意义的思想工

具,从而被计算领域的工作者所掌握,以便使我们更好地从事该领域的工作。 (3)有助于促进计算学科的发展。 从计算学科的发展来看,计算学科的每一个重要进展几乎都与研究方法的改进密切地联系着,

计算学科每个领域的发展总是与那一时期的研究方法的发展水平相适应。 例如,在 20 世纪 50 年代,程序设计受当时技术的限制,如果说程序设计采用了一定的方法

的话,那就是技巧;60 年代末期由于软件危机以及硬件的发展,出现了规范化的程序设计;70年代末期,形成了以结构化方法为主的系统开发方法;80 年代人们发现,由于行业间语言的障碍,

要弄清用户的需求有困难,于是提出了原型化的思想方法;90 年代开始,随着人们认识的进一步

深化,提出了目前占主导地位的面向对象的思想方法。 新的思想方法是不会凭空产生的,它是对已有方法进行改进的结果,从以上研究方法的发展

来看,它符合实践、认识、再实践、再认识的一般规律。也就是说,它需要我们对现有方法进行

深入研究,在肯定它们具有认识功能的同时,又注意到它们的局限性,要根据研究对象的特点与

需要,对研究方法进行改进,实现方法上的突破,从而促进学科的发展。 (4)有助于确立正确的思想原则,把握正确的研究方向。 恩格斯在其著作《自然辩证法》中说过:不管自然科学家采取什么样的态度,他们还是得受

哲学的支配。问题只在于他们是愿意受某种坏的时髦的哲学来支配他们,还是愿意受一种建立在

通晓历史及其成就的基础上的理论思维的支配。一个研究者如果不具备正确的理论思维形式,不

以正确的思想方法作指导,在具体的研究实践中可能会常常碰壁,甚至对理应到手的研究成果也

可能会视而不见、置若罔闻。 计算机方法论是在一般科学技术方法论的指导下建立的,它吸收了其他学科已有的方法论成

果,遵守共同的方法论原则。同时,它又是解决计算学科特殊矛盾所需的、有着计算学科特点的、

相对独立的方法论,它直接面对和服务于计算学科的认识过程,使人们对计算学科的认识逻辑化、

程序化、理性化和具体化,它有助于我们在计算学科的研究中确立正确的思想原则,把握正确的

研究方向。

Page 17: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

10

(5)有助于计算学科的建设和人才培养。 如何进行计算学科的建设,是一个长期以来争论的问题。计算机方法论从计算学科的基本问

题,学科的抽象、理论和设计 3 个过程,学科的核心概念,数学方法,系统科学方法,形式化技

术,以及社会和职业的问题等方面出发,深刻地揭示了计算学科的本质,有助于我们对计算学科

的认识,从而有助于计算学科的建设。 计算专业的学生如能在大学的学习中系统地接受学科方法论的指导,以了解、懂得研究工作

的一般程序、操作技术与正确的思维方法,无疑有助于自己的成长。

习 题 1

1.1 美国 ACM 前主席 Denning 在《超越计算思维》一文中对周以真教授提出的计算思维给

了哪两个否定? ( ) A.计算思维不是计算机科学独有的特征 B.计算思维没有解决“计算机科学=程序设计”这个认知上的误区 C.计算思维不能充分地代表计算机科学的特征 D.计算思维没有体现计算机科学特有的设计和评估两个特征 1.2 美国 ACM 前主席 Denning 给出的两个否定,不是说周以真提出的计算思维不好,而是

说,Denning 自己提出的“伟大的计算原理”更能充分地展示计算机科学的伟大。其实,周以真

是从 这个层面给出计算思维本质的结构,Denning 是从 出发给出计算思维的结构框架,

显然,还可以从 这个层面给出计算思维的结构框架。 ( ) A.思想方法、原理、思维 B.原理、思想方法、思维 C.思维、原理、思想方法 D.原理、思维、思想方法 1.3 2010 年,在美国 NSF 的资助下,美国国家研究委员会(NRC)召开了一系列会议,给出

了《关于计算思维的本质和适用范围的工作报告》(Report of a workshop on the scope and nature of computational thinking),报告给出了“计算思维”的五个公开问题(Open Questions)。其中最重

要的核心问题是 。 ( ) A.计算思维相关的计算社团的角色问题 B.计算思维的结构问题 C.计算思维者的识别问题 D.计算思维与技术之间的关系问题 1.4 计算思维的结构问题涉及以下哪两个方面。 ( ) A.计算思维与技术的关系 B.计算思维的组成元素 C.计算思维不同元素之间的逻辑关系 D.计算思维者的识别问题 1.5 下面不属于计算思维特征的是 。 ( ) A.是思想,不是人造品

Page 18: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 1 章 绪 论

11

B.计算机的,不是人的思维 C.根本的,不是刻板的技能 D.概念化,不是程序化 1.6 计算机方法论中最基本的三个概念是 。 ( ) A.计算、抽象、设计 B.抽象、自动化、评估 C.抽象、理论、设计 D.计算、自动化、设计 1.7 为什么说不重视计算思维的结构问题,就有可能回到传统计算机科学认识的老路,即计

算机科学=程序设计?

Page 19: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

139

第 7 章

跨学科的计算问题案例 跨学科(Interdisciplinary,也译为“交叉科学”),指的是两门或两门以上的学科在学科思想

与方法层面上的交叉融合,以不断解决单门学科无法解决的问题进而促进各学科的持续发展。 跨学科的首要问题是沟通问题,如果大家都讲方言,比如一个人讲广东话,另一个人讲上海

话,沟通就非常困难。计算思维是一座桥梁,它的本质是抽象和自动化,它的分层抽象可以让人

们在某个特定的抽象层次(如各种软件开发平台)上忽视一些不必要、不相关的细节,专注于问

题的关键元素,进而达到控制和降低问题复杂性的目的。 计算机科学与其他学科的交叉融合,其核心就是将其他学科的问题转化为一个计算问题,从

计算的视角揭示这些问题的本质,实现一系列新的科学发现与技术创新。 本书前面 6 章从结构的角度,用大量的案例介绍了计算思维的基础概念,下面,介绍跨学科

的若干计算问题案例,包括社会与职业中的计算问题,数学领域中的割圆术和科赫曲线,地球科

学领域中的森林火灾,物理学领域中的多普勒效应,社会学领域中的小世界网络,生物学领域中

的向日葵模拟,艺术领域中的烟花模拟,游戏领域中的俄罗斯方块等。 除了社会与职业中的 3 个计算问题外,本章给出的其他案例均采用了可视化的计算机模拟仿

真实现。当今的计算机模拟仿真几乎融合了所有学科的知识和技术,无穷尽的计算能力为我们构

造几乎所有学科领域的计算模型成为可能,比如飞机模型的设计和测试(波音 777 飞机)、生命系

统的仿真、气候变化系统的仿真、甚至核爆炸的仿真等。现在,人们越来越相信,加强可视化的

计算模拟仿真研究是促进各学科融合发展、提高国家工业竞争力的一条有效途径。

7.1 社会与职业中 3 个典型的计算问题

跨学科,如何跨?用例子来说明问题。比如,在“社会与职业问题”方面,我们可以将职业

化问题转化为一个计算问题,从“协议”的角度来理解职业化的本质,让职业化走得更顺。可以

用算法表示道德选择的过程以及有效检举行为的过程,从算法的角度帮助人们对其概念的理解。

7.1.1 职业化

“职业化”是从业人员、职业团体及其服务对象(公众)之间的三方关系准则。该准则是从事

某一职业,并得以生存和发展的必要条件。 实际上,该准则隐含地为从业人员、职业团体(由雇主作为代表)和公众(或社会)拟订了

一个三方协议,协议中规定的各方的需求、期望和责任就构成了职业化的基本内涵。如从业人员

Page 20: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

140

希望职业团体能够抵制来自社会的不合理要求,能够对职业目标、指导方针和技能要求不断进行

检查、评价和更新,从而保持该职业的吸引力。反过来,职业团体也对从业人员提出了要求,要

求从业人员具有与职业理想相称的价值观念,具有足够的、完成规定服务所要求的知识和技能。

类似地,社会对职业团体以及职业团体对社会都具有一定的期望和需求。任何领域提供的任何一

项专业服务都应该达到三方的满意,至少能够使三方彼此接受对方。 “职业化”是一个适用于所有职业的一个总的原则性协议,但具体到某一个行业时,还应考虑

其自身特殊的要求。例如,在广播行业里,公众要求广播公司和广播人员公正地报道新闻事件,

广播公司则对广播人员的语言有特别的要求。

7.1.2 道德的选择

道德选择就是在处理与道德相关的事务时以道德原则(Ethical Principles)为根据,以与道德

原则一致为标准对可能的道德观点进行选择的过程。进行道德选择是一件困难而复杂的事情。这

种选择往往伴随着来自经济的、职业的和社会的压力,有时这些压力会对我们所信守的道德原则

或道德目标提出挑战、掩盖或混淆某些道德问题。道德选择的复杂性还在于,在许多情况下同时

存在多种不同的价值观和不同的利益选择,我们必须为这些相互竞争的价值观和利益进行取舍。

除此之外,有时我们赖以进行道德选择的重要事实是我们不知道、无法知道或不清楚的。既然道

德选择可能会使一些人在受益的同时损害其他人的利益,所以就必须对此进行权衡,充分考虑各

种道德选择可能产生的后果。 道德选择一般包括以下步骤。

(1)确定所面临的问题:尽量搜集更多的信息以帮助自己对当前问题有一个清晰的认识,包

括问题的性质、已有的事实、前提和假设等。 (2)利用现有的道德准则,检查该问题的适用性,如果适用则采取行动进行解决;如果问题

比较复杂,解决方案尚不明确,则继续下面的步骤。 (3)从不同的角度认识所面临问题的性质,包括确定特定情况下适用的道德原则,并对相互

之间可能产生冲突的道德原则进行权衡。 (4)形成解决问题的候选方案。 (5)对候选方案进行评估,考虑所有候选方案的潜在道德后果,做出 为有利的选择。 (6)实施所选方案。 (7)对实施的结果进行检查和综合评估。

7.1.3 检举

检举指公司雇员、组织成员或其他社会成员对欺诈、辱骂、虐待等不正当行为向特定对象进

行揭发举报或向社会公开曝光的行为。 在这里,我们将讨论范围限制到一种与职业相关的具体、特定的检举方式上,作为训练有素

的职业人员要关心的检举如下。 (1)检举的目的是出于道德原因,如营利性公司的员工希望生产安全的产品。 (2)检举的内容是一些产品和操作方面的问题,如设计错误、使用劣等材料、违规操作或者

降低生产工艺标准等。 (3)所检举的问题极有可能对社会公众、公司员工以及产品的使用者造成严重的危害。 将注意力放在以上行为之内的主要原因如下。

Page 21: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

141

(1)检举合理化的条件是随着事件情况不同而变化的。 (2)经济损失与身体伤害有巨大的差别。对于不道德操作方式产生的经济损失和身体伤害这

两种案例的处理方式是不同的。 (3)内部检举和个人检举都会给公司带来问题,但这些行为和问题大都被限制在公司内部。外

部检举和非个人检举都是与公众相关的行为,因为此时受到伤害的是公众而非公司。作为典型,

应该分析那些由于公司的操作方式、产品设计、员工行为使产品使用者和无辜旁人受到严重人身

伤害,甚至死亡的案例。 (4)我们唯一要考虑的导致检举行为的动机出自于道德伦理,至于那些出于复仇心理或其他

原因的检举行为不在我们的讨论范围之内。 以上集中分析的是一种特殊的检举行为,它是没有政府参加、不为个人目的向外界检举公司

内部错误的行为。该行为的目的是为了揭露公司的产品、法令或政策可能严重威胁公众或使用者

的身体健康。 对于公司员工来说,任何检举行为都是不忠实和不服从的表现,可能会给公司带来负面影响

或将公司牵涉到某项调查之中。那么,在什么情况下员工能够检举公司,什么情况下不能? 若满足下面三个条件,则员工的检举行为是公正的。

(1)公司的产品或政策将会给公司员工或公众造成严重、巨大的伤害,无论受害人是使用者

还是旁观者或其他人员。 (2)一旦员工确定某种产品可能会给使用者或公众造成严重危害,应向其直接领导报告,使

其了解自己的意见。否则,该员工的检举行为就不是完全公正的。 (3)若员工的上级领导没有对员工的报告做出积极地反应,员工应该尽一切可能通过公司内

部程序在公司内部解决问题。 如果满足了这三个条件,公司还没有采取措施防止危害发生,则员工已经履行了对公司应尽

的义务,这时就有充足的理由对外检举公司产品可能造成的危害。但这并不表示公司里的员工有

义务对外检举公司的错误。 在上面三项条件的基础上,如果还满足下面两项条件,则员工的检举行为就是义不容辞的道

德义务。 (4)检举人必须有令人信服的确凿证据,能说服一个理智、公正的观察员相信他对事情的估

计是正确的,公司的产品、法令或政策确实会给公众或顾客造成严重的伤害或巨大威胁。 (5)员工必须有充分的理由让观察员相信,一旦将问题公之于众后,产品会进行改进。而且

员工应有绝对把握,值得为此冒险。 若员工不顾自己是否确信估计的正确性,不顾领导和同事的意见,不通过公司内部机制而直

接进行检举,就有可能使公司陷入困境,因此,检举不能滥用,检举必须满足一定的条件,比如

要有以上第 4 条和第 5 条的约束。

7.2 割圆术的计算问题

刘徽的割圆术在中国算术史上具有重要的历史地位。魏晋时期的伟大数学家刘徽于公元 263年在注释《九章算术》第一卷方田中的圆田数时,在我国古代 早将极限和无穷小分割的思想引

入到数学证明中,创造性地提出了“割圆术”的思想和方法。

Page 22: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

142

所谓割圆术,是用圆内接正多边形的面积去无限逼近圆面积并以此求取圆周率的方法。刘徽

沿着割圆术的思路,从圆内接正六边形算起,边数依次加倍,相继算出正 12 边形,正 24 边形……

直到正 192 边形的面积,得到圆周率π的近似值为 157/50 (3.14),还给出了一种更为精确的圆周

率近似值:π≈3927/1250 (3.1416)。

7.2.1 割圆术的形式化描述

为了计算方便,将正 n 边形外接圆的半径设为 1,则可以将割圆术 G 形式化描述为: G = <n, X, H, S>

其中: (1)n 是正多边形的边数,n = 6 × 2i,其中 i = 0, 1, 2…。 (2)X 是边长的集合,X = {x6, x12, x24,…, xn},其中 x6, x12, x24,…, xn 分别代表正 6 边形、正 12

边形、正 24 边形……正 n 边形的边长。 (3)H 是弦心距的集合,H = {h6, h12, h24,…, hn},其中 h6, h12, h24,…, hn 分别代表正 6 边形、

正 12 边形、正 24 边形……正 n 边形的弦心距。 (4)S 是面积的集合,S = {s6, s12, s24,…, sn},其中 s6, s12, s24,…, sn 分别代表正 6 边形、正 12

边形、正 24 边形……正 n 边形的面积。 (5)集合 X、H 和 S 中的元素满足如下递推关系:

2

22

2

2

12

(1 )2

(1 )2

nn

nn n

n nn n

xh

xx h

x hs s n

⎧ ⎛ ⎞⎪ = − ⎜ ⎟⎪ ⎝ ⎠⎪⎪ ⎛ ⎞= + −⎨ ⎜ ⎟

⎝ ⎠⎪⋅ −⎪ = + ⋅⎪

⎪⎩

(n = 6 × 2i,其中 i = 0, 1, 2…)

7.2.2 割圆术的步骤

(1)将正 n 边形外接圆的半径设为 1,从 n=6,即正六边形开始计算,可以证明正六边形的

边长 x6=1,弦心距 63

2h = ,面积 6

3

46S = × 。

(2)如图 7.1 所示,记弦心距 OA 为 hn,正 n 边形的边长 CD 为 xn,面积为 Sn,则 BC 和 BD为正 2n 边形的两条边。根据勾股定理,得

2

12n

nxh ⎛ ⎞= − ⎜ ⎟

⎝ ⎠ (即 2 2OA OC AC= − )

22

2 (1 ) ( 6)2n

n nxx h n⎛ ⎞= + −⎜ ⎟

⎝ ⎠ (即 2 2BC AC AB= + )

由图 7.1 可知,正 2n 边形的面积 s2n 等于正 n 边形的面积 sn 加上 n 个等腰三角形△BCD 的面

积,即

Page 23: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

143

2(1 )2

n nn n

x hs s n ⋅ −= + ⋅

这样就得到了形式化描述里给出的递推关系。根据步骤(1)中的正六边形的边长、弦心距和

面积,可以得到正 12 边形的边长、弦心距和面积为

22 26 2

12 61 3(1 ) 1 2 3

2 2 2xx h

⎛ ⎞⎛ ⎞ ⎛ ⎞= + − = + − = −⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠

22

1212

2 3 2 31 12 2 2

xh⎛ ⎞− +⎛ ⎞ ⎜ ⎟= − = − =⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠

6 612 6

31 12(1 ) 36 6 6 3

2 4 2x hs s

⎛ ⎞⋅ −⎜ ⎟⎜ ⎟⋅ − ⎝ ⎠= + ⋅ = × + × =

(3)步骤(2)中给出了从正六边形的边长、弦心距和面积推出正 12 边形的边长、弦心距和

面积的过程,同理可以推出正 24 边形、正 48 边形……正 n 边形的面积。由于圆的半径是 1,所

以随着 n 的增大,其面积 sn 不断趋近于圆周率π。

图 7.1 正 n 边形向正 2n 边形的转化

7.2.3 实例

根据割圆术的计算步骤,可以计算出表 7.1 所示的结果。从表中我们可以看出,随着 n 值不

断增大,正 n 边形的边长、弦心距和面积的值是有一定规律的。边数 n 越大,其面积 sn 的值中嵌

套的根号也越多,从正 24 边形开始,根号的数量与 2log ( / 6)n 的值相等。

表 7.1 半径为 1 的圆内接正 n 边形的边长、弦心距和面积

边数 n 边长 xn 弦心距 hn 面积 sn

6 1 3

2

4

36×

12 2 3− 2 32+ 3

24 2 2 3− + 2 2 32

+ + 6 2 3× −

O

C D

E F B

A

hn

xn x2n

Page 24: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

144

续表

边数 n 边长 xn 弦心距 hn 面积 sn

48 2 2 2 3− + + 2 2 2 32

+ + + 12 2 2 3× − +

96 2 2 2 2 3− + + + 2 2 2 2 32

+ + + + 24 2 2 2 3× − + +

192 2 2 2 2 2 3− + + + + 2 2 2 2 2 3

2

+ + + + + 48 2 2 2 2 3× − + + +

根据计算步骤以及上述提到的规律,可以得出正 12288 边形和正 24576 边形的面积为

12288 3072 2 2 2 2 2 2 2 2 2 2 3s = × − + + + + + + + + +≈3.141 592 516

24576 6144 2 2 2 2 2 2 2 2 2 2 2 3s = × − + + + + + + + + + + ≈3.141 592 619

7.2.4 使用 Raptor 模拟割圆术

刘徽使用割圆术计算到正 192 边形,并取小数点后两位近似值得到 3.14,化为分数是15750

这就是著名的“徽率”。我国南北朝时期的数学家祖冲之继承并发展了刘徽的割圆术,求得π的

范围为 3.141 592 6<π< 3.141 592 7

根据 7.2.3 节实例中的结果,若单纯使用割圆术,需要计算到圆内接正 24 576 边形,才能得

到这样精确的结果。 用割圆术计算圆周率涉及开方运算,而古人使用算盘进行如此频繁的开方运算是一件不容易

的事,祖冲之当时是如何进行如此高精度、高强度的计算,或是用了其他简化的方法,至今仍是

一个有待考证的问题。 随着计算机计算能力的高速发展,使用计算机编程来实现割圆术的步骤,可以快速计算出圆

周率的近似值。到 1973 年,人们已把圆周率算到了小数点后 100 万位,1989 年突破了 10 亿位大

关,1999 年超过了 2 061 亿位。 图 7.2 给出使用 Raptor 编程实现割圆术的简单程序。需要注意的是,该程序未使用高精度计

算,只使用了基本的数据类型,因而只能计算到小数点后约 14 位精度。关于如何使用计算机进行

高精度计算,感兴趣的读者可以在互联网上查询相关资料。

Page 25: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

145

图 7.2 使用割圆术计算圆周率的 Raptor 程序

7.3 森林火灾的计算问题

森林火灾问题是地球科学中的一个问题,是指失去人为控制,在森林开放系统内自由燃烧和

自由蔓延,并对森林、森林生态系统和人类带来一定危害的破坏性燃烧性现象。森林火灾的特点

Page 26: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

146

是:引发火灾的原因多,突发性强;起火初期不易察觉,一旦燃起,火势凶猛,蔓延速度快;波

及面广,区域性大,受灾面积广;受自然条件和气象因素影响大,不易控制,难以扑灭,可能产

生相当大的经济损失和对森林生态系统产生严重的破坏。 为了描述森林燃烧过程,人们用计算模型来模拟林火蔓延过程。林火蔓延模型是在各种简化

条件下进行处理,导出林火行为(蔓延速度)与各种参数(如可燃物的理化性质、地形、气象因

子等)间的定量关系式,使人们可以利用这些关系式去预测要发生的林火行为,利用它去指导扑

火工作,以及日常的林火管理。

7.3.1 森林火灾的形式化描述

这里不考虑外部因素的影响,可以将森林火灾问题用一个 7 元组形式化地描述为: Fire=<N,S,ρ,v,fv,t,F>

其中: (1)N 表示林地的规模,N =n×n。 (2)S 表示林地所处的状态,是一个 n×n 的矩阵,其元素 sij∈{s0,s1,s2,s3}(1≤i,j≤n),

其中 s0=0 表示空地(无林木),s1=1 表示有林木未燃烧,s2=-0.5 表示有林木正在燃烧,s3=-1 表

示有林木已燃灭。 (3)ρ表示森林林木密度(density),根据林地密度随机产生林地的初始状态 S(0)。 (4)v 表示林火蔓延的速度。 (5)fv 表示林木的燃烧速度。 (6)t 表示燃烧时间。 (7)F 表示林地火势蔓延规则,满足 S(t+1)=F(S(t))。 林火的蔓延规则是由林地的状态决定的,而林地的任意区域的状态 sij 满足图 7.3 所示的状态

转移图。

s0 s1 s2 s3

图 7.3 元素 sij 状态转移图

状态转移图中各状态之间的转移条件及关系如下:①状态 s0 在任何时刻只能转移到自身;

②处于 s1 状态的元素在火势未蔓延到该元素时转移到自身,根据火势的蔓延速度可知,当火势蔓

延到该元素时立刻转移到 s2 状态;③根据林木的燃烧速度可知,处于 s2 状态的元素在某个时刻内

转移到自身,超过这个时刻时转移到 s3 状态;④处于 s3 状态的元素只能转移到自身。 根据状态转移图就可以由林地上一个状态得知其下一个状态;从而达到模拟林火燃烧的目的。

7.3.2 模拟森林火灾的步骤

(1)t=0,模型初始化,设定林地规模 N 大小,林地密度 ρ,以及林火蔓延的速度 v 和林木的

燃烧速度 fv;并根据林地规模及密度随机产生林地的初始状态 S(0)。 (2)根据状态转移图分析林地中任意区域 sij 的各状态转移关系。 (3)根据火势蔓延规则迭代求得下一时刻的林地状态。

Page 27: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

147

7.3.3 实例

为了方便分析模型,这里讨论一个假设的实例。那么森林火灾模型的模拟步骤如下。 (1)林地初始化 假设林地规模 N=5×5=25 规模的林地,森林密度为 ρ=40%,林火蔓延的速度 v=1 和林木的燃

烧速度 fv=0.5,t=0;根据森林规模及森林密度随机产生林地初始化状态矩阵,假设初始化矩阵 S(0)如下所示。

1 1 0 1 00 0 1 0 0

(0) 1 1 0 0 10 0 0 1 01 0 0 1 0

S =

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

初始化林地时,矩阵 S(0)中 1 按照 40%随机产生,具体实现是生成一个全零矩阵,然后随机

选择 10 个元素赋值为 1,例如在上述矩阵中(1,1)处被初始化为 s11=s1=1。 (2)状态转移关系 根据初始化变量以及状态转移图,可以得到林地任意区域的状态(矩阵中任意元素 sij)转移

关系:①状态 s0 在任何时刻只能转移到自身;②处于 s1 状态的元素在火势未蔓延到该元素时转移

到自身,根据火势的蔓延速度 v=1 可知,当火势蔓延到该元素时立刻转移到 s2 状态;③根据林木

的燃烧速度 fv=0.5 可知,处于 s2 状态的元素在 2 个时刻内转移到自身,达到两个时刻时转移到 s3

状态;④处于 s3 状态的元素只能转移到自身。这里的状态转移关系也构成了林地火势蔓延规则。 (3)火势蔓延过程 假设火势从林地左侧开始蔓延,处于燃烧状态的元素可以点燃其周边八个方向的任意元素。

根据状态转移规则及燃烧速度和火势蔓延速度可以给出相应的林地状态转换过程(见表 7.2)。

表 7.2 林地着火过程

时间 t 说明 林地状态矩阵 S(t)

已燃烧比例 persent burned

1

林地左侧点燃,s11、s31、s51 转变为燃

烧状态-0.5

0.5 1 0 1 0

0 0 1 0 0

(1) 0.5 1 0 0 1

0 0 0 1 0

0.5 0 0 1 0

S

= −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

30%

2 s11、s31、s51 在两个时刻内依然处于燃

烧状态-0.5;(1,2)、(3,2)处被点燃,

s12、s32 转变为燃烧状态-0.5

0.5 0.5 0 1 0

0 0 1 0 0

(2) 0.5 0.5 0 0 1

0 0 0 1 0

0.5 0 0 1 0

S

− −

= − −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

50%

Page 28: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

148

续表

时间 t 说明 林地状态矩阵 S(t)

已燃烧比例 persent burned

3

(1,1)、(3,1)、(5,1)处燃烧超过两个时

刻,s11、s31、s51 转变到燃灭状态-1;s12、s32 在两个时刻内依然处在燃烧状

态-0.5;(2,3)被点燃,s23 转变为-0.5

1 0.5 0 1 0

0 0 0.5 0 0

(3) 1 0.5 0 0 1

0 0 0 1 0

1 0 0 1 0

S

− −

= − −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

60%

4

s11、s31、s51 处依然为燃灭状态-1;(1,2),(3,2)处燃烧超过两个时刻,s12、

s32 转变到燃灭状态-1;s23 在两个时

刻内依然处在燃烧状态-0.5;(1,4)被点燃,s14 转变为-0.5

1 1 0 0.5 0

0 0 0.5 0 0

(4) 1 1 0 0 1

0 0 0 1 0

1 0 0 1 0

S

− − −

= − −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

70%

5

s11、s31、s51、s12、s32 依然为燃灭状态

-1;(2,3)处燃烧超过两个时刻,s23 转

移到燃灭状态-1;s14 在两个时刻内

依然处在燃烧状态-0.5;没有新元素

被点燃

1 1 0 0.5 0

0 0 1 0 0

(5) 1 1 0 0 1

0 0 0 1 0

1 0 0 1 0

S

− − −

= − −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

70%

6

s11、s31、s51、s12、s32、s23 依然为燃灭

状态-1;(1,4)处燃烧超过两个时刻,

s14 转移到燃灭状态-1;此时不可能有

新的林木被点燃,也就是火势不可能

继续蔓延,燃烧结束

1 1 0 1 0

0 0 1 0 0

(6) 1 1 0 0 1

0 0 0 1 0

1 0 0 1 0

S

− − −

= − −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

70%

基于 NetLogo 的森林火灾模拟示意图如图 7.4 所示。

图 7.4 基于 NetLogo 的森林火灾模拟示意图

Page 29: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

149

7.4 多普勒效应的计算问题

多普勒效应(Doppler effect)是物理学中的一个重要现象,是为纪念奥地利物理学家及数学

家克里斯琴·约翰·多普勒(Christian Johann Doppler)而命名的。1842 年 5 月 25 日,在布拉格举

行的皇家波希米亚学会科学分会会议上,他提交了一篇题《论天体中双星和其他一些星体的彩色

光》(Ueberdas farbige Licht der Doppelsterne und einiger andererGestirne des Himmels)的论文。在

这篇论文中,他提出了由于波源或观察者的运动而出现观测频率与波源频率不同的现象,后来称

之为多普勒效应。 多普勒效应模型可以描述为:一架飞机在与观察者同一水平线上飞行,当飞机没有移动时,

在平面上的波长是相同的;当增加飞机的速度时,波群聚在一起,在飞机后面散开。所以当飞机

向人移动时,波长越短,声音的感知频率就越高。当飞机正在远离人时,波长较长,因此感受到

的声音频率较低。我们在这里命名为“飞机与观察者多普勒效应”。

7.4.1 多普勒效应的形式化描述

假设飞机的速度没有超过声波传播的速度的情况,此时满足多普勒效应。模型中的飞机与观

察者在同一水平线上,所以,声波的波射线方向与波源的运动方向相同,不存在速度的分量。根

据模型的实现过程,多普勒效应可以用一个 9 元组形式化地描述为: DOP=<vs,vp,v,fs,fp,A,t,L,F>

其中: (1)vs 表示声波在介质中的传播速度(speed-of-sound)。 (2)vp 表示观察者的移动速度。 (3)v 表示波源(即飞机)的运动速度(plane-speed)。 (4)fs 表示声源在介质中的发射频率。 (5)fp 表示观察者接收到的频率。 (6)A 表示声波的振幅,由声源决定及声波传播时间决定,声源处振幅为 A(0)。 (7)t 表示当前时刻。 (8)L 表示声源与观察者之间的距离,初始距离为 L(0)。 (9)F 表示声波在传播过程中声波的振幅变化关系,满足 A(∆t)=F(A(0)), A(∆t)为声波从声

源处传播∆t 后的振幅。 多普勒效应下满足如下公式:

s pp s

s

v vf f

v v±

=∓

上式中,当波源接近观察者时分子取“+”,分母取“-”,当波源远离观察者时分子取“-”

分母取“+”。 声源(飞机)处的声波振幅 大,大小为 A(0)。当声源接近观察者时,声波向观察者传播,

观察者接收到的声波振幅增大,观察者听到飞机发出的声音在增大;飞机移动到观察者位置的时

候,观察者接收到声波振幅也 大,这时候,观察者听到飞机发出的声音是 大的;飞机继续移

动,远离观察者,观察者接收到的声波振幅减小,观察者听到飞机发出的声音也随之减小。

Page 30: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

150

7.4.2 模拟多普勒效应的步骤

(1)设置模型仿真初值,给出 vs、vp、v、A(0)、L(0)的初始值。 (2)从模型仿真中可以得到的其他值有 A(∆t)、fs、fp。 (3)由以上形式化模型可以求出观察者接收到的声波的频率大小以及在此过程中振幅 A 的

变化。

7.4.3 实例

假设飞机产生的声波在空气中的传播速度为 vs =757 m/h,观察者静止,即 vp=0 m/h,且声源

处的声波振幅为 A(0)=20,可以对飞机飞行速度任意设置,这里取 v=500 m/h,飞机与观察者之间

的距离为 L(0)=2 400m,仿真中初始时间 t=0,时间间隔为∆t =0.1h。为了仿真简单化,这里设定

声波的振幅在传播过程中的变化满足 A(∆t +t)= A(t)−0.5,即每传播∆t 时间,振幅减小 0.5,因此可

知 A(t)=A(0)−(5s/vs)。假设飞机放出声波的频率 fs=0.4(即在一个∆t 内发射 0.4 次声波)。 通过形式化模型及初始化设定,讨论发现观察者接收到的声波的振幅变化可以分为如下几种

情形。

(1)当(0)

s

Lt

v< 时,即飞机在向观察者靠近,声波在还未传播到观察者处,此时观察者没有

接收到声波,fp=0,A(t)=0。

(2)当(0) (0)

s

L Lt

v v< 时,即飞机在向观察者靠近,但是飞机还没有到达观察者处,此时通

过 计 算 得 到 观 察 者 接 收 到 的 声 波 的 频 率 为 fp=1.12 , 振 幅 在 不 断 增 大 , 满 足

(0)5 (0)( ) (0) ( 5 )

( )s

s s s

v t LLA t A v

v v v v−

= − −−

(3)当(0)L

tv

时,即飞机开始远离观察者,此时通过计算得到观察者接收到的声波的频率

为 fp=0.24,振幅在不断减小,满足(0) (0)

( ) (0) ( )2 ( ) 2

s

s s s

v t L LA t A v

v v v v+

= − −+

基于 NetLogo 的多普勒效应示意图如图 7.5 所示。

(1) (2) (3)

图 7.5 基于 NetLogo 的多普勒效应示意图

表 7.3 观察者接收到的声波振幅随时间的变化情况

时间 t/h 0 0.1 0.2 … 3.2 3.3 … 4.7 4.8 4.9 … 6.4 6.5 …

振幅 A 0 0 0 … 4.44 5.41 … 19.03 20 19.98 … 19.68 19.67 …

Page 31: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

151

表 7.3 中给出了观察者接收到的振幅随时间的变化情况,发现观察者接收到的声波振幅一段

时间内为 0,然后递增到 大值 20,接着又开始递减,其变化规律符合实际情况。

7.5 小世界网络模型的计算问题

在数学、物理学和社会学中,小世界网络是一种数学关系图。在这种图中,大部分结点彼此

间不直接相连,但大都可以从其他节点经过少数步数连接。“小世界现象”(Small World Phenomenon)是 1967 年哈佛社会学家 Stanley Milgram 通过设计的连锁信件实验而提出的。它体

现了一个似乎很普遍的客观规律:在信息化时代,人们之间的关系已经完全社会化,任何个体之

间都可能产生必然的联系或关联,实际的社会、生态等网络都是小世界网络。为了使用网络图来

解释小世界现象,Watts 和 Strogatz 在对规则网络和随机网络理论研究的基础上,于 1998 年在

Nature 杂志发表了第一篇构造小世界网络数学模型的论文《小世界网络的群体动力学》 (Collective dynamics of “small-world” networks),提出了著名的 WS 小世界网络(SWN)这一概念。网络的

聚类系数和平均 短路径长度是小世界网络研究中的两个重要指标。

7.5.1 小世界网络重连的形式化描述

若小世界网络中的每个节点代表一个人,而两人之间的连接线代表认识(朋友)关系,那么

这个小世界网络就可以反映陌生人之间由彼此共同认识的人而连接的社会关系。根据 Watts 和 Strogatz 对小世界网络的描述,上述小世界网络重连可以用一个 7 元组形式化地描述为:

WSSWN=<n,V,E,p,K,cc,apl> 其中:

(1)n 表示节点个数(num-nodes),即小世界社会中的人数。 (2)V={1,2,…,n}表示节点(人)构成的集合。 (3)E={(i,j)|i,j∈V}表示边构成的集合,(i,j)表示 i 认识 j,由于认识关系是对称关系,所

以 E 满足对称关系,也就是若有(i,j) ∈E,必有(j,i) ∈E。 (4)p 表示随机化重连的概率(rewiring-probability),即以概率 p 重新构建小世界中个体之间

的认识关系。 (5)K={k1,k2,…,kn}表示节点的出度构成的集合,ki 表示 i 认识的人数。 (6)cc 表示聚类系数(clustering coefficient),聚类系数表现的是网络的聚类特性,也就是群落

特性。一般假设网络中的节点 i 与另外 ik 个节点相连,那么在这 ik 个节点之间 多可能有( 1)

2i ik k −

条边。若这 ik 个节点之间实际存在的边数是 iE ,那么这 ik 个节点之间实际存在的边数 iE 与总的

可能的边数( 1)

2i ik k −

比就定义为节点 i 的聚类系数 Ci,即

2( 1)

ii

i i

ECk k

=−

它反映了与 i 认识的人之间的群落特性。对网络中所有节点的聚类系数取平均值,就是整个

网络的聚类系数 cc,即

Page 32: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

152

1

1 n

ii

cc Cn =

= ∑

聚类系数 cc 越大,一个人可以通过认识的人找到另一个人的概率就越大。 (7)apl 表示平均 短路径长度(average-path-length),它可以对网络的连通性进行较好的描

述,是网络的全局特征。它可以反映小世界中任意两个人之间需要经过的 少人数。网络中两个

节点 i 和 j 之间的距离 di,j 定义为连接这两个节点的 短路径上的边数。网络的平均 短路径长度

apl 定义为任意两点之间的 短路径的平均值,即

,2

( 1) i ji j

apl dn n >

=− ∑

其中 di,j 可以由弗洛伊德算法求得。平均 短路径长度 apl 越小,一个人通过认识的人找到另

一个人需要经过人数就越少,网络的连通性也就越好。

7.5.2 模拟小世界网络重连的步骤

(1)设定模型的初始数值。给出节点个数(人数)n,节点集合 V,边集合(认识关系)E,随机重连概率 p,根据边集合得到节点出度 K。

(2)以节点数为 n 初始化规则网络。 (3)以概率 p 随机地重新连接网络中的每个边,将边的一个端点保持不变,而另一个端点与

在网络中随机选择的另一个节点相连,在连接规则中排除自身连接和重复的连接。 (4)求出随机重连概率 p 下变化的聚类系数 cc,平均 短路径 apl。

7.5.3 实例

假设小世界网络中节点(人数)n=10;每个节点的度 ki=4(每个人认识的人数为 4);随机化

重连的概率 p=0.1(以 0.1 的概率改变人与人之间的认识关系)。小世界网络重连模拟过程如下。 (1)设初始数值:n=10,V={1,2,…,10},E={(i,j) |i,j∈V,j∈{(i+1)mod 10,(i+2)mod

10}},k=4,p=0.1。 (2)以节点数为 10 初始化规则网络,得到图 7.6 所示的环形网络,节点数为 10,边为 20。

图 7.6 一个节点数为 10 环形网络

Page 33: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

153

此时初始化后可以计算得到各节点的聚类系数均为 Ci=0.5,网络的聚类系数 cc=0.5,也就是

网络中一个人通过认识的人能够找到任何一个陌生人的概率为 0.5;平均 短路径长度 apl=1.667,也就是网络中一个人通过认识的人能够找到任何一个陌生人平均需要通过 1.667 个人。

(3)以概率 p 随机地重新连接网络中的每个边,将边的一个端点保持不变,而另一个端点与

在网络中随机选择的另一个节点相连,在连接规则中排除自身连接和重复的连接。由于每条边都

以 0.1 的概率进行重连,每一次实验重连后的结果可能都不一样,所以得到的聚类系数 cc 和平均

短路径 apl 都有所不同。以下仅假设出其中一种情况,图 7.7 所示为重连后得到的新网络,加

粗虚线为未重连前的边,加粗实线为重连后的边,重连后 E1={E-{(2,4),(4,2),(7,8),(8,7)}}∪{(2,5),(5,2),(1,7),(7,1)}。

图 7.7 重连后的新网络

(4)图 7.7 中节点 1 的出度变为 k1=5,这 5 个节点为{2,3,7,9,10},5 个节点之间 多可形成

10 条无向边,而图 7.6 中这 5 个节点间实际只有 4 条边,通过公式计算可得到 C1=0.4,依次类推

计算得到其他节点的聚类系数 Ci(见表 7.4), 后可以得到整个网络的聚类系数为 cc=0.447。此

时网络中一个人通过认识的人能够找到任何一个陌生人的概率为 0.447。

表 7.4 图 7.7 所示网络的聚类系数

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 cc 0.4 0.5 0.5 2/3 0.4 1/3 1/3 1/3 0.5 0.5 0.447

通过弗洛伊德算法得到节点 i 与 j(i>j)之间的 短路径 di,j(见表 7.5),例如节点 5 与节点 2之间的 短路径为 d5,2=1,平均 短路径 apl=1.622,此时网络中一个人通过认识的人能够找到任

何一个陌生人平均需要通过 1.622 人。

表 7.5 节点间的最短路径及网络平均最短路径

d2,1 d3,1 d3,2 … d10,1 d10,2 d10,3 … d10,9 apl 1 1 1 … 1 1 2 … 1 1.622

根据计算的结果发现,这个小世界通过这次重连后,聚类系数减小,也就是小世界中一个人

通过认识的人找到另一个人的概率减小了;平均 短路径长度也有所减小,即一个人通过认识的

人找到另一个人需要经过的人数减少了。

Page 34: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

154

7.6 科赫曲线

在我们的自然界中有千奇百怪的分形图,在数学上说,分形是一种形式,它从一个对象开始,

例如线段、点、三角形等,重复应用一个规则连续不断地改变直至无穷。这个规则可以用一个数

学公式或者用文字来描述。科赫曲线就是这样的一种分形曲线。 科赫曲线是一种像雪花的几何曲线,所以又称为雪花曲线,是因为它的外形像雪花一样,它

是分形曲线中的一种。科赫曲线 早出现在 1904 年瑞典数学家海里格·冯·科赫的论文《关于一

条连续而无切线,可由初等几何构作的曲线》(Sur une courbe continue sans tangente, obtenue par une construction géométrique élémentaire)当中,他第一次描述了这种不论由直线还是由曲线组成

的始终保持连通的线,因此以他的名字命名为科赫曲线。

7.6.1 科赫曲线的形式化描述

科赫曲线可以用一个 7 元组形式化地描述为: Koch_Curve = < n,(xs, ys),(xt, yt),(X, Y),L,l,s>

其中: (1)n 是生成这条科赫曲线的分形次数。 (2)(xs, ys)和(xt, yt)是这条科赫曲线的两个端点的坐标。 (3)(X, Y)是这条科赫曲线中两个端点和所有折点坐标构成的有序集合,它的生成过程如下。 ①初始集合为(X, Y)0 = Y{(xs, ys), (xt, yt)}(集合前 Y 表示该集合为有序集合)。 ②当 0≤i<n 时,假设已知有序集合(X, Y)i,则可以推出(X, Y)i+1。方法是首先记有序集合(X,

Y)i+1 为空集;然后从(X, Y)i 中第一个坐标开始依次取相邻的一对坐标点(第一次取第 1 个坐标和

第 2 个坐标,第二次取第 2 个坐标和第 3 个坐标,以此类推,直到取到倒数第 2 个坐标和 后 1个坐标)记为(x1, y1)和(x5, y5),根据如下公式计算坐标(x2, y2)、(x3, y3)和(x4, y4):

( )( )( )( )( ) ( )( )( ) ( )( )

2 1 5

2 1 5

4 1 5

4 1 5

3 2 4 2 4

3 2 4 4 2

2 / 32 / 3

2 / 32 / 3

3 / 2

3 / 2

x x xy y yx x xy y y

x x x y y

y y y x x

= +

= +

= +

= +

= + + −

= + + −

⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩

并将坐标(x1, y1)、(x2, y2)、(x3, y3)和(x4, y4)依次添加到(X, Y)i+1 的尾部; 后将(X, Y)i 中 后一

个坐标添加到(X, Y)i+1 的末尾。此时即得到有序集合(X, Y)i+1。 ③由步骤①和②,可以计算出(X, Y)n,也就是分形了 n 次后得到的所有点的坐标,即这条科

赫曲线中的两个端点及所有折点的坐标,因此(X, Y) = (X, Y)n。 (4)L 是这条科赫曲线中所有线段构成的有序集合。将该集合中所有线段元素按顺序连接起

来,即是完整的科赫曲线。有序集合 L 的生成过程是:首先记 L 为空集,然后从有序集合(X, Y)中第一个坐标开始依次取相邻的一对坐标点记为(x1, y1)和(x2, y2),将线段 line((x1, y1), (x2, y2))添加到集

合 L 的尾部,直到将(X, Y)中 后一对坐标构成的线段添加到 L 末尾为止,即得到有序集合 L。 ( 5 ) l 用 来 记 录 分 形 n 次 后 科 赫 曲 线 的 长 度 ( length ), 其 计 算 方 式 为

Page 35: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

155

2 24( ) ( ) ( )3

nt s t sl x x y y= ⋅ − + − 。

(6)s 用来记录分形 n 次后科赫曲线中包含的直线段的数量(segments),s=4n。

7.6.2 模拟生成科赫曲线的步骤

(1)初始化科赫曲线的起点坐标(xs, ys)和终点坐标(xt, yt),给定分形次数 n,初始为(X, Y)0 = Y{(xs, ys), (xt, yt)},L 为空集。

(2)按照形式化中的步骤(3)-①和(3)-②循环得到分形 n 次后所有的坐标点并添加到(X, Y)中。 (3)根据(X, Y)中的坐标点按照形式化中(4)的解释得到线段集合 L。 (4)在二维坐标轴中绘制 L 中的所有直线段,即得到分形 n 次科赫曲线。

7.6.3 实例

为了便于理解,现在给出一个简单的实例。若要在(0,0)与(9,0)之间绘制一条分形两次的科赫

曲线,其步骤如下。 (1)首先初始化(xs, ys)= (0,0),(xt, yt)= (9, 0),且 n=2,此时(X, Y)0={(0,0),(9,0)},L=∅。 (2)根据公式得到坐标点,可知 1(X, Y) 3 3 / 2), (6, 0), (9, 0)}{(0,0), (3,0), (9 / 2,= ,二次分形得

到 2(X, Y) (X, Y) 3 / 2), (2, 0), (3,0), (7 / 2, 3 / 2), (3,5 3 / 4), (4, 3), (9 / 2,3 3 / 2),{(0,0), (1,0), (3 / 2,= = (5, 3), (6, 3), (11 / 2, 3 ), (6, 0), (7,0), (15 / 2, 3 ), (8,0), (9,0)}/ 2 / 2 。

(3)按照有序点集(X,Y)中顺序相邻两点连线加入到 L 中,即得到 L 中有 16 条线段,即 s=16。 (4)在坐标轴中画出 L 中的所有线段,得到科赫曲线(见图

7.8),此时曲线长度 l=16。

7.6.4 使用 Raptor 模拟科赫曲线

绘制科赫曲线的主程序如图 7.9 所示,它主要是打开一个窗

口,然后选取窗口的适当位置作为将要绘制的科赫曲线的两个端点。

图 7.9 main 子图

图 7.8 分形 2 次的科赫曲线

Page 36: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

156

本程序的核心部分是绘制科赫曲线的子程序 drawOneEdge,如图 7.10 所示。这是一个递归程

序,递归的原理是将一条边分为 4 条子边来进行处理,当递归到 后一层时,只需要绘制一条线

段即可。

Start (in x1, in y1, in x5, in y5, in level)

level = 0

Draw_Line(x1, y1, x5, y5, Black)

到达最后一层时,绘制一条线段

x2 ← x1 * 2 / 3 + x5 * 1 / 3

y2 ← y1 * 2 / 3 + y5 * 1 / 3

x4 ← x1 * 1 / 3 + x5 * 2 / 3

y4 ← y1 * 1 / 3 + y5 * 2 / 3

x3 ← (x2 + x4) / 2 + (y2 - y4) * sqrt(3) / 2

y3 ← (y2 + y4) / 2 + (x4 - x2) * sqrt(3) / 2

drawOneEdge(x1, y1, x2, y2, level - 1)

drawOneEdge(x2, y2, x3, y3, level - 1)

drawOneEdge(x3, y3, x4, y4, level - 1)

drawOneEdge(x4, y4, x5, y5, level - 1)

分别绘制4条子线段

未到达最后一层时,计算迭代一次后各折点的坐标

NoYes

End

是否到达最后一层

绘制一条科赫曲线的子程序,曲线的端点坐标分别为(x1,y1)和(x5,y5),level是递归的层数,当其为0时是单位边

图 7.10 drawOneEdge 子程序

第 1 次迭代 第 2 次迭代 第 3 次迭代

图 7.11 科赫曲线

Page 37: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

157

这里试验模拟的是单条科赫曲线(见图 7.11),如果要模拟更具艺术效果的科赫雪花(由 3条科赫曲线构成),只需要在主函数中 后添加生成另外两条科赫曲线的命令(见图 7.12),得到

图 7.13 所示的科赫雪花。需要注意的是,这三条科赫曲线的端点首尾相接,且三个端点构成一个

等边三角形。

图 7.12 main 子图

第 1 次迭代 第 2 次迭代 第 3 次迭代

图 7.13 科赫雪花

7.7 向日葵种子生长模拟 向日葵(sunflower)是现实生活中一种美丽的植物,它的黄色花盘非常具有标志性。向日葵

Page 38: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

158

不仅长相美丽,它更是一个数学奇迹的展现。向日葵中心种子的排列图案符合斐波那契数列,也

就是 1、2、3、5、8、13、21、34、55、89、144……即序列中每个数字是前两个数字的总和。在

向日葵上面,这个序列以螺旋状从花盘中心开始展现出来。有两条曲线向相反方向延展,从中心

开始一直延伸到花瓣,每颗种子都和这两条曲线形成特定的角度,放在一起就形成了螺旋形。这

样排列的目的就是为了让向日葵花盘变得更加密实、坚固,从而充分地利用阳光和空气,繁育更

多的后代。 斐波那契数列与黄金分割有着密切的联系,用斐波那契数列中任意一项比上后一项,其比值

随项数增大逐渐逼近黄金比例,当项数趋近无穷大时,其值就等于黄金分割比(5 1 0.6182−

≈ )。

实际上,向日葵花盘上种子的排列也是呈黄金螺旋分布的。除了向日葵,其实很多植物的花、种

子的排列都遵循这个规律,都可见黄金螺旋。向日葵种子生长的模拟对于构建花卉的拓扑结构模

型有着重要的参考意义。科学家们在 20 世纪 70 年代初就对向日葵种子生长进行了复杂的建模,

1979 年伏格(H·Vogel)给出了一个简化模型,也能够演绎出这种黄金螺旋,得到向日葵种子生

长的排列图案。

7.7.1 预备知识

如图 7.14 所示,将向日葵花托的一个圆周的周长依黄金比例分割成两段,其短弧 a 对应的角

度为 θ,其长弧 b 对应的角度为 2π-θ。其中5 1 0.618

2π 2θθ

−≈

−= ,从而得出 θ约等于 137.5°。

称这个角度为“黄金角”。 为了简单描绘出向日葵种子的生长轨迹与黄金角之间的关系,可以画出一个等分的阿基米德

螺线,种子的生长顺序就是在螺旋线上逐个出现的,并且相邻种子之间夹角约等于 137.5°。也就是“黄金角”。当发散角为 137.4°和 137.6°时,点的分布都无法均匀填满平面,而发散角

为 137.5°恰好可以填满平面,使任意相邻两点的距离相等,向日葵花盘上种子的发散角即为

137.5°。黄金角是使种子紧密分布而不留间隙的 佳角度,模拟的向日葵种子分布结构示意图如

图 7.15 所示。

图 7.14 黄金角 图 7.15 向日葵种子分布示意图

7.7.2 向日葵种子生长模拟的形式化描述

1979 年,数学家伏格(H·Vogel)在《数学与生物》(Mathematical Biosciences)杂志上发表

了《一种构建向日葵花盘的更好方法》(A better way to construct the sunflower head)的论文,给出

Page 39: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

159

了模拟向日葵种子生长的简化模型。下面,我们可以使用一个 4 元组形式化地描述该模型: SFP=<N,r,s,t>

其中: (1)N(Num)向日葵种子的总数目。 (2)r={r(s)},r(s)指每颗种子到花盘圆心的距离。 (3)s∈{0,1,2,3,…,N-1},表示向日葵种子出现的编号。 (4)t={t(s)}每颗种子绕圆心旋转的角度,t(s)指向日葵种子 s 在花盘上的角度。 由于相邻种子间夹角为 137.5°,可以得出 r(s),t(s)的关系如下:

[ ]c

137.5 0, 1r st s s N

⎧ =⎪⎨= × ° ∈ −⎪⎩

其中 c 是大于 0 的任意常数。将以上极坐标转换为直角坐标系下的坐标,形式如下: cossin

x r ty r t= ×⎧

⎨ = ×⎩

7.7.3 模拟向日葵种子生长的步骤

(1)初始化种子数量 N 与常量 c 的值。 (2)根据 r(s),t(s)计算公式得到编号 s 的种子到花盘圆心的距离和角度。 (3)根据 r(s),t(s)得到种子 s 的极坐标(rs,ts),转换为直角坐标(xs,ys),并在直角坐标系

中画出种子 s,模拟出向日葵图形。

7.7.4 实例

假设模拟向日葵花盘上的种子数目 N 等于 10,按步骤画出这 10 个种子。 (1)给定初始值 N 等于 10,种子编号 s∈{0,1,2,…,N-1},将常量 c 的值设置为 1。 (2)通过 r(s),t(s)的计算公式得到 r,t 的值,并将种子 s 的极坐标系(rs,ts)转换为直角坐

标(xs,ys),计算结果如表 7.6 所示。

表 7.6 向日葵种子坐标分布

s 0 1 2 3 4 5 6 7 8 9

r 0 1 2 3 2 5 6 7 8 3

t 0 137.5° 2×137.5° 3×137.5° 4×137.5° 5×137.5° 6×137.5° 7×137.5° 8×137.5° 9×137.5°

x 0 -0.737 0.123 1.054 -1.970 1.886 -0.634 -1.222 -2.658 -2.772

y 0 0.676 -1.409 1.374 -0.347 -1.201 2.366 -2.347 0.967 1.148

(3)根据坐标分布在坐标轴中画出各个种子,从而得到向日葵花盘模型。

7.7.5 使用 Raptor 模拟向日葵种子生长

如图 7.16 所示,创建窗口,根据窗口的大小设置向日葵花盘的半径,初始化相关变量。 如图 7.17 所示,确定单个种子的大小。

Page 40: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

160

图 7.16 初始化变量 图 7.17 确定种子大小

如图 7.18 所示,循环生成所有的种子。 对于第 s 个种子:(1)该种子在向日葵花盘上位置的极角 t=s×137.5(s 倍的黄金角)。(2)该

种子中心距离向日葵花盘中心的距离 cr s= × (c 是一个常数)。 在程序中,distance 即表示 r,令 s 个种子的面积之和等于以 distance 为半径的圆的面积,满

足(2)的要求。

图 7.18 生成所有种子

Page 41: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

161

对于以上 Raptor 程序,若输入种子数 number=1000,可以得到向日葵种子分布示意图,如

图 7.19 所示。

图 7.19 向日葵种子分布示意图

如果角度差了 0.1 度~0.2 度,很快就会失去这种均匀分布的特性,图 7.20 所示的发散角为

137.3°形成的种子分布示意图,图 7.21 所示为发散角为 137.6°形成的种子分布示意图。

图 7.20 发散角为 137.3°时示意图 图 7.21 发散角为 137.6°时示意图

7.8 烟花模拟

烟花模拟(Fireworks Simulation)是艺术学科中的一个典型问题。我们可以使用计算机来模

拟真实世界的烟花行为,主要分为两大类:一类是在软件中模拟出烟花的画面来,主要用于游戏

和电影的特效制作等;另一类是将软件上实现的烟花模型转换到物理硬件上,来代替传统烟花。

本节主要进行第一类模拟。Reeves 提出的粒子系统模型的总体实现过程如图 7.22 所示。烟花模拟

要解决的问题如表 7.7 所示,根据 Reeves 提出的粒子系统模型,可以很容易地实现烟花的模拟。

根据要模拟的物体特性,

定义粒子都有哪些属性

更新粒子属性,删除超出

生命周期的粒子

分析要模拟物体的

运动特性

产生粒子并初始化其属

性,加入系统根据各粒子属性绘制图像

图 7.22 粒子系统流程图

Page 42: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

162

表 7.7 烟花模拟要解决的问题 模拟烟花粒子 包括绘制烟花粒子、模拟其上升的过程以及在某一点爆炸

模拟碎片粒子 包括模拟烟花粒子爆炸后碎片的产生、绘制碎片粒子的轨迹、

颜色由明到暗的变化以及其消亡的过程

多个粒子(烟花及碎片)并

发模拟

7.8.1 烟花模拟的形式化描述

根据烟花模拟问题的粒子系统模型,对烟花粒子可以用 9 元组形式化地描述为: FS =<N,F,Init_X_vel,Init_Y_vel,Gra,Fade_amount,R,T,StepT >

其中: (1)N:每次产生烟花粒子的数量是一个使用随机数函数 Random 生成的区间(0,N)上的随机

数(fireworks)。 (2)F:设定每个烟花粒子爆炸后产生的碎片粒子数量(fragments)。 (3)Init_X_vel:每个烟花粒子在产生时的初始化水平速度是一个区间(-Init_X_vel, Init_X_vel)

上的随机数。 (4) Init_Y_vel:每个烟花粒子在产生时的初始化垂直速度是一个区间 (Init_Y_vel×2,

Init_Y_vel×3)上的随机数。 (5)Gra:设定烟花粒子在上升过程中每一个时间步长在垂直方向速度减少的值,模拟重力

加速度(gravity)。 (6)Fade_amount:设定碎片粒子在每一个时间步长的褪色量,此值同时用于控制碎片粒子

的生命周期。 (7)R=<n,m,Xcor,Ycor,Vel_x,Vel_y,Color,Term_vel>:R 为当前世界中所有烟花粒

子所处的状态,其中包括: n:所有(包括已超出生命周期,即已爆炸的)烟花粒子的数量。 m:当前尚未爆炸的烟花粒子的数量。 Xcor={x1,…,xm}:当前世界中所有尚未爆炸的烟花粒子的水平坐标。 Ycor={y1,…,ym}:当前世界中所有尚未爆炸的烟花粒子的垂直坐标。 Vel_x={vx1,…,vxm}:当前世界中所有尚未爆炸的烟花粒子的水平速度。 Vel_y={vy1,…,vym}:当前世界中所有尚未爆炸的烟花粒子的垂直速度。 Color={color1,…,colorm}:当前世界中所有尚未爆炸的烟花粒子的颜色,其初值为一个随

机的颜色。 Term_vel={tv1,…,tvn}:所有烟花粒子的消亡时的垂直速度的集合,当某个烟花粒子的垂直

速度小于其 tv 时,该烟花粒子爆炸(消亡),tv 的值为一个随机数。 (8)T=<fn,fXcor,fYcor,fVel_x,fVel_y,fColor>:T 为当前世界中所有碎片粒子所处的状

态,其中包括: fn:当前世界中碎片粒子的数量,其值等于已爆炸烟花粒子的数量(n−m)与烟花粒子爆炸

后产生碎片数量(F)的乘积。 fXcor={fx1,…,fxfn}:当前世界中所有碎片粒子的水平坐标。 fYcor={fy1,…,fyfn}:当前世界中所有碎片粒子的垂直坐标。 fVel_x={fvx1,…,fvxfn}:当前世界中所有碎片粒子的水平速度。

Page 43: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

163

fVel_y={fvy1,…,fvyfn}:当前世界中所有碎片粒子的垂直速度。 fColor={fcolor1,…,fcolorfn}:当前世界中所有碎片粒子的颜色。

(9)StepT:仿真时,将时间分为多个连续的时间步,每一个时间步长为 StepT。

7.8.2 烟花模拟问题的粒子系统模型中粒子运动的相关方程

在每一次产生烟花粒子时,其数量 n 是一个随机数,由公式(1)确定:

( )n Random N= (1) 其中函数 Random(x)返回一个 0~x 之间的随机整数,以下相同。 每个烟花粒子的初始化位置(坐标)是随机的,由公式(2)确定:

(180)

0i

i

x Randomy=⎧

⎨ =⎩ (2)

本模型中的世界是一个水平坐标与垂直坐标均为 0~180 的坐标系,y=0 表示烟花粒子从 底

部出现。 每个烟花粒子的初始化速度是随机的,由公式(3)确定:

( _ _ ) 2 _ _

( _ _ ) _ _ 2i

i

vx RandomFloat Init X vel Init X vel

vy RandomFloat Init Y vel Init Y vel

= × −

= − ×⎧⎨⎩

(3)

函数 RandomFloat(x)返回一个 0~x 之间的随机浮点数,以下相同;当水平速度为负数时,代

表其初始向 x 轴负方向运动,烟花粒子自产生后一直到消亡,期间水平速度不再改变;垂直速度

不会小于 0,保证所有粒子产生后均做上升运动。 烟花粒子在上升过程中某个时间点的速度由公式(4)确定:

0

d

i i

StepTi i

vx vx

vy vy Gra t

=⎧⎪⎨

= −⎪⎩ ∫ (4)

上式中等号右边的速度为上一个时间步的速度,以下相同。 烟花粒子在上升过程中某一点的位置(坐标)由公式(5)确定:

0

0

d

d

StepTi i i

StepTi i i

x x vx t

y y vy t

= +

= +

⎧⎪⎨⎪⎩

∫ (5)

烟花粒子的颜色属性在产生(初始化)时赋予一个随机的颜色 colori,之后再起整个生命周

期内颜色不再改变;当其速度 vyi<tvi 时,该烟花粒子爆炸(消亡),产生 F 个碎片粒子,每个碎

片粒子的初始速度为一个与该烟花粒子速度有关系的随机值,由公式(6)和(7)确定:

0.5 (2) 10.5 (2) 1

i i

i i

fvx vx dx RandomFloatfvy vy dy RandomFloat

= × + + −⎧⎨ = × + + −⎩

(6)

其中 dx 与 dy 由公式(7)得到:

sin( )

cos( )

(2 )

dx rt

dy rt

rt RandomFloat

=

=

= π

⎧⎪⎨⎪⎩

(7)

公式(6)和(7)确定了碎片粒子的速度,也确定了其一个随机的方向。

Page 44: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

164

碎片粒子的位置与速度的变化方程可参考烟花粒子。碎片粒子的颜色值 fcolori 初始为与爆炸

烟花粒子同一颜色,亮度设置为 80%,随着时间逐渐减小(褪色、变暗),当亮度减小到 15%以

下时,碎片粒子消亡。

7.8.3 烟花模拟的步骤

(1)设定模型的初始状态,给出(输入)N、F、Init_X_vel、Init_Y_vel、Gra 以及 Fade_amount。 (2)清空当前世界内所有粒子(假若有的话)。 (3)判断当前世界中是否存在粒子,是则直接执行第(4)步,否则随机设置相关初值,包

括将要产生的烟花数量 n、Xcor、Ycor、Vel_x、Vel_y、Color、Term-vel 等,并在世界中产生烟

花粒子。 (4)令世界中所有粒子根据当前自身的位置、速度以及重力加速度进行一个时间步的转换(包

括位置移动、速度变化以及颜色改变等);如果该粒子是烟花粒子,则判断其垂直方向上的速度是

否已达到要爆炸的速度,如已达到,转第(5)步执行爆炸过程后消亡;如果该粒子是碎片粒子,

则转第(6)步执行褪色操作。 (5)令该烟花粒子爆炸,在炸点位置产生预先设定的 F 个碎片粒子;每个碎片粒子随机化一

个运动方向,其速度为烟花粒子爆炸式的速度加上一个在碎片运动方向上的随机增量,颜色设定

为与所爆炸的烟花粒子颜色相同,但亮度设置为 80%。 (6)碎片粒子褪色过程,令该碎片粒子进行一个预先设定的褪色量 Fade_amount,然后判断

其是否已达到要消亡的颜色亮度,若是,则该粒子消亡。 (7)一个时间步执行完成,转第(3)步继续执行下一个时间步。 粒子状态转移图如图 7.23 所示。

产生烟花

粒子

更新烟花

粒子属性

烟花粒子消亡,

产生碎片粒子

更新碎片

粒子属性

碎片粒子

消亡

vyi<tvi

vyi>=tvi

fcolori<colori-3.5

fcolori>=colori-3.5 图 7.23 粒子状态转移图

7.8.4 使用 Raptor 对烟花模型进行仿真

假设初始化时产生一个烟花粒子,烟花粒子爆炸后产生一个碎片粒子。下面采用 Raptor 程序

来模拟一个烟花粒子爆炸后产生一个碎片粒子的过程。 main 子图如图 7.24 所示,其中输入数据“InputData”子图内包括 Init_X_vel、Init_Y_vel、

Gra、Fade_amount;更新烟花粒子属性(烟花上升)“projectile_motion”子图如图 7.25 所示;更

Page 45: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

165

新碎片粒子属性(碎片散开并褪色)的过程的“fade”子图如图 7.26 所示。 完整的 Raptor 烟花程序请到中国大学 MOOC 注册“计算思维的结构”课程后下载。

图 7.24 main 子图

图 7.25 projectile_motion 子图

Page 46: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

166

图 7.26 fade 子图

运行上述 Raptor 程序,输入数据:

Init _ X _ vel 2Init _ Y _ vel 2Gra 0.5Fade _ amount 2.5

==

==

⎧⎪⎪⎨⎪⎪⎩

根据运行过程中的粒子位置、速度、颜色等信息可以验证模型的正确性。 基于 NetLogo 的烟花模拟示意图如图 7.27 所示。

图 7.27 基于 NetLogo 的烟花模拟示意图

Page 47: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

167

7.9 俄罗斯方块游戏

俄罗斯方块(Tetris)问题是计算机科学中反映益智游戏的经典案例之一。它是一款由俄罗斯

人阿列克谢·帕基特诺夫于 1984 年 6 月发布的电脑游戏,20 世纪 80 年代风靡全球。有多家公司

声称具有代理权,而知识产权现由俄罗斯方块公司持有。该游戏的主机和手持代理权 终被任天

堂获得。俄罗斯方块对于任天堂来说意义重大,因为将它与 GB(Game Boy,游戏掌机)绑定销

售后,两者都获得了巨大的成功。俄罗斯方块是由下面七种基本的形状构成,如图 7.28 所示。

图 7.28 俄罗斯方块游戏的基本形状

该游戏的基本规则是移动、旋转和摆放游戏自动生成的各种方块,使之排列成完整的一行或

多行并且消除得分。当方块堆到区域 上方,无法再生成新的方块时,游戏结束。

7.9.1 俄罗斯方块游戏的形式化描述

根据俄罗斯方块游戏的模型,对俄罗斯方块游戏可以用一个 13 元组形式化地描述为: PT = <Score,Mat,Color,gameover,c,next,box,state,S,w,q,Lines,Hmin>

其中: (1)Score 表示俄罗斯方块游戏当前分数,游戏中消除掉行时,增加相应的值,消除的行数越

多,增加值越多。 (2)Mat 是一个二维数组,记录游戏区域网格中各个格子的方块存在状态。 (3)Color 是一个二维数组,记录游戏区域网格中各个格子的方块颜色,若不存在方块,记

为白色。 (4)gameover 记录当前游戏状态,是否已结束游戏。 (5)c 表示当前下落方块的颜色,可以指定一种颜色,也可以随机产生一种颜色。 (6)next 表示下一次要出现的方块的类型。 (7)box 表示当前下落方块的类型(如图 7.26 所示,共有 7 种类型)。 (8)state 表示当前下落方块的状态(图 7.26 中除第二种外,每种类型方块由于旋转操作而衍

生得到包括自身的 2~4 种状态)。 (9)S 表示俄罗斯方块的下降速度。 (10)w 记录当前下落方块左边缘位置。 (11)q 记录当前下落方块下边缘位置。 (12)Lines 记录方块下落定格后,可以消除的行数。 (13)Hmin 表示游戏界面上方所剩的 少格数。

Page 48: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

168

7.9.2 构建一个俄罗斯方块模型的算法步骤

(1)初始化游戏开始界面,当用户点击开始游戏时,要求用户输入一个初始游戏速度 S。 (2)初始化游戏网格界面,Mat 和 Color。 (3)随机产生本次要生成的方块类型 box。 (4)随机产生下次的方块类型 next。 (5)在窗口右上方绘制下次要产生的方块形状。 (6)选择一个本次方块的颜色 c。 (7)在游戏区域上方随机位置产生本次的方块,并使其下落,在产生前判断是否还有足够的

空白区域产生方块,若没有则标记游戏结束,算法结束。 (8)下落过程中检测用户的键盘输入,以进行旋转、左移、右移及加速下落等过程,进行上

述每个过程前,先判断是否有足够空间,若有即进行相应操作,否则跳过用户输入。 (9)当方块下落到底部,或者下方有其他方块导致无法继续下落时,将方块定格在此处,然

后将全部填满的行清理掉,更新游戏得分并显示在窗口右下方,更新游戏速度并转第(4)步。

7.9.3 使用 Raptor 模拟俄罗斯方块游戏

初始化游戏开始界面如图 7.29 所示;等待用户单击“Start”按钮,如图 7.30 所示;算法步骤

中第(3)以及(4)~(9)步的循环过程如图 7.31 所示。 完整的 Raptor 俄罗斯方块程序请到中国大学 MOOC 注册“计算思维的结构”课程后下载。

图 7.29 初始化游戏界面

Page 49: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

169

图 7.30 等待用户点击“Start”按钮

图 7.31 游戏中方块的下落

Page 50: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

170

使用 Raptor 进行仿真,运行效果如下。 (1)游戏开始界面如图 7.32 所示。 (2)当用户点击“Start”按钮后,会要求输入初始游戏速度,如图 7.33 所示。 (3)用户输入一个游戏速度后,进行初始化游戏网格界面,如图 7.34 所示。 (4)然后会在窗口右上方绘制下次要产生的方块类型,并在游戏区域顶部某一随机位置使用

一种随机的颜色绘制本次下落的方块,如图 7.35 所示。 (5)之后用户就可以通过键盘上下左右键来控制并摆放连续下落的方块。此过程中某一时刻

的游戏状态如图 7.36 所示;在该状态中让正在下落的黑色 L 形方块继续下落到底部, 下面一行

将会填满并被消除,消除后的游戏状态如图 7.37 所示。我们可以发现窗口右下角游戏得分增加了

10 分。 (6)继续进行游戏,当游戏区域顶部没有足够空间产生新的方块时,游戏结束,如图 7.38

所示。

图 7.32 游戏开始界面 图 7.33 要求用户输入游戏速度

图 7.34 初始化游戏网格界面 图 7.35 游戏开始

Page 51: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

第 7 章 跨学科的计算问题案例

171

图 7.36 某一时刻的游戏状态 图 7.37 填满的行消除后的状态

图 7.38 游戏结束

习 题 7

7.1 什么是道德选择,它包括哪些步骤?试用算法的方式描述这些步骤。 7.2 请用计算学科中的协议思想描述职业化的本质。 7.3 在什么情况下员工能够检举公司,在什么情况下不能?试用算法的方式描述有效检举的

步骤。 7.4 根据割圆术形式化描述的递推关系,手工演算正六边形、正 12 边形、正 24 边形以及正

48 边形的面积,并对照割圆术计算圆周率的 Raptor 程序,加深对迭代思想的进一步理解。 7.5 在森林火灾的计算问题中,若林地规模 N=4×4=16,林火蔓延速度 v=1,林木的燃烧速

度 fv=0.5,t=0 时林地初始化状态矩阵如下所示。假设火势从左侧开始蔓延,那么根据林地火灾的

模拟步骤,试分析这个林地的模拟过程。

Page 52: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问

计算思维的结构

172

1 0 0 10 1 0 01 0 1 01 1 0 1

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

7.6 通过“多普勒效应的计算问题”的学习,试讨论在何种情况下才会产生多普勒效应,多

普勒效应由形式化描述中的哪几个元素决定? 7.7 小世界网络研究在社会学、生态学中占据重要的地位,小世界网络研究中的两个重要指

标是什么?它们分别代表何种意义? 7.8 分形图不仅在几何学中具有重要地位,在艺术领域也是一种常见的工具。分形理论诞生

后,有人发现自然界的许多分形现象,也有人设计出各种美丽且具艺术特色的作品。除了科赫雪

花这一典型的分形图,你还知道哪些自然现象或艺术作品蕴含了分形图? 7.9 在向日葵种子生长模拟问题中,若 c=0.2,试根据形式化描述以及模拟步骤,得到 N=5

时的向日葵种子坐标分布。 7.10 给出使用粒子系统来模拟某一物体的算法步骤,并思考除了本书中讲到的烟花模拟之

外,还有哪些东西可以使用粒子系统来进行模拟。 7.11 俄罗斯方块游戏包括哪些步骤?游戏得以继续运行或者终止的条件是什么?请对照

Raptor 俄罗斯方块程序进行理解。

Page 53: 合肥工业大学jxcg.hfut.edu.cn/_upload/article/files/1c/32/a0cd4...算机方法论”的结构框架是3 种具有代表性的计算思维结构框架。 本书的结构建立在计算机方法论的结构框架之上,将原来计算学科的基本问