在计算机的世界里,存在着一种神奇的力量,那就是我们所说的"通灵芯片"。它如同一块神秘的积木,构建着我们日常运作的基石。让我们一起探索计算机运作的奥秘,从最基础的通用件开始。
首先,就像石的奇迹,通用件是所有计算机硬件的核心,它们是构建复杂系统的基础。无论多么高级的计算机,都离不开这些基本的部件,如处理器、内存和输入输出设备,它们协同工作,使信息得以流动。
接着,万能积木般的编程语言让我们能够将复杂的思想转化为计算机能理解的指令。程序设计,就是将这些积木组合起来,编织出计算机的行为逻辑,让机器按照我们的意愿执行任务。
图灵机的普适性是计算机理论的基石,它揭示了任何可计算过程都可以被一台简单的机器模拟。这为我们理解计算机的无限可能性提供了理论依据。
算法和探索法是计算机科学的灵魂,它们是解决问题的工具和方法。通过算法,我们可以高效地处理大量数据,而探索法则推动着技术的不断进步。
存储是计算机记忆的关键,信息与密码的安全性关乎数据的保护。从简单的硬盘到复杂的加密技术,存储系统在保护和传递信息中起着至关重要的作用。
速度是现代计算机追求的另一个重要特性,通过并行计算,多任务可以同时进行,大大提升了处理能力。并行计算机就像是拥有多个大脑,共同加速了计算进程。
自学习与自适应则是计算机迈向智能化的重要一步。通过机器学习,计算机可以从数据中学习,自我改进,模拟人类的思考过程,展现出惊人的能力。
最后,跨越工程设计,计算机技术的发展不再局限于硬件或软件,而是跨越整个系统,涉及到材料科学、电子工程、软件开发等多个领域,这是一场全方位的技术革命。
在这一系列的探索中,我们不断深化对计算机运作的理解,感谢那些默默付出的工程师和科学家,是他们的智慧和努力,让通灵芯片变得如此神通广大。
通用图灵机和图灵机的区别
选自量子杂志,机器之心编译,编辑:王楷。
计算对于我们大多数人来说是一个熟悉的概念。
以函数f(x)=x+3为例,当x为3时,f(3)=3+3。
答案是6,非常简单。
这个函数是可计算的。
然而,有些函数并不那么简单,而且确定它们是否可以计算并非易事,这意味着它们可能永远都无法得出一个最终答案。
1928年,德国数学家大卫・希尔伯特(DavidHilbert)和威廉・阿克曼(WilhelmAckermann)提出了一个名为Entscheidungsproblem(即「判定性问题」)的问题。
随着时间的推移,他们提出的问题将引出可计算性的正式定义,这个定义使数学家能够回答大量新问题并为理论计算机科学奠定基础。
一位23岁的研究生,艾伦图灵,提出了这个定义。
他在1936年写了一篇开创性论文,不仅将计算的概念形式化表达了出来,还证明了一个数学的基本问题,为发明电子计算机创造了知识基础。
图灵的伟大远见在于以抽象机器的形式为计算问题提供了具体的答案,后来他的博导阿朗佐丘奇将其命名为图灵机。
图灵机是抽象的,因为它没有(也不能)作为有形设备物理存在。相反,它是一个计算的概念模型:如果这个机器可以计算一个函数,那么这个函数就是可计算的。
当艾伦图灵在1936年发明图灵机时,也创造了现代计算。
艾伦・图灵及他的图灵机
它的工作原理是这样的:图灵机可以按照规则表的规定读取和更改无限长磁带上的符号。
磁带由一个个「单元格」组成,每个单元格只能存储一个符号。
图灵机用磁带头读取和重写单元格的内容。
规则表中的每条规则都会决定图灵机应该根据它当前的状态和正在读取的符号来做什么。
图灵机可以基于它停止的位置来进入最终状态(「接受状态」或「拒绝状态」),决定接受或拒绝输入。
或者图灵机陷入无限循环并永不停歇地读取磁带。
理解图灵机的最好方法是来思考这样一个简单的例子。
让我们想象一下,图灵机被设计用于告诉我们给定的输入是否为数字零。
我们将输入带有空白符号(#)的数字0001,也就是说「#0001#」是我们磁带的相关部分。
图灵机从初始状态开始,我们称之为q0,它读取磁带最左边的单元格并找到一个空白区域。
按照规则,当处于状态q0时,如果符号是#,则保持原样不变,然后向右移动一个单元格,并将机器状态更改为q1。
在这一步之后,机器处于状态q1,它的磁头将正在读取第二个符号0。
现在我们寻找适用于这些条件的规则。
我们发现这样一个规则,「保持状态q1并将磁头向右移动一个单元格。
」这使我们处于相同的位置(在状态q1中,读数仍为0),因此我们继续向右移动,直到磁头最终读取到一个不同的数字1。
当我们再次查阅规则表时,我们发现了一条新规则:「如果遇到1,则转换到q2,即拒绝状态。」图灵机停止运行,并对最初的问题「0001是零吗?」回答「否」。
相反,如果输入是「#0000#」,图灵机将在所有这些零之后遇到#。
当我们查阅规则表时,我们发现一条规则说这意味着机器进入状态q3,即一种「接受」状态。
现在机器对「‘0000’是零吗?」这一问题的回答则为「是」。
艾伦图灵帮助定义了计算、算法和图灵机。
用抽象机器回答判断性问题
图灵使用他的抽象机器建立了一个计算模型,来回答Entscheidungs问题,它正式提出:给定一组数学公理,是否存在一个机械过程(即一组指令,今天我们称之为算法)总是可以确定给定的陈述是否为真?
假设我们想找到一种算法来告诉我们某个棋局中棋子位置是否可行。
在这其中,公理是管理国际象棋合理移动的规则。
我们能否按照有限的step-by-step流程序列到达该位置?尽管某些棋局可能需要比我们一生更长的时间来分析,一种算法可能会生成所有可能的局面并将其逐个与输入进行比较,此类算法存在于国际象棋游戏之中。
因此,我们说国际象棋是「可判定的」。
然而,在1936年,美国数学家丘奇和图灵使用不同的方法分别证明了「没有通用方法可以解决Entscheidungs问题的每个例子。
」例如,约翰康威的生命游戏等一些游戏是不可判定的:没有算法可以确定某一模式是否会从初始模式出现。
图灵表明了,如果存在可以执行所需任务的算法,则函数是可计算的。
同时,他还表明算法是一个可以用图灵机定义的过程。
因此,可计算函数是一种可通过图灵机来计算的函数。
这似乎是一种定义可计算性的迂回方式,但却是我们所拥有的最好方式。
麻省理工学院理论计算机科学家迈克尔・西普瑟表示:「这并不是说你可以选择用其他方式来定义它。
我觉得人们普遍认为,邱奇-图灵论题提出的是,算法的非正式概念就是任何合理计算模型可以做到的事情。
」其他数学家提出了不同的计算模型,虽然这些模型表面上看起来很不一样,但实际上是相同的:它们可以进行图灵机可以进行的任何计算,反之亦然。
就在哲学家、逻辑学家和数学家库尔特・哥德尔证明数学是不完备的几年后,丘奇和图灵也通过这项工作表表明了数学中的某些问题是不可判定的。
无论算法多么复杂,都无法告诉我们答案是肯定还是否定。
这两件事对希尔伯特来说都是毁灭性的打击,他曾希望数学能给出简洁、理想化的答案。
但这倒也不错:如果存在解决Entscheidungsproblem问题的一般解决方案,这将意味着数学中的所有问题都可以被简化为简单的机械计算。
通用和概率图灵机
除了回答这些基本问题之外,图灵机还通过一种称为通用图灵机的变体直接影响了现代计算机的发展。
它是一种特殊的图灵机,可以模拟任何其他图灵机的任何输入。
它可以读取其它图灵机的描述(以及规则和输入磁带)并在自己的输入磁带上模拟它们的行为,与模拟机器输出相同的输出结果,就像今天的计算机可以读取任何程序并执行它一样。
1945年,美籍匈牙利数学家、计算机科学家、物理学家约翰・冯・诺依曼提出了一种计算机架构——即冯・诺依曼架构,它使得通用图灵机概念变为现实生活中的机器成为可能。
当普林斯顿大学理论计算机科学家SanjeevArora教授这个概念时,他强调了更广泛的哲学描绘。
他表示,「通用(universal)有两种概念,一个是它可以运行任何其他图灵机。
,但另一个更大的概念是它可以运行你在宇宙中想出的任何计算。
」在经典物理学世界中,任何物理过程都可以使用算法进行建模或模拟,而算法又可以由图灵机进行模拟。
另一个值得关注且越来越有用的变体是概率图灵机。
与对每个输入都有定义明确回应的常规图灵机不同,概率图灵机可以根据概率做出多种回应。
这意味着它可以在不同的时间点对相同的输入产出不同的结果。
另外出人意料的是,对于某些问题,这种概率策略比纯粹的确定性方法更有效。
概率图灵机的概念已被证明在密码学、优化和机器学习等领域非常有用。
这些抽象机器也许是最好的证据,证明提出基本问题可能是科学家能够做的最有用的事情之一。
还没有评论,来说两句吧...