当前位置: 澳门新濠3559 > 编程 > 正文

除了这几个比较有名的细胞自动机的图案,每次

时间:2019-11-08 23:18来源:编程
 废话不多说,先直接上效果图: 斯蒂芬·沃尔夫勒姆这个名字,在中文世界里可能远谈不上家喻户晓;但他的英文名StephenWolfram恐怕反而却要熟悉得多。大名鼎鼎的数学软件Mathematica每次

 废话不多说,先直接上效果图:

斯蒂芬·沃尔夫勒姆这个名字,在中文世界里可能远谈不上家喻户晓;但他的英文名Stephen Wolfram恐怕反而却要熟悉得多。大名鼎鼎的数学软件Mathematica每次启动的时候都会用大红字提醒你这是Wolfram出品;而“计算知识引擎” WolframAlpha更是每一个极客必备的网站。

五、细胞自动机

原文:Chapter 5 Cellular Automatons

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

细胞自动机(CA)是一个世界的模型,带有非常简单的物理。 “细胞”的意思是世界被分成一个大口袋,称为细胞。 “自动机”是一台执行计算的机器 - 它可能是一台真机。 ,但更多时候,“机器”是数学抽象或计算机的模拟。

本章介绍了史蒂文沃尔夫勒姆(Steven Wolfram)在 20 世纪 80 年代进行的实验,表明一些细胞自动机展示出令人惊讶的复杂行为,包括执行任意计算的能力。

我讨论了这些结果的含义,在本章的最后,我提出了在 Python 中高效实现 CA 的方法。

本章的代码位于本书仓库的chap05.ipynb中。 使用代码的更多信息,请参见第?章。

“滑翔者”:每4个回合“它”会向右下角走一格。虽然细胞早就是不同的细胞了,但它能保持原本的形态。

何谓“计算知识引擎”?WolframAlpha的主界面看起来就像是一个搜索引擎,可是它的任务不是搜索网上的东西原样给你看,而是用这些东西计算出知识、回答你的问题。从直接了当的数学问题(对 x^2 sin^3x dx积分),到简单的逻辑问题(哪些书的名字里有“蓝”这个词),到物理和化学问题(ATP的电子式是什么,描述三维盒子中的自由粒子需要哪些变量和方程),甚至更一般性的知识问题(卡西尼探测器上携带了多少核燃料,林白单人飞越大西洋的起点和终点,1969年8月发生了哪些大事件),它都可以回答。更重要的是,这些问题都可以用自然语言提出,无需懂计算机语言——当然像Siri一样接受调戏的能力也是有的(其实它比Siri早得多)。数学家格里高利·蔡廷(Gregory Chaitin)说,这是“第一个真正实用的人工智能”。

5.1 简单的 CA

细胞自动机 [1] 由规则来管理,它决定系统如何即时演化。 时间分为离散的步骤,规则规定了,如何根据当前状态计算下一个时间步骤中的世界状态。

作为一个微不足道的例子,考虑带有单个细胞的细胞自动机(CA)。 细胞状态是用变量xi表示的整数,其中下标i表示xi是时间步骤i期间的系统状态。 作为初始条件,x0 = 0

现在我们需要一个规则。 我会任意选择xi = x[i-1] + 1,它表示在每个时间步骤之后,CA 的状态会增加 1。到目前为止,我们有一个简单的 CA ,执行简单的计算:它用于计数。

但是这个 CA 是不合规则的;可能的状态数通常是有限的。 为了使其成立,我将选择最小的感兴趣的状态数 2,和另一个简单的规则xi = (x[i-1] + 1) % 2,其中%是余数(或模)运算符。

这个 CA 的行为很简单:闪烁。 也就是说,在每个时间步之后,细胞的状态在 0 和 1 之间切换。

大多数 CA 是确定性的,这意味着规则没有任何随机元素;给定相同的初始状态,它们总是产生相同的结果。 也有不确定性的 CA,但我不会在这里涉及它们。

澳门新濠3559 1

而斯蒂芬·沃尔夫勒姆的野心,可远远不止于此。

5.2 Wolfram 的实验

前一节中的 CA 只有一个细胞,所以我们可以将其视为零维,并且它不是很有趣。 在本章的其余部分中,我们将探索一维(1-D)CA,后者会变得非常有趣。

说 CA 有维度就是说细胞被安排在一个连续的空间中,这样它们中的一些可以看作“邻居”。 在一维中,有三种自然配置:

有限序列:

数量有限的细胞排成一排。 除第一个和最后一个之外的所有细胞都有两个邻居。

环:

数量有限的细胞排列成一个环。 所有细胞都有两个邻居。

无限序列:

数量无限的细胞排列成一排。

确定系统如何即时演化的规则,基于“邻域”的概念,即“邻域”,即决定给定细胞的下一个状态的一组细胞。

在二十世纪八十年代初,斯蒂芬沃尔夫勒姆发表了一系列论文,对一维 CA 进行了系统的研究。 他确定了四大类行为,每一类都比上一个更有趣。

Wolfram 的实验使用了三个细胞的邻域:细胞本身及其左右邻居。

在这些实验中,这些细胞有两个状态,分别表示为 0 和 1,所以规则可以通过一个表格进行汇总,它将邻域状态(状态的三元组)映射为中心细胞的下一个状态。 下表展示了一个示例:

prev 111 110 101 100 011 010 001 000
next 0 0 1 1 0 0 1 0

第一行显示邻居可能拥有的八个状态。第二行显示下一个时间步骤中的中心细胞的状态。 作为该表的简明编码,Wolfram 建议将第二行读作二进制数。 因为二进制 00110010 是十进制的 50,所以 Wolfram 称这个 CA 为“规则 50”。

澳门新濠3559 2

image

表 5.1:十个时间步骤之后的规则 50

上图展示了规则 50 在 10 个时间步骤之后的效果。 第一行展示第一个时间步骤内的系统状态; 它起始于一个“开”细胞,其余都是“关”。 第二行展示下一个时间步骤中的系统状态,以此类推。

图中的三角形是这些 CA 的典型;这是领域形状的结果吗? 在一个时间步骤中,每个细胞都会影响任一方向上的邻居的状态。 在下一个时间步骤中,该影响可以在每个方向上向一个细胞传播。 因此,过去的每个细胞都有一个“影响三角形”,包括所有可能受其影响的细胞。

 "脉冲星":它的周期为3,看起来像一颗周期爆发的星星。

沃尔夫勒姆1959年出生在英国伦敦,父母是当年从德国来英避难的犹太人。10岁的时候他立志要当科学家,然后几乎立刻发现自己和所有“科学家的摇篮”都合不来。12岁的时候他拿到了大名鼎鼎的伊顿公学的奖学金,却根本不屑于听老师指挥,还靠帮别的学生写作业来赚零花钱。17岁时,他还没从伊顿真正毕业就被牛津录取了,但是却没有真正“上”过牛津——开学第一天他听了一堂大一新生课,觉得“糟透了”。第二天和第三天他分别听了大二和大三的课,结论是“全都糟透了,我再也不去听课了”。自此他几乎就没有去上过课,并在短短两年之后就前往加州理工大学攻读理论物理博士生——牛津的一些老教授至今对此耿耿于怀。他拿到博士学位后立刻被加州理工聘用,当时他年仅20岁;仅仅一年之后他就获得了奖励年轻创新者的著名奖项“麦克阿瑟天才奖”,至今仍然是该奖最年轻的得主。

