首页>参考读物>计算机科学与技术>软件与程序设计

复杂性思考
作者 : (美)Allen B. Downey著
译者 : 张龙 译
出版日期 : 2013-04-28
ISBN : 978-7-111-41999-0
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 128
开本 : 16
原书名 : Think Complexity
原出版社: O'Reilly Media USA
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是一本讲述复杂性科学、数据结构、算法、使用Python进行中级编程以及科学哲学的书。作为一位计算机教授,Downey厌倦了数据结构和算法的常规讲法,同时又对复杂系统深深着迷,所以就有了这样一本书。在全新的上下文中,本书通过探讨令人大开眼界的复杂性科学,使用数据结构和算法扩展你的Python技能。无论你是一个中级的Python程序员或一个学习计算模型的学生,你会通过一系列的练习案例研究和易于理解的解释,深入研究复杂系统的例子。

你将使用图、算法分析、无标度网络和元胞自动机,采用先进的功能,使Python成为这样一种强大的语言。作为Python编程和算法的理想教材,本书也将帮助自学者通过他们可能不会遇到的主题和想法,获得宝贵的经验。
本书主要内容包括:
·使用Numpy阵列和SciPy方法,基本的信号处理和快速傅立叶变换,以及哈希表
·研究复杂的物理系统的抽象模型,包括幂法则、分形和粉红噪声和图灵机
·获得启动代码和解决方案,以帮助你重新实现和扩展原实验的复杂性
·探索科学哲理,包括科学规律的本质、理论的选择、现实主义和工具主义的性质,及其他主题
·讨论学生和读者提交的复杂系统的案例研究

图书前言

我为何写本书
本书的灵感来源于无聊与迷恋的感觉:对常规的数据结构与算法介绍的无聊,对复杂系统的迷恋。数据结构的问题在于教师在教授这门课程的时候通常不会调动起学生的积极性;复杂性科学的问题在于学校通常不会教授这门课程。
2005年,我在欧林学院讲授了一门新课程,学生要阅读关于复杂性的主题,使用Python进行实验,并学习算法与数据结构。当我在2008年再次讲授这门课程时,我写了本书的初稿。
在2011年第3次讲授这门课程时,我准备出版该书并邀请学生们以案例研究的形式提交其工作成果并包含在书中。我在欧林学院找了9位教授成立了项目委员会,选择可供出版的报告。符合标准的案例研究被纳入到本书中。我们将在下一版吸纳来自读者的更多稿件(参见附录A)。
对教师的建议
本书可以用作Python编程与算法的大学中级课程教材。我的教学遵循如下结构:
阅读
复杂性科学涵盖了各种主题。这些主题之间相互关联,但需要花费不少时间才能搞清楚这些联系。为了帮助学生们看到全景,我会向他们介绍一些阅读列表,这些都来自于该领域最流行的研究成果。我的阅读列表以及关于如何使用它的建议在附录B中。
练习
本书提供了一系列练习;很多练习都要求学生重新实现一些开创性实验并对其进行扩展。复杂性吸引人的一个地方在于我们可以通过适当的编程技能与数学知识接触研究前沿。
讨论
书中的主题提出了关于科学哲学的问题,这需要学生们进一步阅读并进行课堂讨论。
案例研究
在我的课堂上,我们将几乎半个学期的时间都用在了案例研究上。学生们经由构思产生过程、形成团队,并在一系列实验上花费6~7周的时间,然后以4~6页可发表的报告形式来呈现其工作成果。
可以通过https://sites.google.com/site/compmodolin了解课程大纲与我的说明。
对自学者的建议
在2009~2010年,我作为Google的一名访问学者在其剑桥办公室工作。在与我共事的软件工程师中,让我印象深刻的一点是他们广博的求知欲以及增长知识与技能的动力。
我希望本书能够帮助像他们一样的人们来探索他们可能遇不到的一些主题与想法,练习Python编程技能,以及学习关于数据结构与算法的更多知识(或者看看有哪些内容不适合放在第1版中)。
本书针对自学者的一些特点有:
技术深度
关于复杂系统的图书汗牛充栋,但大多数都是一些科普图书。这些书常常会略过技术细节,这会让读者感到沮丧。本书列出了要想真正理解书中内容所需要的数学与其他技术性内容。
延伸阅读
我在整本书中都提到了延伸阅读,包括原始论文(大多数都有电子版)、维基百科注1上的相关文章以及其他资源。
练习与解决方案
我对很多练习都提供了代码以帮助你上手,同时还提供了解决方案,如果在学习中遇到困难或者想与本书的代码进行比较,那么可以参考相关内容。
贡献的机会
如果你研究了书中并未涵盖的主题,重新实现了有趣的实验,或者完成了自己的实验,那么我邀请你提交案例研究,它有可能会被纳入到本书的下一版中。参见附录A了解详情。
本书还将继续扩充。可以通过http://www.facebook.com/thinkcomplexity了解目前的进展。
Allen B. Downey
计算机科学教授
欧林工程学院
尼德汉姆·马萨诸塞州
贡献者列表
如果有建议或是修正,请发送邮件至downey@allendowney.com。如果我根据你的反馈做了修改,那么我会将你加到贡献者列表中(除非你想匿名)。
如果附上出现错误的部分句子,这将有助于我更快地找到。附上页码、章节号也很好,但不太容易找到。非常感谢!
  Richard Hollands指出了几处录入错误。
  John Harley、Jeff Stanton、Colden Rouleau与Keerthik Omanakuttan提供了计算模型,他们指出了录入错误。
  Muhammad Najmi bin Ahmad Zabidi指出了录入错误。
  Phillip Loh、Corey Dolphin、Noam Rubin与Julian Ceipek发现了几处录入错误并提出有益的建议。
  José Oscar Mur-Miranda发现了几处录入错误。
  我向项目委员会表示诚挚的谢意,他们阅读并选出了书中所包含的案例,他们分别是Sarah Spence Adams、John Geddes、Stephen Holt、Vincent Manno、Robert Martello、Amon Millner、José Oscar Mur-Miranda、Mark Somerville与Ursula Wolz。
  Sebastian Schner发送了两页录入错误。