5.3 CA 的分类

澳门新濠3559 3

image

图 5.2:64 个步骤之后的规则 18

有多少种不同的 CA?

由于每个细胞都处于开或关的状态,我们可以用一位来指定细胞的状态。在三个细胞的邻域中,有 8 种可能的配置,因此规则表中有 8 个条目。由于每个条目都占一个位,我们可以使用 8 位指定一个表。使用 8 位,我们可以指定 256 个不同的规则。

Wolfram 的第一个 CA 实验就是测试所有 256 种可能性并尝试对它们进行分类。

在视觉上检查结果时,他提出 CA 的行为可以分为四类。第一类包含最简单(也是最不感兴趣)的 CA,即从几乎任何起始条件演变为相同统一图案的 CA。作为一个简单的例子,规则 0 总是在一个时间步后产生一个空的图案。

规则 50 是第二类的一个例子。它生成一个带有嵌套结构的简单图案;也就是说,该图案包含许多自身的较小版本。规则 18 使嵌套结构更加清晰;图?显示了 64 步后的样子。

这种模式类似于谢尔宾斯基三角形,你可以在 http://en.wikipedia.org/wiki/Sierpinski_triangle澳门新濠3559, 上阅读。

某些二类 CA 生成的图案复杂而美观,但与第三和第四类相比,它们相对简单。

澳门新濠3559 4

但是,这样一位少年天才此后的发展路线却出乎所有人的意料。在加州理工时,他发明了一种计算机语言,却因为学校规定他不能独享专利而和校方闹翻,转而前往普林斯顿高等研究院。在这里他放弃了理论物理,开始研究一个奇怪的新领域:“细胞自动机”。

5.4 随机性

澳门新濠3559 5

image

图 5.3:100 个步骤之后的规则 30

第三类包含产生随机性的 CA。规则 30 是一个例子;图?显示 100 个时间步后的样子。

左侧有一个明显的图案,右侧有各种大小的三角形,但中心看起来很随意。 事实上,如果你把中间列看做一个比特序列,就很难将其区分于真正的随机序列。 它通过了许多统计测试,人们用来测试比特序列是否随机。

产生看起来随机的数字的程序,称为伪随机数字生成器(PRNG)。 他们不被认为是真正的随机,因为:

  • 它们中的许多产生规律性序列,可以通过统计来检测。 例如,C 标准库中的rand的原始实现,使用了线性同余生成器,生成器生成的序列具有易于检测的序列相关性。

  • 任何使用有限状态(即存储)的 PRNG 最终都会重复。 生成器的特点之一就是这种重复周期。

  • 底层过程基本上是确定性的,不同于一些物理过程,如放射性衰减和热噪声,被认为是基本随机的。

现代 PRNG 产生的序列,在统计上与随机值无法区分,并且它们以很长的周期实现,以至于在重复之前宇宙将崩溃。 这些发生器的存在,提出了一个问题,即质量好的伪随机序列与由“真正的”随机过程产生的序列之间,是否存在真正差异。 在“A New Kind of Science”中,沃尔夫勒姆认为没有(第 315-326 页)。

 

想象一下,一望无际的大平面被分成了许许多多方格子。每个格子里正好能放下一个“细胞”。这个细胞不能运动,它可以是死的,也可以是活的;但它的状态,是由它周围8个细胞的死活决定。

5.5 确定性