本书约定
下面是本书中使用的排版约定:
斜体(Italic)
代表新的术语、URL、E-mail地址、搜索词、文件名和文件扩展名。
粗体(Bold)
代表新的术语。
等宽字体(Constant width)
用于程序清单,以及各个段落中引用的程序元素,如变量或者函数名、数据库、数据类型、环境变量、语句和关键字。
等宽斜体(Constant width itahic)
展示由用户按照字面输入的命令或其他文本。
注意:表示提示、建议或者一般的注释。
警告:表示警告或者警示。
示例代码的使用
本书是为了帮助你完成工作而写的。一般来说,你可以将本书中的代码用于程序和文档。除非你复制代码中的大部分,否则不需要联络我们取得授权。例如,编写一个程序时使用几段本书中的代码不需要授权。销售或者分发来自O扲eilly的示例CD-ROM则需要授权。引用本书内容或者示例代码来回答问题不需要授权。将本书中的大量代码放在你的产品文档中则需要授权。
我们赞赏注明出处的做法,但是并不强制要求。出处通常包括书名、作者、出版商和ISBN。例如,“Think Complexity, by Allen B.Downey (O扲eilly)Copyright 2012 Allen Downey, 978-1-449-31463-7.”
如果你觉得代码示例的使用超出了正当使用或者上面提供的授权范围,可以通过permissions@oreilly.com联系我们。
Safari联机丛书
Safari联机丛书是一个按需的数字图书馆,你可以用它轻松地搜索超过7500本技术和创意参考书和视频,快速地找到需要的答案。通过订阅它,你可以阅读来自网络图书馆的任何页面和视频;在你的手机和移动设备上阅读书籍;在新书付印之前获取信息,独家访问创作中的手稿并向作者提交反馈;复制和粘贴代码示例、组织收藏夹、下载章节、将重点部分加入书签、创建笔记、打印页面,此外还有许多节约时间的功能。
O扲eilly Media已经将本书上传到Safari Books Online服务。想要得到本书电子版的访问权和来自O扲eilly及其他出版商在相似主题上的书籍,可以在http://my.safaribooksonline.com上免费注册。
如何联系我们
有关本书的评论和问题,请通过如下方式联系出版商:
美国:
O扲eilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们建立了本书的一个网页,列出了勘误表、示例和其他附加信息。网址为:
http://shop.oreilly.com/product/0636920022480.do
如果想对本书提出评论或者询问技术问题,请发送电子邮件到:
bookquestions@oreilly.com
关于我们的书籍、会议、资源中心以及O扲eilly Network的更多信息,请参见我们的网站:
http://www.oreilly.com
http://www.oreilly.com.cn
在Facebook上联系我们:http://facebook.com/oreilly
在Twitter上联系我们:http://twitter.com/oreillymedia
在You Tube上联系我们:http://youtube.com/oreillymedia

上架指导

计算机\程序设计

封底文字

通过在全新的上下文中使用数据结构与算法来扩展你的Python技能——探索复杂性科学。无论是中等水平的Python程序员还是希望学习计算机建模的学生,你都可以通过一系列练习、案例研究与易于理解的解释深入学习复杂系统。

通过阅读本书,你将更加深入地理解图、算法分析、无尺度网络与细胞自动机,使用Python这种强大的语言所提供的高级特性。作为Python编程与算法的理想教材,本书还有助于自学者掌握关于他们可能未曾谋面的主题与想法的宝贵经验。

 使用NumPy与SciPy方法、基本的信号处理与快速傅立叶变换及散列表
 学习复杂物理系统的抽象模型,包括幂次定律、分形、红噪声及图灵机
 获得起步代码与解决方案,帮助自己重新实现与扩展复杂性科学中的原始实验
 探索科学哲学,包括科学定理的本质、理论选择、现实主义与工具主义等主题
 学习由学生和读者所提交的复杂系统案例

本书的灵感来源于无聊与迷恋:对常规的数据结构与算法介绍的无聊,对复杂系统的迷恋。数据结构的问题在于教师在教授这门课程的时候通常不会调动起学生的积极性;复杂性科学的问题在于学校通常不会教授这门课程。

——摘自前言

作者简介

(美)Allen B. Downey著:Allen Downey是欧林工程学院计算机科学的教授。他在韦尔斯利大学、科尔比学院与U.C.伯克利教授计算机科学。他拥有U.C.伯克利的计算机科学博士学位以及MIT的硕士与学士学位。

译者简介

张龙 译:暂无简介

图书目录

前言 1
第1章 复杂性科学 7
1.1 本书内容 7
1.2 一种新科学 8
1.3 范式转移吗 9
1.4 科学模型的轴线 10
1.5 一种新模型 11
1.6 一种新工程 12
1.7 一种新思维 12
第2章 图 14
2.1 图 14
2.2 图的表示 15
2.3 随机图 19
2.4 连通图 19
2.5 Paul Erds:逍遥的数学家,兴奋剂成瘾之人 20
2.6 迭代器 21
2.7 生成器 22
第3章 算法分析 24
3.1 增长量级 25
3.2 对基本Python运算的分析 26
3.3 对搜索算法的分析 28
3.4 hashtable 29
3.5 合并列表 33
3.6 pyplot 35
3.7 列表推导 36
第4章 小世界图 37
4.1 对图算法的分析 37
4.2 FIFO实现 38
4.3 Stanley Milgram 39
4.4 Watts与Strogatz 40
4.5 Dijkstra 41
4.6 何种分析 43
第5章 无标度网络 44
5.1 Zipf定律 44
5.2 累积分布 45
5.3 连续分布 46
5.4 Pareto分布 47
5.5 Barabási与Albert 49
5.6 Zipf、Pareto与幂次法则 50
5.7 解释模型 51
第6章 细胞自动机 53
6.1 Stephen Wolfram 53
6.2 实现CA 54
6.3 CADrawer 56
6.4 CA的分类 58
6.5 随机性 58
6.6 决定论 59
6.7 结构 60
6.8 普遍性 62
6.9 可证伪性 63
6.10 这是什么模型 64
第7章 生命游戏 66
7.1 实现生命 67
7.2 生命模式 69
7.3 Conway猜想 70
7.4 现实主义 70
7.5 工具主义 71
7.6 Turmite 72
第8章 分形 74
8.1 分形CA 74
8.2 渗流 77
第9章 自组织临界性 78
9.1 沙堆 78
9.2 谱线密度 79
9.3 快速傅立叶变换 81
9.4 红噪声 82
9.5 简化论与整体论 83
9.6 SOC、因果关系与预测 85
第10章 基于主体的模型 86
10.1 Thomas Schelling 86
10.2 基于主体的模型 87
10.3 交通拥堵 87
10.4 boid 88
10.5 囚徒困境 91
10.6 突现 92
10.7 自由意志 93
第11章 案例研究:糖域 95
11.1 最初的糖域 95
11.2 占领运动 95
11.3 糖域的新版本 96
11.4 税收与遗留 96
11.5 基尼系数 97
11.6 税收的结果 98
11.7 结论 99
第12章 案例研究:蚁群移动轨迹 100
12.1 简介 100
12.2 模型概览 100
12.3 API设计 102
12.4 稀疏矩阵 102
12.5 wx 103
12.6 应用 104
第13章 案例研究:有向图与结 105
13.1 有向图 105
13.2 实现 105
13.3 检测结 106
13.4 维基百科中的结 107
第14章 案例研究:志愿者困境 109
14.1 土拨鼠困境 109
14.2 分析 110
14.3 规范博弈 111
14.4 结果 112
14.5 提升可能性 113
附录A 案例提交邀请 115
附录B 参考书目 116

教学资源推荐
作者: 朱鸣华等
作者: [美] 陆永祥(Yung-Hsiang Lu) 著
作者: 【美】梁勇(Y.Daniel Liang) 著