第三类 CA 的存在令人惊讶。 为了解释多么令人惊讶,让我从哲学确定性(决定论)开始(参见http://en.wikipedia.org/wiki/Determinism)。 许多哲学立场很难准确定义,因为它们有不同的风味。 我经常发现,使用从弱到强排列的陈述列表,来定义它们是有用的:

D1:

确定性模型可以对某些物理系统做出准确的预测。

D2:

许多物理系统可以用确定性过程建模,但有些系统本质上是随机的。

D3:

所有事件都是由先验事件造成的,但许多物理系统基本上是不可预测的。

D4:

所有事件都是由先验事件造成的,并且可以(至少原则上)预测。

我构建这个范围的目标是,让 D1 如此弱以至于几乎每个人都会接受它,D4 如此强以至于几乎没有人会接受它,并且有些人会接受中间的陈述。

作为对历史发展和科学发现的回应,世界舆论的质心沿着这个范围摆动。 在科学革命之前,许多人认为宇宙的运作基本上是不可预测的,或由超自然力量所控制。 在牛顿力学的胜利之后,一些乐观主义者开始相信像 D4 这样的东西;例如,皮埃尔-西蒙拉普拉斯(Pierre-Simon Laplace)在 1814 年写道:

我们可以把宇宙的现状看作过去的果和未来的因。 一个智能在某个特定的时刻,知道所有使自然运动的力量,以及构成自然的所有物品的所有位置,如果它也足够大,来提交这些数据用于分析,它会将宇宙最大的天体和最小的原子的运动汇总成一个公式; 对于这样的智能来说,没有什么是不确定的,未来就像过去一样会存在于它的眼前。

这种“智能”被称为“拉普拉斯的恶魔”。见 http://en.wikipedia.org/wiki/Laplace's_demon。 在这种情况下,“恶魔”这个词具有“精神”的意义,没有邪恶的含义。

19 世纪和 20 世纪的发现逐渐打破了拉普拉斯的希望。 热力学,放射性和量子力学对强式的决定论构成了连续的挑战。

在 20 世纪 60 年代,混沌理论表明,在某些确定性系统中,预测只能在短时间尺度上进行,并受初始条件测量精度的限制。

大多数这些系统,是空间连续(不是时间)和非线性的,所以它们行为的复杂性并不令人惊讶。 沃尔夫勒姆在简单的细胞自动机中展示的复杂行为更令人惊讶,并且令人不安,至少对于确定性的世界观来说。

到目前为止,我一直关注对确定性的科学挑战,但是最持久的反对意见是确定性与人类自由意志之间的冲突。 复杂性科学为这种明显的冲突提供了可能的解决方案; 我将在第?章中回到这个话题。

“轻量级飞船”:它的周期是4,每2个回合会向右边走一格。

至于决定的规则,在这个例子里只有这么几条:

5.6 飞船

澳门新濠3559 6

image

图 5.4:100 步之后的规则 110

第四类 CA 的行为更令人惊讶。 几个一维 CA,最着名的是规则 110,是图灵完备的,这意味着他们可以计算任何可计算的函数。 这个属性也称为普遍性,由 Matthew Cook 在 1998 年证明。请参阅 http://en.wikipedia.org/wiki/Rule_110。

图?展示了初始条件为单个细胞和 100 个时间步骤的规则 110 的样子。 在这个时间尺度上,没有发生什么特别的事情。 有一些有规律的模式,但也有一些难以表述的特征。

图?展示了更大的图像,它起始于一个随机的初始条件和 600 个时间步骤:

澳门新濠3559 7

image

图 5.5:初始条件随机和 600 个时间步骤的规则 110

经过大约 100 个步骤后,背景变成了简单的重复模式,但背景中有一些持久性结构表现为干扰。 其中一些结构是稳定的,所以它们表现为垂直线条。 其他的在空间中平移,表现为不同斜率的对角线,取决于它们移动一列所需的时间步数。 这些结构被称为飞船。

飞船之间的碰撞产生不同的结果,取决于飞船的类型和它们碰撞时的阶段。 一些碰撞歼灭两艘船,其他船只保持不变;还有一些产生不同类型的一艘或多艘船只。

这些碰撞是 CA 规则 110 中的计算基础。 如果你将飞船视为通过电线传播的信号,并将碰撞视为计算 AND 和 OR 等逻辑运算的门,那么你可以看到 CA 执行计算的意义。

澳门新濠3559 8

1 “人口过少”:任何活细胞如果活邻居少于2个,则死掉。
2 “正常”:任何活细胞如果活邻居为2个或3个,则继续活。
3 “人口过多”:任何活细胞如果活邻居大于3个,则死掉。
除了这几个比较有名的细胞自动机的图案,每次启动的时候都会用大红字提醒你这是Wolfram出品。4 “繁殖”:任何死细胞如果活邻居正好是3个,则活过来。

5.7 通用性

为了理解通用性,我们必须理解可计算性理论,它关于计算模型和计算的东西。

最通用的计算模型之一是图灵机,它是由艾伦图灵在 1936 年提出的一种抽象计算机。图灵机是一个一维 CA,两个方向上都是无限的,并增加了一个读写头。在任何时候,头部都位于一个细胞上。它可以读取该细胞的状态(通常只有两种状态),并可以将新值写入细胞中。

此外,该机器还有一个寄存器,用于记录机器的状态(有限数量的状态之一)和一张规则表。对于每个机器状态和细胞状态,表格规定一个操作。操作包括修改头部所在的细胞,并向左或向右移动一个细胞。

图灵机并不是计算机的实际设计,但它模拟了常见的计算机体系结构。对于在真实计算机上运行的给定程序,(至少原则上)可以构造一个执行等效计算的图灵机。

图灵机很有用,因为它可以刻画一组图灵机可以计算的函数,这就是图灵所做的事情。 这个集合中的函数被称为图灵可计算的。

说图灵机可以计算任何图灵可计算函数,是一个赘述:根据定义它是真的。 但图灵可计算性比这更有趣。

事实证明,任何人提出的每个合理的计算模型都是图灵完备的;也就是说,它可以计算与图灵机完全相同的一组函数。 其中一些模型,如 lamdba 演算,与图灵机非常不同,所以它们的等价性令人惊讶。

这种观察产生了丘奇-图灵理论,它基本上定义了可计算的含义。 这个“理论”是,图灵可计算性是可计算性的正确,或至少是自然定义,因为它描述了这种计算模型的多样化集合的威力。

CA 规则 110是另一种计算模型,其简单性非常出色。 它也是通用的,为丘奇-图灵理论提供了支持。

在“A New Kind of Science”中,沃尔夫勒姆阐述了这个理论的一个变种,他称之为“计算等价性原理”:

几乎所有不明显的简单过程,都可以看作是具有复杂性相同的计算。
更具体来说,计算等价性原理表明,在自然界中发现的系统可以执行达到最高(“通用”)级别的计算能力的计算,并且大多数系统实际上实现了这种最高级别的计算能力。 因此,大多数系统在计算上是等效的(参见 http://mathworld.wolfram.com/PrincipleofComputationalEquivalence.html)。

将这些定义应用于 CA,第一类和第二类“显然很简单”。 第三类可能不那么明显,但在某种程度上,完美的随机性就像完美的顺序一样简单;复杂性存在于中间。 所以 Wolfram 声称第四类行为在自然界中很常见,并且几乎所有表现它的系统在计算上都是等价的。

除了这几个比较有名的细胞自动机的图案,你也可以随意的自己定义初始图案,然后开始"你的细胞自动机":

而下面这几张图,全是遵循这几条简单规则的产物。

5.8 可证伪性

沃尔夫勒姆认为,他的原则比丘奇图灵理论更强大,因为它是关于自然界的,而不是抽象的计算模型。但是说自然过程“可以看作计算”,使我觉得像理论选择的陈述。而不仅仅是自然世界的假设。

此外,对于像“几乎”和“明显简单”这样的未定义术语的资格,他的假设可能是不可证伪的。可证伪性是科学哲学的一个观点,由卡尔波普尔(Karl Popper)提出,作为科学假说与伪科学之间的界限。如果一个假设是假的,并且有一个实验,至少在实用性领域,它能反驳这个假设,那么这个假设是可证伪的。

例如,地球上的所有生命都来自共同祖先的说法是可证伪的,因为它对现代物种(在其他东西中)的基因相似性做出了特定的预测。如果我们发现了一种新物种,它的 DNA 与我们的 DNA 几乎完全不同,那么这就反驳了共同血统理论(或者至少引起质疑)。

另一方面,所谓“神创论”,即所有物种都是由超自然力量创造出来的,是不可证实的,因为没有任何我们可以观察到的,与自然世界相矛盾的东西。任何实验的结果都可以归因于创作者的意志。

不可证伪的假设可能有吸引力,因为不可能反驳它们。如果你的目标是永远不会被证明是错误的,你应该尽可能选择不可证伪的假设。

但是,如果你的目标是对世界做出可靠的预测 - 而这至少是科学的目标之一 - 那么不可证伪的假设是无用的。问题是他们没有结果(如果他们有结果,他们将是可证伪的)。

例如,如果神创论是真实的,那我知道它有什么好处呢?它不会告诉我任何造物主的事情,除了他有一种“对甲虫的非常喜爱”(归因于 J. B. S. Haldane)。不同于共同血统理论,它通告许多科学和生物工程领域,理解这个世界或者为之行动是没有用的。

for ex1:

澳门新濠3559 9"脉冲星":它的周期为3,看起来像一颗周期爆发的星星。

5.9 这是什么模型?

澳门新濠3559 10

image

图 5.6:一个简单物理模型的逻辑结构

一些细胞自动机主要是数学工艺品。 它们很有趣,因为它们令人惊讶,或者有用,或者漂亮,或者因为它们提供了创建新式数学的工具(比如丘奇图灵定理)。

但是,它们是不是物理系统的模型还并不清楚。 如果他们是,他们是高度抽象的,也就是说他们并不很详细或现实。

例如,某些锥螺物种在它们的壳上产生图案,类似于由细胞自动机产生的图案(参见en.wikipedia.org/wiki/Cone_snail)。 所以假设 CA 是随着壳长大而在壳上产生图案的机制的模型,这是很自然的。 但是,至少在最初阶段,模型元素(所谓的细胞,邻居之间的通信,规则)如何对应成长的蜗牛(真实细胞,化学信号,蛋白质交互网络)的元素,还并不清楚。

对于传统的物理模型,现实是一种优点。如果模型的元素对应物理系统的元素,则模型和系统之间有明显的类比。总的来说,我们期望更现实的模型能够做出更好的预测,并提供更可信的解释。

当然,这只是一个事实。更详细的模型更难以处理,并且通常不太适合分析。在某些时候,模型变得如此复杂,以至于直接对系统进行实验更容易。

在另一个极端,简单的模型可以完全引人注目,因为它们很简单。

简单模型提供了与详细模型不同的解释。使用详细的模型,论述就像这样:“我们对物理系统S感兴趣,所以我们构造了一个详细模型M,并且通过分析和模拟表明M表现出一种行为B,它与实际系统的观察O(定性或定量地)相似。那么为什么O会发生?因为S类似于M,而B类似于O,我们可以证明M导致B。”

使用简单的模型,我们不能说SM相似,因为它不是。 相反,论述是这样的:“有一组模型共享一组共同的特征。 任何具有这些特征的模型都表现出行为B。如果我们进行类似于B的观察O,解释它的一种方式是,这表明系统S具有足以产生1的一组特征。”

对于这种说法,增加更多的特征并没有帮助。 使模型更真实不会使模型更可靠;它只掩盖了导致O的基本特征,和S特有的附带特征之间的差异。

图?显示了这种模型的逻辑结构。 特征xy足以产生行为。 增加更多细节,如特征wz,可能会使模型更加逼真,但是这种现实并没有增加解释力。

澳门新濠3559 11

澳门新濠3559 12“滑翔者”:每4个回合“它”会向右下角走一格。虽然细胞早就是不同的细胞了,但它能保持原本的形态。

5.10 CA 的实现

澳门新濠3559 13

image

图 5.7:列表的列表(左)和 NumPy 数组(右)

为了生成本章中的图形,我编写了一个名为 CA 的 Python 类,它代表细胞自动机,以及用于绘制结果的类。在接下来的几节中,我会解释他们如何工作。

为了存储 CA 的状态,我使用了 NumPy 数组,这是一个多维数据结构,其元素类型都相同。它与嵌套列表类似,但通常更小更快。图?说明了原因。左侧的图展示了整数列表的列表;每个点表示一个引用,它占用 4-8 个字节。要访问其中的一个整数,你必须跟随两个引用。

右图显示了相同整数的数组。因为这些元素大小都相同,所以它们可以连续存储在内存中。这种安排节省了空间,因为它不使用引用,并且节省了时间,因为可以直接从下标计算元素的位置;没有必要跟随一系列的引用。

为了解释我的代码如何工作,我将以一个 CA 开始,它计算每个邻域中细胞的“奇偶性”。如果数字是偶数,则数字的奇偶性为 0;如果数字为奇数,则奇偶性为 1。

首先,我在第一行的中间,创建带有单个 1 的零数组。

>>> rows = 5
>>> cols = 11
>>> ca = np.zeros((rows, cols))
>>> ca[0, 5] = 1
print(ca)
[[ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]

plot_ca用图形展示了结果。

mport matplotlib.pyplot as plt

def plot_ca(ca, rows, cols):
    cmap = plt.get_cmap('Blues')
    plt.imshow(array, interpolation='none', cmap=cmap)

按照约定,我使用缩写名称plt引入了pyplotimshow将数组视为“图像”并显示它。 使用颜色表'Blues',将“开”细胞绘制为深蓝色,“关”细胞绘制为淡蓝色。

现在,为了计算下一个时间步中的 CA 状态,我们可以使用step

def step(array, i):
    rows, cols = array.shape
    for j in range(1, cols):
        array[i, j] = sum(array[i-1, j-1:j+2]) % 2

参数ca是表示 CA 状态的 NumPy 数组。 rowscol是数组的维数,而i是我们应该计算的时间步骤的索引。 我用i来表示数组的行,它们对应于时间,j表示对应于空间的列。

step内部,我们遍历第i行的元素。 每个元素是来自上一行的三个元素的总和,并对 2 取余。

for ex2:

澳门新濠3559 14“轻量级飞船”:它的周期是4,每2个回合会向右边走一格。

5.11 互相关

上一节中的step函数很简单,但速度并不是很快。 一般来说,如果我们用 NumPy 操作替换循环,我们可以加速这样的操作,因为 Python 解释器中的for循环会产生大量开销。 在本节中,我将展示如何使用NumPy函数相关来加快步骤。

首先,我们可以使用数组乘法来代替切片运算符来选择邻域。 具体来说,我们将数组乘以一个窗口,其中我们想要选择的细胞为一,其余为零。

例如,以下窗口选择前三个元素:

>>> window = np.zeros(cols, dtype=np.int8)
>>> window[:3] = 1
>>> print(window)
[1 1 1 0 0 0 0 0 0 0 0]

如果我们乘以数组的最后一行,我们会得到前三个元素:

>>> print(array[4])
>>> print(window * array[4])
[0 1 0 0 0 1 0 0 0 1 0]
[0 1 0 0 0 0 0 0 0 0 0]

现在我们可以使用sum和模运算符来计算下一行的第一个元素:

>>> sum(window * array[4]) % 2
1

如果我们将窗口向右移动,它会选择接下来的三个元素,以此类推。所以我们可以像这样重写step

def step2(array, i):
    rows, cols = array.shape
    window = np.zeros(cols)
    window[:3] = 1
    for j in range(1, cols):
        array[i, j] = sum(window * array[i-1]) % 2
        window = np.roll(window, 1)

roll将窗口向右移动(它也把末尾的补在开头,但不影响这个函数)。

step2产生step的相同结果。 它仍然不是非常快,但是它朝着正确的方向迈出了一步,因为我们刚刚执行的操作(乘以窗口,将结果相加,移动窗口并重复)用于各种应用。 它被称为互相关,而 NumPy 提供了一个称为correlate的函数来计算它。

我们可以用它来编写更快,更简单的步骤:

def step3(array, i):
    window = np.array([1, 1, 1])
    array[i] = np.correlate(array[i-1], window, mode='same') % 2

当我们使用np.correlate时,窗口不必与数组大小相同,因此使窗口更简单一些。

mode参数决定结果的大小。 你可以阅读 NumPy 文档中的详细信息,但是当模式为'same'时,结果与输入大小相同。

 澳门新濠3559 15怎么样?是不是觉得很炫酷,一共100行代码,下面我们进行细胞自动机的介绍和代码的解读!

澳门新濠3559 16“滑翔者枪”:它会不停地释放出一个又一个滑翔者。

5.12 CA 表

现在还差一步。 如果 CA 规则仅取决于邻居的总和,那么我们迄今为止的函数仍然有效,但大多数规则还取决于哪些邻居是开或者关的。 例如,100 和 001 可能会产生不同的结果。

我们可以使用一个包含元素[4,2,1]的窗口,使step更加通用,它将邻域解释为一个二进制数。 例如,邻域 100 产生 4;010 产生 2,001 产生 1。然后我们可以在规则表中查找这些结果。

以下是更一般的步骤:

def step4(array, i):
    window = np.array([4, 2, 1])
    corr = np.correlate(array[i-1], window, mode='same')
    array[i] = table[corr]

前两行几乎相同。 最后一行在table中查找corr的每个元素,并将结果赋给array[i]

最后,这是计算表的函数:

def make_table(rule):
    rule = np.array([rule], dtype=np.uint8)
    table = np.unpackbits(rule)[::-1]
    return table

参数rule是一个 0 到 255 的整数。第一行将规则放入单个元素的数组中,以便我们可以使用unpackbits,将规则编号转换为其二进制表示形式。 例如,以下是规则 150 的表:

>>> table = make_table(150)
>>> print(table)
[0 1 1 0 1 0 0 1]

thinkcomplexity.py中,你将找到CA的定义,它封装了本节中的代码,以及两个绘制 CA 的类,PyplotDrawerEPSDrawer

细胞自动机是Wolfram提出的,此人我觉得挺屌..大家可以自行查找他的工作.

澳门新濠3559 17“繁殖者”:它会向右行进,留下一个接一个的“滑翔者枪”。动图最后一帧定格时用三种颜色区分了繁殖者本体、滑翔者枪和它们打出来的滑翔者。

5.13 练习

练习 1

本章的代码位于本书仓库的 Jupyter 笔记本chap05.ipynb中。打开这个笔记本,阅读代码,然后运行单元格。你可以使用这个笔记本来做本章的练习。我的解决方案在chap05soln.ipynb中。

练习 2

这个练习要求你试验规则 110 以及它的一些飞船。

  1. 阅读规则 110 的维基百科页面,其中描述了其背景图案和飞船:https://en.wikipedia.org/wiki/Rule_110。

  2. 使用产生稳定背景图案的初始条件创建 CA 规则 110。

    请注意,CA 类提供了start_string,它允许你使用 1 和 0 的字符串初始化数组的状态。

  3. 通过在行的中心添加不同的图案来修改初始条件,并查看哪些产生了飞船。对于一些n的合理的值,你可能想列举所有可能的n位图案。对于每个飞船,你能找到平移的时间和速度吗?你能找到的最大的飞船是什么?

  4. 当宇宙飞船相撞时会发生什么?

练习 3

这个练习的目标是实现一个图灵机。

  1. 阅读 http://en.wikipedia.org/wiki/Turing_machine 来了解图灵机。
  2. 编写一个名为Turing的类来实现图灵机。对于动作表,使用三个状态的 Busy Beaver 的规则。
  3. 写一个名为TuringDrawer的类,该类生成一个图像,表示磁带状态以及磁头位置和状态。可能的外观的一个示例,请参阅 http://mathworld.wolfram.com/TuringMachine.html。

练习4

  1. 本练习要求你执行并测试几个 PRNG。为了进行测试,你需要安装 DieHarder,你可以从 https://www.phy.duke.edu/~rgb/General/dieharder.php 下载 DieHarder,也可能为你的操作系统作为软件包提供。
  2. 编写一个程序,实现 http://en.wikipedia.org/wiki/Linear_congruential_generator 中描述的线性同余生成器之一。使用 DieHarder 进行测试。
  3. 阅读 Pythonrandom模块的文档。它使用了什么 PRNG?测试它。
  4. 使用几百个细胞实现 CA 规则 30,在合理的时间内以尽可能多的时间步骤运行它,然后将中心列输出为位序列。测试它。

练习5

可证伪性是一个吸引人的和有用的想法,但在科学哲学家中,它并不普遍视为界限的解决方案,正如波普尔所声称的那样。

阅读 http://en.wikipedia.org/wiki/Fififiability 并回答以下问题。

  1. 界限问题是什么?
  2. 根据波普尔的说法,可证伪性是否解决了界限问题?
  3. 给出两个理论示例,一个被认为是科学,另一个被认为是非科学,它们由可证伪性的标准成功地区分开。
  4. 你能总结出科学哲学家和历史学家对波普尔的主张提出的,一个或多个反对意见吗?
  5. 你是否有这样的感觉,即实践哲学家对波普尔的工作给予高度评价?

细胞自动机(英语:Cellular automaton),又称格状自动机、元胞自动机,是一种离散模型,在可算性理论、数学及理论生物学都有相关研究。它是由无限个有规律、坚硬的方格组成,每格均处于一种有限状态。整个格网可以是任何有限维的。同时也是离散的。每格于t时的态由 t-1时的一集有限格(这集叫那格的邻域)的态决定。 每一格的“邻居”都是已被固定的。(一格可以是自己的邻居。)每次演进时,每格均遵从同一规矩一齐演进。
就形式而言,细胞自动机有三个特征:
平行计算(parallel computation):每一个细胞个体都同时同步的改变,这点很重要
局部的(local):细胞的状态变化只受周遭细胞的影响。对于本例来讲,就是周围的8个细胞
一致性的(homogeneous):所有细胞均受同样的规则所支配,规则的制定不是很简单.

细胞自动机的想法可以追溯到冯·诺依曼,上面这几条规则别名“生命游戏”,可能是最出名的一套规则组。沃尔夫勒姆对细胞自动机着了迷,而他的同事们对此的评论是“我不太确定他搞的东西能叫科学”,“这更像是数学游戏,他显然已经不再是物理学家了”,还有“这个‘少年天才’其实没有穿衣服”。

本例规则采用,以下的规则:

可是沃尔夫勒姆却觉得自己发现了某种本质的东西。1983年,他做出了自己最得意的发现:“Rule 30”。这是一套规则组,处理的是更加简单的一维细胞自动机,每一次迭代的产物变成新的一行打印在下面。可是,从一个活细胞出发,它却生成了一套极其复杂的无尽花纹;后来Mathematica里使用的随机数生成器,就是基于Rule 30的。(顺便说,用Rule XX指代一维细胞自动机的规则组,这一用法是沃尔夫勒姆首创,沿用至今。)

#每个细胞有两种状态 - 存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动。(如图,黑色为存活,白色为死亡)
# 当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态。(模拟生命数量稀少)
# 当前细胞为存活状态时,当周围有2个或3个存活细胞时, 该细胞保持原样。
# 当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态。(模拟生命数量过多)
# 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。 (模拟繁殖)

澳门新濠3559 18Rule 30的全部规则,以及从一个黑点开始的迭代结果。每一次新的迭代就是新的一行,而每一个细胞的死活由且仅由它自己和它左右两侧的细胞在上一行的状态决定。之所以是30,因为按顺序排列的二进制数00011110对应的十进制就是30。

这些规则比较简单,便于模拟,有兴趣的话,可以看一下Wolfram写的其他规则,比较著名的是Rule 30.这是一套规则组,处理的是更加简单的一维细胞自动机,每一次迭代的产物变成新的一行打印在下面。可是,从一个活细胞出发,它却生成了一套极其复杂的无尽花纹.更牛逼的是,他的假说是,只要计算力和空间足够大,他就能模拟宇宙....

澳门新濠3559 19250次迭代后的Rule 30。左边缘看起来还有一定规律,但大部分区域看起来近乎是随机的。

科学人:你一直说,不含随机性的细胞自动机也可以产生无法预测的模式。现实世界如此多姿多彩,你觉得它是不是也不需要随机性?

澳门新濠3559 20织锦芋螺(Conus textile)的花纹神似Rule 30的结果。

沃尔夫勒姆: 我觉得不需要。很多时候人们说的“随机性”,其实是建模时用的黑箱:我不了解一个系统的全部规则,所以我假定这个系统有某些额外的因素在提供“随机”的输入。这个意义上的“随机”,只是证明你还没为这个系统建立完整的模型而已。但我们能为宇宙建立一个完整的模型吗?我的工作假说是“能”。也许这假说是错的,也许出于什么原因我们就是无法为宇宙建立完整模型——但是我还没有见到相关的证据。所以我会朝这个目标而努力。一旦我们得到了完整模型,随机性就消失了,没有任何来自外部的不可预知的因素。我有个朋友名叫格里高利·蔡廷,他对于算法随机性这整个领域非常感兴趣,他有一个著名的发现叫做“欧米伽数”(即蔡廷常数),这个数字虽然是个确定的数,但任何图灵机都计算不出来。我和他观点的区别就是,我认为宇宙像pi一样,虽然无穷无尽但可以计算到任意精度;而他始终认为宇宙像欧米伽。我不知道为什么。

如此简单的程序能生成如此复杂的行为,这意味着什么?沃尔夫勒姆认为,这正是我们宇宙的本质;我们的世界就是计算,就是一套简单的规则生成的复杂现象。这听起来有点像是“民科”的主张,所不同的是,他关于细胞自动机的研究获得了超过一万次引用;而他本人则在离开高等研究院、在伊利诺伊大学度过了两年时光(“在那里,他们指望我来筹钱,做研究的反而是别人”)之后,彻底离开了大学,成立了自己的公司。成立它的目的不是赚钱,而是以最大的自由来推广自己的软件和自己的观点。为了保持掌控力,他甚至拒绝了好几次上市机会。

以下是关于科学人对其的采访:

其结果,就是Mathematica和WolframAlpha,还有一本名为《一种新科学》的奇书。在这本引发巨大争议的书里,沃尔夫勒姆完整地阐述了他的世界观:自然界的本质是计算,但计算的本质必须用实验探索。过去的研究者要么使用纯数学去研究计算,要么把计算看成工程的工具。但沃尔夫勒姆认为,我们需要从经验出发、为了计算本身而探究计算,这是一种新的路线,书名也因此而来。

科学人:如果我们建立了宇宙的完整模型,是否意味着我们就没有自由意志了呢?

最近两年里,沃尔夫勒姆又启动了一项更大的计划:Wolfram Language。其实它25年来一直是Mathematica所使用的计算机语言,但现在它独立了出来,希望成为“世界上最有效率的编程语言”。在2014年即将结束之时,沃尔夫勒姆来华访问,宣传他的思想与产品;新年第一天早晨,沃尔夫勒姆接受了果壳网科学人的专访,在访谈里他讲述了自己对宇宙本质、自由意志、人工智能和软件开源等许多问题的看法。

沃尔夫勒姆: 我在我的书里讨论了一个概念,叫做“计算不可化约性”(Computational irreducibility)。这意味着,就算你知道了一切规则,你可能也无法提前预测这些规则将会做什么——唯一的办法是实地运行这些规则看看它们到底会做出什么来。

“我们能为宇宙建立一个完整的模型吗?我的工作假说是‘能’。”

科学人:你一直说,不含随机性的细胞自动机也可以产生无法预测的模式。现实世界如此多姿多彩,你觉得它是不是也不需要随机性?

沃尔夫勒姆:我觉得不需要。很多时候人们说的“随机性”,其实是建模时用的黑箱:我不了解一个系统的全部规则,所以我假定这个系统有某些额外的因素在提供“随机”的输入。这个意义上的“随机”,只是证明你还没为这个系统建立完整的模型而已。但我们能为宇宙建立一个完整的模型吗?我的工作假说是“能”。也许这假说是错的,也许出于什么原因我们就是无法为宇宙建立完整模型——但是我还没有见到相关的证据。所以我会朝这个目标而努力。一旦我们得到了完整模型,随机性就消失了,没有任何来自外部的不可预知的因素。我有个朋友名叫格里高利·蔡廷,他对于算法随机性这整个领域非常感兴趣,他有一个著名的发现叫做“欧米伽数”(即蔡廷常数),这个数字虽然是个确定的数,但任何图灵机都计算不出来。我和他观点的区别就是,我认为宇宙像pi一样,虽然无穷无尽但可以计算到任意精度;而他始终认为宇宙像欧米伽。我不知道为什么。

科学人:如果我们建立了宇宙的完整模型,是否意味着我们就没有自由意志了呢?

沃尔夫勒姆:我在我的书里讨论了一个概念,叫做“计算不可化约性”(Computational irreducibility)。这意味着,就算你知道了一切规则,你可能也无法提前预测这些规则将会做什么——唯一的办法是实地运行这些规则看看它们到底会做出什么来。

“自由意志”这个词包括很多层面,如果我们能预测我们将会做出什么事情来,那可以说我们没有自由意志。比如说,看一只蛾子反复地撞击玻璃窗,试图飞出去,我们会说它看起来没有自由意志,似乎是决定性的反射机制。但如果我们看到一个人在做一件非常复杂的行为,我们会说他看起来好像在作出选择,因为我们无法预测他将会怎么做——在这个意义上,我们拥有自由意志。

我们的历史必须按顺序逐渐上演,你不能说“我已经知道结局了,快进到头吧”;历史是必不可少的。世界的底层规则是简单的、决定性的,但是这些规则生成的人类行为却极端复杂,这之间的计算鸿沟无法化约,因此我们的行为是“自由”的。

科学人:会不会有一天,我们对大脑已经有足够的了解,可以监控到足够的信息,可以说“十秒钟之后这个人会想这件事情”?这时人们还有自由意志吗?

沃尔夫勒姆:我不知道。这一点已经部分地在鸟类中实现了,我们能大致预测出鸟类下一秒会唱什么样的歌。但我还是觉得,自由意志这个概念的根源,只是因为要预测未来所需的计算量太大。就算我们发现了宇宙的全部规律,要么我们得想办法进行和宇宙同样的运算,要么我们就看着宇宙自己这么算下去。

科学人:到那时,是否物理就变成了数学呢?物理条件会反过来限制我们对数学的理解吗?

沃尔夫勒姆:如果我们真的建立了宇宙的模型,一切都可计算,那么全部物理问题就都还原成了数学。但什么是数学呢?数学从公理系统出发,比如欧几里得的公理系统;在此基础上我们推导出一系列的形式知识。至于选择什么样的公理,可以是人为武断选择、得到纯粹抽象的数学知识,也可以选择那些和现实世界对应的公理。欧几里得认为他选择的公理是对应现实的,但后来数学家逐渐开始做出武断的抽象的选择。数学是个抽象的领域,它不会被现实的物理限制。

“自由意志”这个词包括很多层面,如果我们能预测我们将会做出什么事情来,那可以说我们没有自由意志。比如说,看一只蛾子反复地撞击玻璃窗,试图飞出去,我们会说它看起来没有自由意志,似乎是决定性的反射机制。但如果我们看到一个人在做一件非常复杂的行为,我们会说他看起来好像在作出选择,因为我们无法预测他将会怎么做——在这个意义上,我们拥有自由意志。

“模仿人类,既是错误的路线,又是唯一可行的路线​”

科学人:我们之前采访过侯世达。对于他的人工智能(AI)路线——遵循类比、模仿人类思维——你怎么看待?

沃尔夫勒姆:我认识他,我无法评判他的具体研究内容,但对于他的大致方向——理解人类的智能——我的看法是:这既是错误的路线,又是唯一可行的路线。

一方面,如果说我们的目的是创造智能系统,那么这条路线与之无关,正如研究鸟类如何飞行与制造飞机无关一样。特别是在所谓“通用推理AI”上,人们曾经说它才是能够回答问题的系统,但沿这条路线没有人成功;而我们的WolframAlpha却成功地回答了许多问题。我们如何做到的?通用推理AI,所做的是推理。面对物理问题,从一个事实推理出下一个事实,就像中世纪的哲学家那样。而我们做的,则是计算。面对物理问题,我们在某种意义上是“作弊”了:使用我们文明积累下来的全部科学和数学确立一个方程,然后把结果计算出来。在这里,我们使用的方式和人类思考问题的方式截然不同,但效率要高很多。大部分眼下的智能系统都是这样。

但另一方面,如果我们的目的是真正的“终极”智能呢?我们现在的计算能力,和大脑比起来都可以说相当不错了,但是如果要为这些计算设定一个目的,必须有人类的参与。我们的系统可以想算什么就算什么,但没有人为它指明目标,它什么也做不了。世界上没有所谓“纯粹”的智能,它必须和人类目标紧密相连。侯世达的路线对解决任何具体的智能问题都没有什么帮助,但对理解我们的目的却至关重要。

科学人:为什么人类有目的,机器就没有呢?你觉得区别在哪里呢?

沃尔夫勒姆:这是个好问题。水有向下流的“目的”,你可以为物理世界赋予各种各样的“目的”,但所谓的目的其实有两种,一种是遵循物理机制自然会产生的结果,另一种则是努力要去实现的目标。自然界的计算能力完全可以和人脑像匹敌,但自然界的目的全都是前者,而如果我们希望得到类人智能,必须要有类人的目的。比如湍流,或者木星大气表面的漩涡,它在做各种各样繁复的计算,恐怕比我们的大脑更加复杂——至少是运算量更大,但它看起来并未获得我们所说的智能,因为我们唯一知道的智能,就是人类智能。

科学人:那么你相信智能爆炸会带来技术奇点吗?

沃尔夫勒姆:不相信,至少不是人们通常说的那种奇点。许多人说奇点的时候,想象的一个重要特征就是人类永生。这迟早是能实现的,也许部分技术来自生物学,部分技术来自数字世界。这时看起来也许就像是抵达了奇点一样——人类和智能有了无限的时间去发现新事物。但是每年新发现的东西就会因此而指数爆炸直到无限吗?我不这么认为。也许我有偏见吧,人类智能是个连续谱,而我很幸运,我自己位于这个谱的上面那一端;但是在我看来,这些智力并没有质的区别。就算你的智商有200甚至1000,恐怕也不会让你懂得一些别人不可能懂的东西。能不能把更多的知识整合起来?当然可以。假如说我们现在大脑每秒接收100兆的信息,我们当然可以想象一个智能系统每秒可以接收并处理上千兆的信息;但我不认为这谈得上是“更高的智能”。

我们的历史必须按顺序逐渐上演,你不能说“我已经知道结局了,快进到头吧”;历史是必不可少的。世界的底层规则是简单的、决定性的,但是这些规则生成的人类行为却极端复杂,这之间的计算鸿沟无法化约,因此我们的行为是“自由”的。

“我把自己看成一个工具的制造者”

科学人:人们说WolframAlpha是第一个实用的AI。你在创造它的时候,觉得自己是一个AI研究者吗?

沃尔夫勒姆:“人工智能”是一个很模糊的概念。我和AI打交道的这些年里,它从让人激动的概念,变成了“毫无希望”的领域,现在它又东山再起,流行起来了。四十多年前,我就想做一个像WolframAlpha这样的东西。当时,我觉得要做一个这样的工具,必须先制造出通用AI,这很困难,所以我没有沿这个方向继续做下去。但后来,由于我所做的研究,我意识到其实不需要通用AI,也能提供计算性知识。这就是我发明WolframAlpha的原因。我们想制造出“聪明”的系统,而现在我们有了Wolfram语言作为平台,在这个基础上我们就能实现智能系统的目标。

我把自己看成一个工具的制造者,而拿这些工具做什么呢?把我们这个文明的一切知识汇聚起来,形成框架,让新的知识能够自动在它的基础上生产出来。WolframAlpha和Wolfram语言都是在帮助人思考,但和其他帮助人思考的工具不同,我们所做的是让知识变成可以用来计算的东西。

科学人:Wolfram语言未来会向免费和开源方向发展吗?

沃尔夫勒姆:开源在有些事情上是好的,另一些则不是。一般来说,当一个项目需要领导、需要整体设计的时候,开源是很难实现的;而我们过去二十年来做的正是这样的项目——创造从未有过的东西。另一个因素是,这种语言用到了很多很多的知识,其中有些知识属于我们,另一些知识则来自别人,我们不能就这么简单地说,“这一切都是免费的!” 

的确,WolframAlpha是免费服务,我们提供这项服务本身是不赚一分钱的。这没问题,但光靠它自己无法长久维持,所以我们在它的基础上提供很多别的服务,并从中营利。我的信念是,建立一个经济-生态系统的最好办法,就是让那些从中获得价值的人们也为之付费。这是最简单的方式。

很多所谓的开源解决方案,其实是陷阱。最著名的陷阱就是安卓:系统本身是免费的,但你要支付专利费。还有些别的例子,东西本身是免费的,但你自己没法建立这个系统,你得求助专业人士,最后还是得付钱让他们在云端托管。所以我们做的,其实是在经济问题上坦诚相见:人们可以使用Wolfram语言在线版免费地学习和试用,但当创业公司在此基础上开始盈利的时候,就要为此付钱。其实这个模式和常见的模式差别也不是那么的大,但如果他们选择了开源的方案,那么就说不准什么时候要付专利费或者云端托管费。我们所做的只是让事情简单化,让人们预先清楚会发生什么。

科学人:你觉得你的产品受到了硬件计算能力的限制吗?

沃尔夫勒姆:不怎么觉得。我面临的挑战是在软件上找到巧妙的方法,我不觉得底层的硬件是什么限制——当然多年前我刚开始使用计算机的时候肯定是受限制的。其实真正的制约因素是,从一个想法到可运行的软件诞生,这个过程要花多长时间。软件本身运行所花的时间很少成为瓶颈。

我们确实有很多极端的例子:比如眼下像机器学习这样的程序,要运行很多个CPU年才能得到结果,如果能快一些固然很好。再比如,为了提供一个用户界面能让人类感到使用自如,硬件至少需要达到一定的水准;在一部分移动设备上我们还做不到这一点。但这都是相对次要的问题。当然还有别的因素,比如现在中国网络连接的不确定性———某种意义上这也算是硬件问题吧,不过这是另一个话题了。所以关键还是,我们人类能否做出好的软件。

科学人:会不会有一天,我们对大脑已经有足够的了解,可以监控到足够的信息,可以说“十秒钟之后这个人会想这件事情”?这时人们还有自由意志吗?

“我对解决别人解决过的问题从来都没有兴趣”

科学人:你做了很多自我数据分析(比如统计自己都在啥时候打电话)的工作。你为什么要这样做?有没有从中发现一些有趣的东西呢?

沃尔夫勒姆:我搜集这些数据是因为我对数据感兴趣。我有几套系统,负责检查我昨天锻炼了多少、完成了多少工作这样的事情。我已经搜集了二十五年的数据,时不时地我会对这些数据分析一下,会发现各种各样的结果。但这些数据的真正宝贵之处是,当我对自己有什么问题的时候,我能很容易找到答案。比如有一次我买了个新键盘,我想知道有了它打字速度是快了还是慢了,只花几分钟我就得到了答案。眼下我正打算回答一个难一些的问题,就是对我发的电子邮件进行情绪分析,来判断哪些事情会让我开心,哪些会让我不开心。我所发现的大多数结果,都是事后想来“嗯,的确如此”的那种;但如果没有看到这些数据,我是不会往那个方向上思考的。

科学人:在自己的公司做研究和在大学做研究,你觉得有什么差异?

沃尔夫勒姆:公司的效率要高得多。对我来说,公司就像是把想法变成现实的机器,我会努力为了这个目的而优化这台机器,而在大学里你就没法做这样的优化。

科学人:你多次辍学,你觉得学历这个东西是什么意义呢?

沃尔夫勒姆:其实我不是真的“辍学”。我在英国去的是顶尖的中学,我离开的原因是我得到了顶尖大学的奖学金,所以我只是碰巧比别人离开得早几年而已。在大学里,我得到了直接进入研究生学习的机会,所以我想既然如此,为什么要花这么多年当本科生呢。我很幸运能在二十岁就完成我的学业阶段,因为我觉得我没有耐心再学那么多年。我对解决别人解决过的问题从来都没有兴趣,所以我一直很讨厌课本上的习题。也许这是我个人的傲慢吧,我只是希望我在做独一无二的事情,而不是别人做过的事情。在某些教育系统里,有很多的内容是围绕“循序渐进走过程”而展开的,但我觉得发挥人们潜力最好的方式,是让他们学习自己感兴趣的东西,而不是让他们沿着确定的道路前进。

科学人:你有粒子物理学博士学位,后来为什么不做物理了呢?

沃尔夫勒姆:我没有离开物理呀,我时不时地还会回到物理问题。我在《一种新科学》里就讨论了很多物理问题。我对各种各样的问题都感兴趣,特别是宇宙的最本质特性,这也是促使我学习粒子物理的原因,但我学了之后发现粒子物理的细节并不是宇宙的本质,而诸如复杂系统的特性这样的问题要比物理学更加基本。你可以把这些研究想象成一般性的物理原则。对于宇宙的具体物理特性我依然感兴趣,我希望有一天能把一般性的物理原则应用在上面。

当希格斯玻色子得奖的时候,我在美国起了个大早看视频直播,我意识到现场有很多好多年没见的老朋友,他们一直留在物理学界。他们介绍希格斯玻色子的时候我想,“这些我都知道呀,四十年前我就是在做这些东西。”我想我完全可以留在物理学界,四十年来一直就做这样的研究,我觉得我对此还算挺擅长的。但是因为我转行做了许多其他别的内容,我所弄明白的东西,哪怕限定在物理学里,也比留在物理学界做单一领域要多得多。我的人生有一条经验让我念念不忘,那就是研究许多不同的东西能让人学到更多,哪怕你的目标只是解决一个问题,也是如此。在这一点上我很幸运。  

科学人:你说你最喜欢的发现是Rule 30,为什么呢?

沃尔夫勒姆:这是我发现的第一个元胞自动机规则,它是一个戏剧性的例子,表明一个简单的生成规则如何诞生出复杂的行为。我喜欢拿它和科学史上的案例对比:当伽利略发现木星的卫星的时候,这就是一个迹象,表明物理学的定律适用于整个宇宙。Rule 30让我意识到,在计算的宇宙中凭借简单规则可以出现一些非常复杂的现象,这并不是显然的;这是第一个明确的案例。

今天的科学和技术,很多都是依靠搜寻这个计算宇宙中的可能程序,寻找在行为上满足我们需求的那些。正是简单程序可以产生复杂行为这一特征使之成为可能。在我写《一种新科学》的时候,我做出了一个预测:审视一下新出现的关于自然界的模型,我们会看到,基于程序的发现,将逐渐取代基于方程的发现。我预测在五十年内,挖掘计算空间所产生的科技将会超过传统方式。那是十二年前的事情,我们还有三十八年。我们正站在这个趋势的开端。

澳门新濠3559 21采访者与沃尔夫勒姆先生的合影。

(编辑:wuou)

附:xkcd的一幅漫画。也许我们的宇宙就是细胞自动机的计算结果呢。

澳门新濠3559 22

沃尔夫勒姆: 我不知道。这一点已经部分地在鸟类中实现了,我们能大致预测出鸟类下一秒会唱什么样的歌。但我还是觉得,自由意志这个概念的根源,只是因为要预测未来所需的计算量太大。就算我们发现了宇宙的全部规律,要么我们得想办法进行和宇宙同样的运算,要么我们就看着宇宙自己这么算下去。

相关小组

元胞自动机

科学人:到那时,是否物理就变成了数学呢?物理条件会反过来限制我们对数学的理解吗?

沃尔夫勒姆: 如果我们真的建立了宇宙的模型,一切都可计算,那么全部物理问题就都还原成了数学。但什么是数学呢?数学从公理系统出发,比如欧几里得的公理系统;在此基础上我们推导出一系列的形式知识。至于选择什么样的公理,可以是人为武断选择、得到纯粹抽象的数学知识,也可以选择那些和现实世界对应的公理。欧几里得认为他选择的公理是对应现实的,但后来数学家逐渐开始做出武断的抽象的选择。数学是个抽象的领域,它不会被现实的物理限制。

github源码:

talk is easy, give you the code!...

编辑:编程 本文来源:除了这几个比较有名的细胞自动机的图案,每次

关键词: