imtoKen钱包下载过程|图灵机

作者: imtoKen钱包下载过程
2024-03-08 03:49:33

图灵机_百度百科

百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心图灵机播报讨论上传视频一个抽象的机器收藏查看我的收藏0有用+10本词条由《中国科技信息》杂志社 参与编辑并审核,经科普中国·科学百科认证 。图灵机,又称图灵计算机,是一个抽象的机器。它由英国数学家艾伦・麦席森・图灵(1912―-1954年)于1936年提出的一种抽象的计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。 [2]图灵机有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个读写头在纸带上移来移去。读写头有一组内部状态,还有一些固定的程序。在每个时刻,读写头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。 [1]中文名图灵机外文名Turing Machine提出时间1936年别    名图灵计算目录1基本思想2工作原理3通用图灵机4停机问题5图灵机的变体6意义基本思想播报编辑图灵机图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:1、在纸上写上或擦除某个符号;2、读写头从纸的一个位置移动到另一个位置。而在每个阶段,人要决定下一步的动作,依赖于 (1) 此人当前所关注的纸上某个位置的符号和(2) 此人当前思维的状态。为了模拟人的运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:1、一条无限长的纸带 TAPE。纸带被划分为一个个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。2、一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。3、一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。4、一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见停机问题。注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中“空白”的纸带是全部为 0 的。有阴影的方格,包括读写头扫描到的空白,标记了 1,1,B 的那些方格,和读写头符号,构成了系统状态。(由 Minsky (1967) p.121 绘制)。 [1]工作原理播报编辑一台图灵机是一个七元组,{Q,Σ,Γ,δ,q0,qaccept,qreject},其中 Q,Σ,Γ 都是有限集合,且满足:1、Q 是状态集合;2、Σ 是输入字母表,其中不包含特殊的空白符;3、Γ 是带字母表,其中 Q∈Γ且Σ∈Γ ;4、 δ:Q×Γ→Q×Γ×{L,R}是转移函数,其中L,R 表示读写头是向左移还是向右移;5、q0∈Q是起始状态;6、 qaccept是接受状态。7、qreject是拒绝状态,且qreject≠qaccept。图灵机 M = (Q,Σ,Γ,δ,q0,qaccept,qreject) 将以如下方式运作:开始的时候将输入符号串从左到右依次填在纸带的格子上, 其他格子保持空白(即填以空白符)。M 的读写头指向第 0 号格子, M 处于状态 q0。机器开始运行后,按照转移函数 δ 所描述的规则进行计算。例如,若当前机器的状态为 q,读写头所指的格子中的符号为 x,设 δ(q,x)= (q',x',L),则机器进入新状态 q',将读写头所指的格子中的符号改为 x',然后将读写头向左移动一个格子。若在某一时刻,读写头所指的是第 0 号格子,但根据转移函数它下一步将继续向左移,这时它停在原地不动。换句话说,读写头始终不移出纸带的左边界。若在某个时刻 M 根据转移函数进入了状态 qaccept, 则它立刻停机并接受输入的字符串; 若在某个时刻 M 根据转移函数进入了状态 qreject, 则它立刻停机并拒绝输入的字符串。注意,转移函数 δ 是一个部分函数, 换句话说对于某些 q,x, δ(q,x)可能没有定义, 如果在运行中遇到下一个操作没有定义的情况, 机器将立刻停机。 [2]通用图灵机播报编辑对于任意一个图灵机,因为它的描述是有限的,因此我们总可以用某种方式将其编码为字符串。我们用 表示图灵机 M 的编码。我们可以构造出一个特殊的图灵机,它接受任意一个图灵机 M 的编码 ,然后模拟 M 的运作,这样的图灵机称为通用图灵机(Universal Turing Machine)。现代电子计算机其实就是这样一种通用图灵机的模拟,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的算法。但要注意,它只是模拟,因为现实中的计算机的存储都是有限的,所以无法跨越有限状态机的界限。经典图灵机及其许多变形识别语言的能力都是相同的,正因为如此,图灵机可以作为计算的一般模型。另外,通用图灵机 (可编程图灵机) 是存在的,通用图灵机可以模拟任意一个图灵机,这也是将图灵机作为现代计算机的形式模型的根本原因。 [3]停机问题播报编辑停机问题(halting problem)是逻辑数学的焦点,是第三次数学危机的解决方案。其本质问题是:给定一个图灵机和一个任意语言集合S,是否会最终停机于每一个s∈S。其意义类似于可确定语言。显然任意有限S是可判定性的,可数的(countable)S也是可停机的。通俗地说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。如果这个问题可以在有限的时间之内解决,则可以有一个程序判断其本身是否会停机并做出相反的行为。这时候显然不管停机问题的结果是什么都不会符合要求,所以这是一个不可解的问题。停机问题的本质是一阶逻辑的不自恰性和不完备性。类似的命题有理发师悖论、全能悖论等。 [4]图灵机的变体播报编辑图灵机有很多变体,但可以证明这些变体的计算能力都是等价的,即它们识别同样的语言类。证明两个计算模型A和B的计算能力等价的基本思想是:用A和B相互模拟,若A可模拟B且B可模拟A,则它们的计算能力等价。注意这里我们暂时不考虑计算的效率,只考虑计算的理论“可行性”。改变图灵机的带字母表并不会改变其计算能力。例如我们可以限制图灵机的带字母表为(0,1),这并不会改变图灵机的计算能力,因为我们可以用带字母表为(0,1)的图灵机模拟带字母表为任意有限集合厂的图灵机。另一个要注意的是,如果我们允许图灵机的纸带两端都可以无限伸展,这并不能增加图灵机的计算能力,因为我们可以用只有纸带一端能无限伸展的图灵机来模拟这种纸带两端都可以无限伸展的图灵机。如果我们允许图灵机的读写头在某一步保持原地不动,那也不会增加其计算能力,因为我们可以用向左移动一次再向右移动一次来代替原地不动。其他的常见图灵机变种包括多带图灵机、非确定型图灵机、交替式图灵机、枚举器。 [4]意义播报编辑图灵提出图灵机的模型并不是为了同时给出计算机的设计,它的意义有如下几点:(1)它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构;(2)图灵机模型引入了读写、算法与程序语言的概念,极大的突破了过去的计算机器的设计理念;(3)图灵机模型理论是计算学科最核心的理论,因为计算机的极限计算能力就是通用图灵机的计算能力,很多问题可以转化到图灵机这个简单的模型来考虑。通用图灵机向人们展示这样一个过程:程序和其输入可以先保存到存储带上,图灵机就按程序一步一步运行直到给出结果,结果也保存在存储带上。更重要的是,隐约可以看到现代计算机主要构成,尤其是冯・诺依曼理论的主要构成。 [2]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

图灵机:计算机世界的理论基石 - 知乎

图灵机:计算机世界的理论基石 - 知乎首发于01改变世界:计算机发展史趣谈切换模式写文章登录/注册图灵机:计算机世界的理论基石逸之​西北工业大学 计算机应用技术硕士有个古老而经典的逻辑游戏:如果一个人说“我正在说谎”,那么他到底在不在说谎呢?如果他不在说谎,那么“我正在说谎”这句话就是真的;如果他在说谎,那么“我正在说谎”这句话就是假的。无论从哪个方向推演,得到的都是自相矛盾的结论,我们无从判定他在不在说谎。这就是公元前4世纪,由哲学家欧布里德(Eubulides)提出的著名的说谎者悖论。与之类似的,还有伯特兰·罗素(Bertrand Russell)在1901年提出的罗素悖论,它的通俗化版本是流传更广的理发师悖论:如果一位理发师只给不为自己理发的人理发,那他给不给自己理发呢?罗素悖论直接动摇了整个数学大厦的根基——集合论。为使命题合理,当那位理发师圈定服务对象的范围时,必须把自己排除在外。这也就意味着,没有包罗万象的集合——至少它不能轻易包含自己。这些悖论都源自“罪恶”的自指——当一套理论开始描述自身,就难免要出现悖论。即使再不情愿,人们也不得不承认数学是不完美的,至少它没有自圆其说的能力。尽管如此,仍有数学家想在限定的范围内负隅顽抗,他们找到一个完备的系统[1],寻求能够判定命题真假的通用算法。这就是德国数学家大卫·希尔伯特(David Hilbert)和威廉·阿克曼(Wilhelm Ackermann)在1928年提出的判定问题(Entscheidungsproblem/decision problem)。只可惜没过几年,这种可能性也被否定了。1936年,两位年轻的数学家分别用不同的方法给出了判定问题的解答。一位是来自美国的阿隆佐·邱奇(Alonzo Church),他引入了一种叫λ演算的方法,并最终证明没有任何通用算法可以判定任意两个λ表达式是否相等;另一位就是来自英国的艾伦·图灵(Alan Turing),和枯燥的数学推理不同,他使用了一种更有趣、更形象的模型,邱奇给了它一个响亮的名字——图灵机(Turing machine)。图灵早年经历艾伦·麦席森·图灵(Alan Mathison Turing),1912-1954,英国数学家、计算机学家、逻辑学家、密码学家、哲学家、理论生物学家。(图片来自维基百科)1912年6月23日,图灵出生于英国帕丁顿一个没落的贵族家庭,由于父母常年在印度工作,他和年长4岁的哥哥一起被寄养在一对军人夫妇的家中。图灵的童年十分平凡,和普通男孩一样,经历过调皮捣蛋和孤僻寡言的的阶段,他天性聪敏却有着严重偏科的倾向,许多教过他的老师对他的评价并不高。10岁那年,图灵接触到一本改变了他一生的童书——《儿童必读的自然奇迹》,这本科普读物打开了一扇新世界的大门,图灵发现门的那边堆满了一种对他来说最有吸引力的知识——科学。他开始疯狂地寻找和自学有关科学的一切知识,并用日用品做一些简单的化学实验。他很快意识到手头的科普读物过于浅显,妨碍了他了解事物背后更深层的原理。他甚至写信给父母讨要真正的科学书籍,而不是儿童百科。他写到:“《儿童必读的自然奇迹》中说,二氧化碳在血液里变成苏打,又在肺里变回二氧化碳。如果可以,请把苏打的化学名称,最好是化学式寄给我,好让我看看这个过程到底是怎么进行的。”13岁时,他已经对酒精等有机物的分子式和结构式了如指掌。1926年,聪明好学而又对科学知识近乎偏执的图灵考入了舍尔伯尼中学。开学当天正赶上英国大罢工,公共交通瘫痪,图灵竟用两天时间靠自行车征服了到学校的60英里(近100公里)路程。这不是一次冲动之举,而是精心策划之下的行动,当地报纸还专门刊载了这一令人吃惊的事迹。图灵很有才,也很有执行力,却在与人沟通上遇到了大麻烦。知子莫若母,图灵的母亲在为他寻找合适的中学时就一度担心他没法适应公学[2]生活,成长为高智商、低情商的怪人。在讲究教条与制度而不重视理性和科学的舍尔伯尼,图灵显得格格不入,被多数同学孤立和欺负,连老师也经常拿他的小习惯开涮,这对一个心智尚未成熟的男孩来说非常可怕。他们的校长倒看得十分透彻,曾警告图灵的父母:“我希望他不要两头都落空。如果他要留在公学,就必须以好好接受我们的教育为目标;如果他只是想做科学家,那么呆在公学就是浪费时间。”舍尔伯尼是当时英国社会的一个缩影,中学的经历也预示着图灵不被理解的一生。1931~1934年,成年后的图灵在剑桥大学国王学院攻读数学专业。尽管这里的制度依旧古板,像个放大版的舍尔伯尼,图灵依旧孤僻,但接触到了世界顶级的数学家和一流的学术专著,他可以更专注于自己喜欢的领域,并包揽了许多数学方面的奖项。毕业后,图灵以优异的成绩成为国王学院研究员。他在希尔伯特的问题上花费了整整一年的时间,最终在1936年的《伦敦数学协会会刊》上发表了那篇改变世界的论文——《论可计算数及其在判定问题中的应用》,提出了使其成为“计算机科学之父”的图灵机。图灵机工作原理图灵机是图灵受打字机的启发而假想出来的一种抽象机器,其处理对象是一条无限长的一维纸带。纸带被划分为一个个大小相等的小方格,每个小方格可以存放一个符号(可以是数字、字母或其他符号)。有个贴近纸带的读写头,可以对单个小方格进行读取、擦除和打印操作。为了让读写头能访问到纸带上的所有小方格,可以固定纸带,让读写头沿着纸带左右移动,每次移动一格,或者固定读写头,让纸带左右移动——后一种方式类似当时穿孔带以及后来磁带和磁盘的做法,但在纯理论讨论时为了方便说明,我们通常选用前一种方式。图灵机纸带示意图那么读写头该如何移动,移动之前或移动之后又该作何操作呢?这取决于机器当前的状态,以及读写头当前所指小方格中的内容,机器中有着一张应对各种情况的策略表。这就好比有一只小猫,你往它碗里放些食物,它会根据自己饿不饿以及食物的类别判断吃还是不吃,我们可以大体列出一张策略表:小猫进食策略表在这个例子中,小猫就好比图灵机,碗就是纸带上的小方格,食物就是小方格中的符号。当然这只是一个简化的类比,也有很多不挑食的小猫会吃白米饭,或者贪食的小猫即使吃饱了看见鱼还是会继续吃。在理想情况下,当我们提供一排足够多的碗,并在碗中放置更多种类的食物和玩具,猫在碗与碗间来回走动,就更像一台图灵机了。为了更精确地说明,我们构造一台简单的图灵机,实现对纸带上所有3位二进制数的+1操作(超过3位的进位将被丢弃),相邻两个二进制数之间通过一个空的小方格隔开,形如下图所示,读写头从最右侧二进制数的最低位开始扫描,遇到连续2个空方格时认为已处理完所有数,机器停机。图灵机示例纸带策略表如下表所示,其中E表示擦除、P表示打印、L表示左移。图灵机示例策略表该图灵机有3种工作状态:S_{1} 是+1状态,也是机器的初始状态。如果读写头遇到的是0,则直接将0改为1即完成了+1任务,左移一格后进入状态 S_{2} ;如果遇到的是1,则将1改为0,由于需要进位,即对下一位+1,左移一格后仍留在状态 S_{1} ;如果遇到的是一个空方格,即使当前需要进位,也不做处理(将进位丢弃),左移一格后进入状态 S_{3} 。S_{2} 是左移状态,此时已实现当前二进制数的+1,需要将读写头移到下一个数的最低位。如果遇到0或1,说明读写头还在当前二进制数上,继续左移;如果遇到空方格,后面等着它的可能是下一个二进制数,也可能是永无止境的空方格,左移一格之后进入状态 S_{3} 。S_{3} 是判断状态,根据情况判断是否还有二进制数要处理。如果读写头遇到的是0或1,说明当前位置是一个新的二进数的最低位,直接交给 S_{1} 处理;如果遇到的仍是空方格,说明后续不再有数据,停机。根据以上策略,该图灵机处理纸带的过程为:如法炮制,我们可以设计出具有各种功能的图灵机,而策略表的制定则类似于编程。图灵想到,如果把策略表中的信息以统一的格式写成符号串(比如上表可以表达成S1/0/EP1L/S2 S1/1/EP0L/S1 S1//L/S3 ……),然后放在纸带的头部,再设计一台能在运行伊始时从纸带上读取这些策略的图灵机,那么针对不同的任务,就不需要设计不同的图灵机,而只需改变纸带上的策略即可。这种能靠纸带定制策略的图灵机,称为通用图灵机UTM(universal Turing machine)。不单是策略表,其实用于描述图灵机的所有信息(包括所使用的符号、初始状态等)都可以表达成纸带上的符号串。这就意味着,一台图灵机可以成为另一台图灵机的输入。判定问题的解答在试想一下,在有些情况下,一台图灵机如果长时间没有输出结果,那么它很可能陷入了死循环或永无止境的计算中。这是我们不愿看到的,因为机器可能运行1分钟后停机,也可能运行10天半个月甚至几十年才停机,亦或者永远也不会停机,这个很难靠人为判断。假设我们构建出一台图灵机H,它接收其他图灵机及其输入信息作为输入,并能够判定其是否会停机,就解决了上面的烦恼——构建这样的机器难度虽大,但理论上是可行的。这就是著名的停机问题(halting problem)。H所处理的,本质上正是一种判定问题:某台图灵机在某输入上是否会停机。只要找到一台H判定不了的机器,希尔伯特的美梦就破灭了。令H表现如下图所示,如果其判定对象会停机则输出1,反之输出0。图灵机H运行流程我们再构建一台图灵机G,其运行流程如下图所示。如果H输出1,说明G会停机,但事实上它将陷入循环;如果H输出0,说明G不会停机,但事实上它将停机。图灵机G运行流程悖论已经出现,H无法对G的停机问题进行判定。又一次归因于尴尬的自指:当一个系统强大到一定程度时,终究会遇到无法处理自己的窘境。因此,不存在一台图灵机,可以判定任意图灵机是否会停机。图灵机不是万能的,判定问题的答案也是否定的。而这个看似有点耍赖的证明方式,有着图灵长达36页的数学论证支撑。深远的意义图灵的工作不仅回答了希尔伯特的问题,更参透了数学和计算机的本质关系——计算机是为解决数学问题而诞生的,却又基于数学,因而数学自身的极限也便框定了计算机的能力范围。图灵虽然证明了没有任何机器可以解决所有数学问题,却也证明了机器可以完成所有人类能完成的计算工作,从如今的应用看来,后一个结论的意义重大得多。从图灵开始,计算机有了真正坚实的理论基础,更多人开始投身计算机的理论研究,而不仅是尝试构建一台机器。从如今的应用来看,图灵机之于计算机领域的价值远高于数学领域,毕竟判定问题还有λ演算和许多其他解答,但计算机的原始公式,只有图灵机这一个。如今的所有通用计算机都是图灵机的一种实现,两者的能力是等价的。当一个计算系统可以模拟任意图灵机(或者说通用图灵机)时,我们称其是图灵完备的(Turing complete);当一个图灵完备的系统可以被图灵机模拟时,我们称其是图灵等效的(Turing equivalent)。图灵完备和图灵等效成为衡量计算机和编程语言能力的基础指标,如今几乎所有的编程语言也都是图灵完备的,这意味着它们可以相互取代,一款语言能写出的程序用另一款也照样可以实现。后话论文正式发表之前,图灵只身前往美国普林斯顿,在那里找到了领先一步发表成果的邱奇,并师从他继续深造。1937年,图灵嗅到了纳粹德国引战的可能,开始把业余时间花在密码学的研究上。1938年,图灵在取得博士学位后返回了正在紧张备战的英国,不多久,他便参与到政府的密码破译[3]项目中,和全国各地顶尖的数学家们一起,在白金汉郡的布莱切利公馆(Bletchley Park)中深居简出,左右世界战争的格局。二战时期,各国已经使用无线电进行作战指挥,由于信号可以轻易被敌国接收,需要对无线电内容进行加密,比如将“ABCD”改成“BCDE”发出去,当然军用的加密方式不会如此简单。当时的德国使用一种叫谜机(Enigma machine)的加密机器,按下某个字母的按键,其加密后对应的字母小灯就会亮起。内部的转轮和接插线板将这种对应关系随意打乱,每按一次按键,转轮就会转动一次,组合成新的对应关系,比如第一次按下A,D灯亮起,再按一次A,亮起的可能是Z灯,毫无规律可循。更棘手的是,德军几乎每天都会变更其中的接线。3转轮谜机(图片来自维基百科)解密的方式是穷举,即遍历所有可能的对应关系,直到找出有意义的关键词,而这恰恰是机器最擅长的事。英国的同盟国波兰在战前就成功研制了破解谜机的炸弹机(bomba),可惜德国在1938年年底将谜机上的转轮从3个增加到了5个,解密的复杂度呈爆炸式增长,针对3转轮谜机设计的炸弹机还未在二战发挥价值就已经宣告报废。解决这个难题的关键人物正是图灵,新建的炸弹机(bombe)成功破解了5转轮谜机。其难度之大,大到英国首次利用破解的信息破坏德军行动时,德国的密码专家首先排除了谜机被破解的可能性。图灵炸弹机(图片来自维基百科)随后,对密码学有着深刻认识的图灵还探索出一种高效的解密算法,人称图灵方法(Turingery),该算法成为布莱切利破解德国密码的核心理论。布莱切利的工作是图灵在短暂的一生中,为人类所做的第二项伟大贡献。他的成果使战争至少提前2年结束,挽救了至少1400万人的生命。前英国首相温斯顿·丘吉尔曾表示,二战的胜利最该感谢的人就是图灵。战后,图灵进入国家物理研究所,并设计了属于最早一批电子计算机之一自动计算机ACE(Automatic Computing Engine),首次实现了他心目中的通用图灵机。1950年3月10日,ACE的简化版Pilot ACE开始运行,完整的ACE直到图灵去世之后才建成。Pilot ACE(图片来自维基百科)1948年,图灵成为曼彻斯特大学数学系讲师,并于次年担任学校计算机实验室的副主任,负责计算机软件的研究。他还成为计算机企业的顾问,帮助其研发商用电子计算机。1951年,英国皇家学会将图灵吸纳为会员。这些年间,图灵的主要智慧仍留给了数学和计算机的理论研究。1950年,第二篇影响世界的论文《计算机与智能》问世,在那个电子计算机才刚刚起步的年代,高瞻远瞩的图灵用一个问题就叩开了人工智能的大门:“机器会思考吗?”文中提出了著名的图灵测试(Turing test):让一台机器躲在挡板后回答测试人员的提问,看测试人员能否判断自己面对的是机器还是真人。能否通过图灵测试,是衡量机器智能程度的重要指标。这位“人工智能之父”过于乐观地预言:到2000年,计算机应该能“骗过”30%的测试人员。图灵机、炸弹机、人工智能……图灵献给世界太多伟大的作品,却没能在生前得到应有的名誉乃至起码的认可。人们始终觉得他是个难以亲近的怪人,对其二战时期涉密的功绩更是一无所知。1952年,他因同性恋的罪名被起诉,在坐牢和化学阉割之间,他无奈选择了后者,旁人的偏见和药物的副作用使他承受着精神和肉体的双重痛苦。1954年6月7日晚上,他躺在家里因氰化物中毒离开了人世,床头放着一个咬过的苹果,还有16天就是他42岁的生日。尸检的结果认定图灵是通过毒苹果自杀的,却没有对这个苹果做氢化物检测,他的母亲和哥哥却坚持认为这是一场化学实验导致的意外,而真相只有图灵自知。2009年,超过3万人在线请愿为图灵平反,英国首相戈登·布朗代表政府公开道歉。2013年,英国女王伊丽莎白二世正式颁发皇家赦免,图灵终于得到了迟来的公道。1966年,美国计算机协会ACM(Association for Computing Machinery)设立计算机领域的最高奖项,命名为图灵奖。图灵奖素有“计算机界的诺贝尔奖”之称,图灵的名字当之无愧。2019年,英国的中央银行——英格兰银行宣布,图灵的肖像将出现在新版的50英镑纸币上,以此纪念这位改变了国家乃至整个世界命运的伟人。参考文献本特利 P J. 计算机:一部历史[M]. 顾纹天, 译. 北京: 电子工业出版社, 2015.张桢胜. 图灵的“数字宇宙”:逻辑原理与哲学意蕴[D]. 昆明: 云南师范大学, 2018.方弦. 计算的极限(零):逻辑与图灵机[EB/OL].Wikipedia. Entscheidungsproblem[EB/OL].Wikipedia. Alan Turing[EB/OL].霍奇斯 A. 艾伦·图灵传:如谜的解谜者[M]. 孙天齐, 译. 长沙: 湖南科学技术出版社, 2012.Hodges A. Alan Turing: The Enigma[M]. Princeton: Princeton University Press, 2014.Turing A M. On Computable Numbers, with an Application to the Entscheidungsproblem[J]. Proceedings of the London Mathematical Society, 1936, 43(43):13-115.Wikipedia. Halting problem[EB/OL].Wikipedia. Turing completeness[EB/OL].参考^逻辑学中的一阶谓词演算是完备的,感兴趣的读者可以深入了解。^公学是英国的公共学校,是面向富裕家庭的精英学校,只招收中产和贵族阶级的孩子。^本书所提及的二战期间的密码(cipher)与现今我们登陆账号所用的密码(password)不是同一概念,前者是对明文按照一定规则转换后生成的密文,后者则是通行口令,切勿混淆。编辑于 2020-04-23 12:04计算机科学图灵机图灵 (Alan Turing)​赞同 224​​13 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录01改变世界:计算机发展史趣谈同名书籍各大电商平

什么是图灵机 - 知乎

什么是图灵机 - 知乎首发于无限切换模式写文章登录/注册什么是图灵机鲶鱼网络安全“钻”家 |公众号 透明魔方内容提要什么是图灵机?一个简单的例子一个简单的程序机器状态有限状态机什么是图灵机?图灵机是一个虚拟的机器,由数学家阿兰·图灵1936年提出来的,尽管这个机器很简单,但它可以模拟计算机的任何算法,无论这个算法有多复杂。上面是一个图灵机的简单示意图。假设有一个无穷的纸带,纸带就像一个存储器一样。纸带上面的每个格子是空白的,但是可以读写数据,在这个例子里,机器只能写0,1,或者什么也不写。这个机器就是包含3个信号的图灵机。这个机器有一个探头,这个头可以移动到每一个空格上,用这个头,机器可以有3个基本操作。1、 读空格的数据2、 编辑数据,可以是写一个新的数据,可以是擦除数据3、 移动纸带向左或者向右,这样机器可以读或者编辑旁边的格子一个简单的例子 首先,黑色加粗部分代表探头所指的部分,我们写一个1:然后,我们把纸带向左移动一格:写1到新的格子里面然后把带子向左移动一格,并写一个0一个简单的程序现在纸带上面被写入了110,现在我们尝试着把1转换成0,0转换成1。这叫位反转。因为1和0是字节中的比特,可以通过如下指令让图灵机完成操作。利用机器的读的能力来自己决定它下一个操作,这个指令可以写一个简单程序。指令如下信息读取 写指令 移动指令空 不写 不动‘0 1 纸带移动到右边1 0 纸带移动到右边机器首先会读取头下面的数据,写一个新数据,然后根据指令移动纸带向左或者向右,然后继续重复重复这个过程。让我们看看这个程序如何操作这个纸带的,首先探头放在0的位置:然后我们把数据0改为1,并把纸带往右边移动一格现在探头读到的是1,所以我们写0并把纸带向右移动一格同样的,读到数据1,探头把它改写为0。最后读到一个空格,此时这个探头不写任何数据,纸带也不动,但是探头会一直不停的重复读这个格子里的数据信息。事实上,这个程序是不完整的。这个机器会一直重复执行命令,那应该如何停止呢?那么我们需要加一个机器状态指令。机器状态状态 数据 写 移动 下一个状态0 空白 不写 不动 停止状态 0 1 纸带向右 状态0 1 0 纸带向右 状态0 我们把之前的指令分配给机器的状态,这样,当机器在某个具体的状态的时候,它就会执行相应的指令。每一个指令完成后,我们仍然让机器进入下一个状态。在这个例子中,机器会一直指向状态0,然后重复读—写—移动的操作,当读到一个空白信息时,机器会直接进入停止状态,程序结束运行。 有限状态机尽管看起来有点傻,但是我们现在再给里面加一个状态,把现在的001变回成110。下面的程序斜体字部分是更改过的语言。现在这个图灵机有2个状态,3个信号。是一个有限状态机。状态 数据 写 移动 下一个状态0 空白 写空白 纸带向左 状态1 0 1 纸带向右 状态0 1 0 纸带向右 状态0 1 空白 写空白 纸带向右 停止状态 0 1 纸带向左 状态1 1 0 纸带向左 状态1上面这个程序中,当读到一个空白信息的时候,我们让纸带向左而不是停止,这样我们就可以继续做位反转操作。下面,我们把字节又反转回来,纸带向左。最后,读到一个空白,纸带向右,程序停止。只要给程序添加足够多的状态,我们可以让图灵机有更多的功能,理论上可以实现现代计算机能做的一切复杂算法。本文由鲶鱼编译自Computer laboratory of university of CambridgeWhat is a Turing machine?如需转载,请联系鲶鱼我的微信公众号:透明魔方网络安全生活篇提升安全意识,防各种诈骗实时更新。网络安全专业篇提升安全专业能力,合规,安服,知识点包罗万象。编辑于 2024-02-20 06:36・IP 属地上海图灵机​赞同 423​​24 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录无限追求无限,突破限超越

通俗算法教程03 - 人人都能懂的图灵机原理 - 知乎

通俗算法教程03 - 人人都能懂的图灵机原理 - 知乎首发于通俗算法教程切换模式写文章登录/注册通俗算法教程03 - 人人都能懂的图灵机原理精致码农上一讲我们知道了图灵机在历史上出现的原因,它是一个计算模型,用来判定一个问题到底可不可解,那么它是如何判定的呢?在本篇文章开始之前,我们先来看一段视频:图灵机的构成为了方便讲述图灵机的构成,我从视频中截取了一张图:视频中的图灵机是用现代工艺做的,可以看到图灵机并不复杂,它做的事情很简单。当机器处于“Read”状态的时候,会从纸带上读内容,完了经过某种计算再向左或向右移动,然后在当前位置写上符号 0 或 1(如果已经有符号会先擦除),下面有个状态(State)会变化,另外还显示了当前的位置(Position)和步数(Step)。从上面图中我们可以看到,图灵机就是一个机器(称为控制器)和一根纸带组成的。控制器,包含用来写内容的“笔”、“擦子”。它可以向纸带读、写、改数据,所读内容我们可以理解为程序语句;它可以使纸带左右移动;它还有一个可以变换的状态。纸带,左右两边无限延长,纸带上可以写内容(也就是存储),内容可以是数字和字母。我们可以把纸带理解为存储器。我们再来看看图灵机是怎么工作的。图灵机运行原理首先图灵机工作前,需要先在纸带上写好一些符号,例如“1 1 0”:加粗的方格表示当前控制器笔头指向的位置。现在我们编写一段简单的程序,这段程序用表格表示是这样的:这个程序很容易理解,比如表格的第三行(即最后一行),意思就是当程序读取到 1 时,在当前位置写入 0,再向右移动一格。假设我们已经把这段程序输入到机器中了,然后机器开始运作。首先机器读取纸带当前的符号,如上面的纸带图,读取到的是“0”,匹配程序表的第二行,按照程序的指示,应该在当前位置写入“1”再向右移一格,过程如下两个纸带图所示:机器继续读取当前位置的符号,读取到的是“1”,匹配程序表的第三行,然后按照程序的指示在当前位置写入“0”,再向右移一格,这一步图示如下:依此继续执行,最后一步图示如下:最后读取到空白时,按照程序的指示,既不写也不移动。事实上这个程序并不完整,还存在问题,例如怎样才能让机器停止,又如何让机器不停地重复读取、写入和移动的过程呢?我们还要在程序中加入状态,控制器必须要有记录状态的功能。为什么一定要加入状态呢?因为如果没有状态的话,在纸带有限的符号下,程序表只能是有限的行数。比如示例中的纸带有三种符号:0、1 和空白,那么程序表最多也就只能是三行,机器最多只能执行三种可能的动作。加入状态后,假如状态有 0 或 1 两种,那么程序表的行数就可以增加到 2x3=6 行,这称为 3 符号 2 状态图灵机。例如下面是一个含有两种状态的程序表:机器每一步需要结合当前的状态再来执行相应的操作,所以在机器运行前,需要有个初始状态。机器执行完一步后,按照指示修改状态,以备下一步使用。假如机器的初始状态为 0,继续使用上面最后一步的纸带,当前指向的是空白,那么匹配的是表格的第一行,按照程序指示,在当前位置写入空白,并向左移一格,图示如下:依次类推,后续步骤的图示如下:一步步这样匹配演示下来,上图对应的最后一步是向左移一格后指向了空白,状态变为了 1(匹配的是第五行)。此时,继续执行,当前位置是空白,当前状态是 1,那么匹配的是表格的第四行,向右移一格,状态变为停止,如下图示:这样图灵机就完成了一次计算。纸带由“001”通过给定的程序计算变成了“110”,如果把它们看成二进制的话,其实是做了一次 1+5=6 的运算。随着控制器状态增多,那么我们就可以编写越复杂的程序,也就能和现代计算机一样执行复杂的算法。好了,知道了图灵机的运行原理,我们再回到开篇提到的问题,既然说图灵机是一种计算模型,那么它怎么来判定一个问题有没有解呢?图灵机停机如果图灵机成功完成了一次计算,我们就说图灵机成功停机了。停机就意味着计算结束并得出结果,停机后纸带上的符号就是计算结果。当我们遇到一个问题,比如说输入 A,问:能否由 A 计算出 B?图灵机能帮我们做一个判定,如果我们能在 A 与 B 之间找到或设计出一个图灵机程序,使输入 A 停机得到的结果是 B,就说明这个问题可解,否则就说明这个问题不可解。图灵机就是这样解决“可计算性的判定”问题的,这是图灵机的一个重大意义。另外,我们可以看到图灵机给出了一个可实现的通用计算模型,还引入了存储器、程序、控制器等概念的原型,为现代计算机奠定了基础,这也是图灵机为什么受到人们重视的原因。参考:https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/one.html发布于 2020-09-10 10:52算法数据结构图灵机​赞同 136​​19 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录通俗算法教程通俗易懂算

在计算机领域,图灵机为什么这么重要? - 知乎

在计算机领域,图灵机为什么这么重要? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册计算机计算机技术计算机科学计算机专业计算机前沿在计算机领域,图灵机为什么这么重要?关注者47被浏览41,935关注问题​写回答​邀请回答​好问题 2​添加评论​分享​4 个回答默认排序开闸放水​​美国西北大学 理学硕士​ 关注答主准备以此回答为基础写一个文章系列,这个回答不再维护(可能有笔误什么的)。推荐移步:以下原文。不请自来。本文主要梳理逻辑,对技术细节有兴趣的话推荐阅读教科书。[1]简单来说,图灵机允许我们用数学的语言描述计算机和算法,并为计算机的建造奠定了理论基础。一、公理,真理什么叫“用数学的语言描述”呢?这样有什么意义?数学家们几百年来的抓耳挠腮做的不过是为了两件事:选出简洁地描述一个(有用/有趣的)数学系统的公理;猜测这个系统里的规律,然后用公理和逻辑推出它们。这些就是定理。最典型例子就是欧式几何。包括全等三角形在内的所有初中几何都是基于这五条公理:1.过相异两点,能作且只能作一直线;2.线段可以任意地延长;3.以任一点为圆心、任意长为半径,可作一圆;4.直角都相等;5.两直线被第三条直线所截,如果同侧两内角和小于两个直角,则两直线则会在该侧相交。在任何满足这些公理的体系下,所有欧氏几何的定理都是百分之百正确的 -- 与其他社会科学、自然科学都不同,数学追求的就是在限定条件下的绝对正确,其真实性来源不是归纳和拟合,而是逻辑。如果现实里的平面满足欧氏的公理,那么欧氏的定理便是我们世界中如假包换的真理。如果替换第五条公理,那么上帝的心态就会发生一些改变。“三角形内角和是180度”这条“真理”在非欧几何中就不一定成立。这并不代表非欧几何是不准确的 -- 相反,它在描述特殊几何结构时很重要。图灵机和图灵论题之于计算理论(theory of computation),正如欧氏公理之于平面几何。如果图灵机这一定义能够涵盖所有的“计算”和“算法”,那么计算理论中的定理同样是我们世界中如假包换的真理。比如有的问题无论什么架构的计算机都不可能解出来;有的问题无论人类还是超算都要指数级的时间才能得到答案。二、算法但什么是算法?为什么它很重要?想象你有一个只会基本运算的机器或者打工仔。(冷知识:computer一词在计算机发明前,通常指专门算数的雇员[2])如果你想用它解决一类数学问题,那你的目标一定是如下:找到一套解决这类问题的流程,使得它们在面对任何问题实例时,只要照着流程一算,就必定得出正确答案。举个栗子:质数判定:找到一套流程,使得我们在给定任何一个自然数 m 时,能通过流程判断出 m 是不是质数。(一个朴素的方法就是在 2 到 m/2 之间暴力搜索 m 的因数)在栗子里,质数判定就是“一类问题“。每一个具体的 m 都是问题的一个实例(instance)。为什么要强调两者的区别呢?原因很简单:若一个程序只要判定一个固定的数字如7是不是质数,那程序直接输出“是”就可以了,不需要运算。但这个程序显然不能判定任意自然数是否为质数。面对确定的问题形式,对任何问题实例都适用的流程,才是有价值的。这样的流程就叫算法。探究一类数学问题存不存在算法是很有价值的。希尔伯特著名的23个问题中就有一个“能否通过有限步骤来判定不定方程是否存在整数解?“[3] ,就是在问丢番图方程这类问题存不存在算法。(吐槽一下,这个问题范围也太宽泛了。此算法后来被证明不存在)这位大佬还曾提出一个数理逻辑方面的基础问题,即Entscheidungsproblem(德语的decision problem)。图灵机的提出很大程度上就是为了证伪这一问题。[4]希尔伯特的判定问题:是否存在一个算法,我们给它一个逻辑系统和一个命题,它就一定能在有限步内准确判断命题是否可在系统中被证明?另一方面,自计算机诞生以来,“存不存在快速算法”就是理论界的核心课题之一。例如本科学到的Dijkstra最短路径算法就显著优于朴素的暴力搜索。但想要证明这一点,我们同样需要一个图灵机这样的通用的计算模型。现在问题来了:什么样的流程才能是“合理”的算法呢?我们想要的应该是一个机器可以执行,并且(意志坚定,训练有素的)打工仔也能执行的流程。为此,流程需要满足:每一步使用有限个符号;(反例:实数运算,因为有无限位)对于任何问题实例,都一定在有限步内完成运算;每一步都不需要借助神迹或直觉。(反例:“找到最大化方程f(x)的整数x”)但以上定义过于模糊,一定会被数学家瞧不起的,因为它无法用于证明。这里,图灵机这个定义就发挥作用了:邱奇-图灵论题(Church-Turing Thesis): 一类问题有“合理”算法,当且仅当存在图灵机能计算此问题。换句话说,每一个算法都能用一个图灵机表示,反之亦然。这是一个被广泛认可的猜想。[5]事实上,到目前为止,所有不太离谱的计算模型都与图灵机有着相同的计算能力。而图灵机则是可以用数学符号严谨定义的。Church是Turing的导师,二人分别用不同的方式描述了“可计算的函数”。Church的lambda calculus更早,而Turing的图灵机的更加直观。二者是等价的。三、计算模型和图灵机本章对图灵机做简单文字描述,大家也可以用视频网站上的动态演示来辅助理解。图灵机这一模型有许多变种,我们介绍简单的一个版本:机器在单向无限的读写带上读取输入,然后经过运算,可能会接受输入,拒绝输入,或进入死循环。方便起见我们只考虑判断问题,即答案是true或false的问题,如质数判定。此时一个问题相当于一个字符串的集合 L (又称一个语言),而判断true或false相当于判断 s 是否在 L 中。图灵机分为三部分:控制器,读写头,和一个无限长但后面全是空字符“_”的读写带。一个图灵机的运算方式由一个四元组 (Q,\Sigma,\Gamma,\delta) 完全决定,其中:Q 是控制器的状态集合,且一定包含初始状态 q_0 ,接受状态 q_{accept} ,和拒绝状态 q_{reject} 。控制器一开始处于q_0 状态;如果进入q_{accept} 或 q_{reject}则不再进行运算,并视为输出“接受”或“拒绝”。\Sigma 是输入字符的集合,这些字符是用于描述问题实例的。\Gamma 是所有可读写的字符的集合,包括空字符“_”。 \Gamma 是 \Sigma 的超集,可以理解为机器为了运算方便,允许读写一些问题描述中没有的特殊字符。\delta:Q\times\Gamma \rightarrow Q\times\Gamma\times\{L,R,S\} 是状态转移方程。别看它有两个输入,三个输出,其实很简单:每一步,控制器会查看自己的状态( Q ),并读取读写头位置的字符( \Gamma ),作为\delta的输入;根据 \delta 对应的输出,控制器会转移到新的状态( Q ),在读写头位置写上新的字符( \Gamma ),并将读写头向左右挪动一格或原地不动( \{L,R,S\} )。图灵机图示。来源:Introduction to the Theory of Computation。读写头在第五格,状态是q7,字符集是0,1,和空字符。图灵机如何实现算法计算理论入门课上曾有这样一道题:(如果读者觉得例子不好,那全怪教授!)设计一个图灵机,使其能判断输入的01字符串是否是回文。(这里,要判断的语言就是 L=\{\overline{s_1\ldots s_n}:\overline{s_1\ldots s_n}=\overline{s_n\ldots s_1},s_i\in\{0,1\}\} )这道题的答案如下:创建一个图灵机,它的可读写字符 \Gamma = \{0,1,\_,\dot{0},\dot{1}\},即除了0和1,还有打了点的0和1 。每一次,我们将读写头移动到最左边的没打点的数字上,将这个数字打上点,然后移动到最右边的没打点且不是空白符的数字上,看看是不是同一个数字。如果不同就直接拒绝;如果相同,就打上点并重新回到最左边,直到最中间相邻的两个数字都已经打上点才接受。这个图灵机实现的算法很简单,就是判断是不是对于所有 n ,第 n 位都和倒数第 n 位相同。细节比较麻烦,大概理解即可。Q:机器移动到右边后,如何记得它在左边看到的是是哪个数字?A:通过自身的状态来记录。一个状态代表刚刚看到了0,另一个代表刚刚看到了1。Q:机器如何保证自己在最右边的没打点的数字处?A:也是通过状态。看到第一个打点的数字时,机器进入一个特殊状态。在特殊状态下向左移动一格,再立刻退出并进入下一状态,即可保证在下一状态开始时在最右边的没打点数字处了。人算等于图灵机算图灵在他的论文里用直觉描述了为什么图灵机可以模拟所有人类能执行的“算法”。大概论点是这样:任何时刻,一个打工仔能一眼扫到的范围是有限的,她能理解的字符数量也是有限的。因此图灵机的有限字符表是足够的。打工仔的下一步行为完全由她心里的内容和她刚看到的内容决定,如果她训练有素的话。她心里的内容同样只有有限种,因此控制器的有限个状态是足够的。人类通常用二维的纸计算,而图灵机的带子是一维的。这个问题不大,因为一维的带子也可以模拟二维的纸上的内容。每次打工仔需要在已有的运算纸上做修改时,也不妨假设她在修改自己视线所看到的位置,所以读写头可以共用读写功能。若需移动位置,她也不会一次将自己的视线移动太多,因此读写头每次左右移动一位就够了。(即,人类寻找内容也要一点一点找)NASA的“computer”们。题外话,图灵还用了一个复杂到没必要的理论来说明「人只能理解有限个字符」这件事:正常人:人只能记住有限个字符。​Turing (1936):图灵机只允许有限个字符,原因如下:假设所有字符都可表示为[0,1]×[0,1]中的被墨水覆盖的点集。再假设它们都可测,且定义两个字符之间的“距离”为他们之间的对称差的测度,那么所有可能的字符组成的拓扑是conditionally compact的。因此,无限个字符会导致其中两个字符的“距离”可以任意小,人眼无法分辨,所以图灵机允许有限个字符就够了。通用图灵机上文中,每一个图灵机仅仅代表一个算法,而不是一个可编程的通用计算机,即像个人电脑一样,可以执行任意算法的计算机。但实际上,一个足够复杂的图灵机是能够模拟通用计算机的:Turing (1936): 存在一个通用图灵机 U ,在读取任意图灵机 T 的描述和任意字符串 s 后,能模拟 T 在输入 s 后的计算,并输出 T 在输入 s 后的输出。即, \forall T\forall s( U(x_T,s) = T(s)) ,其中 x_T 是描述 T 的字符串。这里的“描述”方式取决于 U 接受什么样的输入,比如它可以是用c语言写出的,模拟图灵机的代码。通用图灵机也可以有不同的形式,比如存在另一个 U' ,只接受用Python写出的图灵机代码。现代计算机其实都是通用图灵机的实现(如果内存任意大的话)。特别地,一个通用图灵机可以模拟另一个通用图灵机,因此可以得出以下定理:定理:众所周知Python是用c语言写的。但如果你愿意,也可以用Python重新写一个c语言编译器。它说不定会比Python还慢,我愿称之为c--。真的有人写了这么个东西。五、算法相关的定理:到现在为止,我们假设了“图灵机即算法”的Church-Turing Thesis,并给了图灵机的定义,于是我们现在有着定义世界上任何算法的通用形式 -- 只要确定那个四元组就可以。这能帮助我们推导出什么定理呢?以下列举几条计算机理论的重点结论和定义。浅尝辄止,有机会的话会细写。停机问题不可判断:Turing (1936): 不存在一个这样的算法:输入一个图灵机的描述/代码时,按照算法我们可以判断此图灵机是否在任何输入下都不会进入死循环。此问题证明方法类似罗素悖论,也用到了通用图灵机。这是一个有实际意义的、无论多强大的计算机都判断不出来的问题。对程序员来说,可以理解为以下定理:定理:不用想了,没有编译器可以保证你的程序有没有bug。连保证它不进死循环都做不到。知乎上其他文章做过停机问题的证明:如何通俗地解释停机问题(Halting Problem)?。时间复杂度:图灵机允许我们以统一的方式量化算法的运行时间。以线性时间算法为例:若一个算法复杂度是 O(n) ,说明存在一个图灵机实现此算法,并且图灵机在停机前运算步数不超过输入长度的常数倍。O 在这里代表的就是括号里的表达式的常数倍以内, n 按惯例一般代表输入长度。不难发现,前文中检测回文的算法是一个 O(n^2) 算法,因为图灵机需要跑完整个长度为 n 的输入,再跑完中间的 n-2 位,以此类推。(当然还有一些额外步骤,但因为“常数倍”的要求比较松,可以忽略不计)值得注意的是质数判定问题 -- 这个问题的输入就是一个数字 m ;但它的输入长度并不是 m ,而是 m 的位数。若以二进制输入,其长度大概是 n\approx \log_2 m 。因此,暴力搜索 2 到 m/2 的算法起码要花费 \frac{m}{2}-2 \approx 2^{n-1} 这个级别的时间。按照问题难度排序,有永远算不出来的问题(如停机,丢番图方程),关于n指数时间才能算出来的问题(下文的NP完备很可能就是),关于n多项式时间就能算出来的问题(下文的P),还有压根不用算的问题( L 是全体字符串的话,闭着眼睛accept就行了)。运算所花时间与输入长度的关系。O(log n)一般需要在后记的random access machine上才能达成。P=NP猜想:用人话讲,P=NP的意思是,任何多项式时间内能验证的问题,都可以在多项式时间内算出答案。学界普遍认为P\neqNP,否则世界会在各种意义上崩坏:只要能快速看懂的数学证明就一定能被程序快速找到;只要能快速验证的密码也能被快速算出来。(当然,找证明和找密码就不是判断问题了,因此并不严格符合我们的定义 -- 目前不必在意这些细节。另外读者可能注意到,多项式时间并不一定代表快速,这只是惯例的理解,一种比较粗糙的分类)具体解释的话,P(polynomial-time)是所有存在多项式时间算法的判断问题的集合。(指关于 n 的多项式,下同)回文判定显然是一个,因为它存在 O(n^2) 算法。类似的例子还有很多,如“01交替的字符串“,“0的数量和1的数量相等的字符串“这些语言等。我们能想到的输入字符串本身的性质,大多都是P里的。质数判定其实也在P里。首个不随机的、多项式时间的质数判定是2002年的AKS算法[6],运行时间为O(n^{12})=O(\log_2^{12}m) 。这比起暴力算法是一个指数级的提升。NP(nondeterministic polynomial-time)则指的是所有可以在多项式时间内验证答案为true的判断问题的集合:(NP这个名字来源于另一个等价定义。以下如果看懵了很正常,挺绕的)一个NP问题 L 存在一个多项式时间的验证用的图灵机 V (代表"verifier"),它对于任何问题实例 s ,都满足 s\in L 当且仅当存在至少一个字符串 a 能帮助 V 验证 s\in L 。换句话说, \forall s(\exists a V(s,a) = accept \iff s\in L) 。举个例子 -- 3色问题:判断一个图(graph)是否能够用三种颜色染色,使得相邻的两个点颜色各不相同。若要解决此问题,我们并不知道显著好于「暴力枚举所有3染色」的算法;然而,存在一个图灵机 V ,使得一旦答案是true,那么就有一个直观的 a 帮助 V 验证此图的确可以染三色: a 就是一个合法的3染色的描述,而 V 需要做的就是检查该染色在实例 s 上是否真的合法。显然,如果答案是false,那么不存在一个可以说服 V 的描述。一种合法的3染色。不难看出P \subseteq NP:直觉上,验证一个答案(如迷宫的一条路是否能走通)也确实比找到这个答案(如盯着迷宫然后找到通路)要简单的多。它的证明也十分简单:若能快速算出 s 的正确答案,那我们可以直接定义一个如下的、满足条件的 V:V 得到输入 s 和 a ;V 计算 s\in L 的真假性,若为true,则不管 a 是什么都accept;若为false,则不管 a 是什么都reject。NP完备和NP难问题:1982年的图灵奖颁给了Stephen Cook,以认可他对于NP完备问题存在的证明。此类问题是“NP类中最难的问题”,定义如下:NP完备问题属于NP,且如果有一个NP完备问题存在多项式时间算法 ,那么每一个NP问题都存在多项式算法。换句话说,如果任意一个NP完备问题属于P,那么就有NP = P,然后世界崩坏。SAT问题的true和false实例。“可满足”指有一个赋值使表达式取值为真。再具体一点说,Cook定义了“布尔可满足性问题”(boolean satisfiability,简称SAT),使得如果有一个算法能在多项式时间内解SAT,那么我们对于任意NP问题 L 的实例 s 我们都可以在多项式时间内用以下方式求解:在多项式时间内,用Cook的算法,从实例 s 和「问题 L 的验证图灵机 V 」生成一个相关的SAT实例 s' ; s' 的长度不超过关于 n 的多项式;在多项式时间内用SAT的算法解出 s'\in SAT 是否成立;s'\in SAT 的真假性就是 s\in L 的真假性。SAT的算法可以用来解任何NP问题 -- 换句话说,任何NP问题都可以归约(reduce)到SAT。此后又有一系列重要问题被证明为NP完备,包括对于 k\geq 3 时一个图是否存在k-染色(k-coloring)和k-独立集(k-indendent set),以及集合覆盖(set cover)问题等。NP完备问题之间的reduction。A指向B代表我们可以用问题B的算法来解问题A,因此B至少和A一样难。图片来源:Computational Complexity: A Modern Approach。Cook的定理非常反直觉:没有理由存在一类问题能用来解所有的NP问题,但大自然就是这么神奇。证明比较绕,但本质就是利用了NP的定义中 V 的存在,以及图灵机的性质。这再次说明了图灵机在计算理论里的重要性。NP难(NP-hard)问题的概念很简单,就是至少和NP完备一样难的,而且不一定是NP里面的问题。有代表性的是染色数是否等于 4这一问题:一个图是否可以被合法染成4种颜色,同时又不能被合法染成3种颜色。前者是好验证的,但后者我们目前没有快速验证方法,因此该问题不一定属于NP。P,NP,NP-hard,和NP-complete在P=NP是否成立情况下的关系。后记:更像计算机的图灵机变式文中介绍的是一个基础图灵机模型。有许多定义起来更复杂的图灵机,它们更像真正的计算机,并且它们都可以用基础图灵机模拟。多带图灵机(multitape Turing machine):这种图灵机有分开的输入带和输出带;同时,我们还有几个“内存带”,能允许机器更方便地存储计算的中间产物。如果总共有 k 个带子,那图灵机的状态转移方程会变得复杂很多,即 \delta:Q\times\Gamma^k \rightarrow Q\times \Gamma^k\times \{L,R,S\}^k 。同时,这种图灵机的输出不仅是accept和reject,它可以在输出带上进行任何符号形式的输出。基础图灵机可以模拟多带图灵机的运算,方式是使用更多的符号并将所有带子的内容放在同一条带子上。若多带图灵机运行 T 步,基础图灵机步数至多是 O(T^2) 步。单带图灵机对多带图灵机的模拟。来源:Introduction to the Theory of Computing随机存取图灵机(random access Turing machine):这种图灵机除了输入、输出、内存带之外,还有一些寄存器。它不再有状态,取而代之的是一个长度有限的“程序“,程序的每一行都像汇编语言一样,可以从内存带指定位置瞬间读取数值到寄存器里,也可以覆写内存带,当然也可以用寄存器里面的数值进行运算。基础图灵机也可以模拟这种非常像电脑的机器 -- 需要的运算步数较之前更多,但一定是多项式级别的。( 若RAM机器需要 T 步,基础图灵机则需要 T^c 步,其中 c 是一个不大的常数)参考^计算理论的标准教科书一般是这个: https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X^https://www.nasa.gov/feature/jpl/when-computers-were-human/^https://baike.baidu.com/item/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E9%97%AE%E9%A2%98/2108283^图灵的论文题目中就有这一问题: https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf^之所以叫论题而不是定理,是因为大家目前认为它不能被严谨证明。但我们有足够的理由相信它,因为包括量子计算机在内的计算方式都无法超越它。同时,还是有搞逻辑和哲学的人认为这个也能够被逻辑证明,详见: https://plato.stanford.edu/entries/church-turing/^https://annals.math.princeton.edu/wp-content/uploads/annals-v160-n2-p12.pdf编辑于 2023-07-21 21:11​赞同 60​​添加评论​分享​收藏​喜欢收起​薛定谔的猫清华大学技术宅 / CS /薛定谔独家认证​ 关注图灵机解决了几个问题:1、可计算性问题。一个数是否是可计算的,称为可计算数。可计算数只是实数的一部分,大多数实数都是不可计算的。2、可判定性问题。是否存在通用的过程,判断某个公式是可以证明的。3、人类计算者与计算机等价。通过图灵测试判定计算机的智能。发布于 2017-02-07 08:25​赞同 24​​1 条评论​分享​收藏​喜欢收起​​

如何简单解释图灵机的工作原理? - 知乎

如何简单解释图灵机的工作原理? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册科学如何简单解释图灵机的工作原理?关注者29被浏览63,497关注问题​写回答​邀请回答​好问题 1​添加评论​分享​5 个回答默认排序Chen Zhaoqi​ 关注图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作: 1、在纸上写上或擦除某个符号; 2、把注意力从纸的一个位置移动到另一个位置。而在每个阶段,人要决定下一步的动作,依赖于 (1) 此人当前所关注的纸上某个位置的符号和(2) 此人当前思维的状态。 为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成: 1、一条无限长的纸带 TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。 2、一个读写头 HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。 3、一套控制规则 TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。 4、一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见停机问题。 注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中“空白”的纸带是全部为 0 的。有阴影的方格,包括读写头扫描到的空白,标记了 1,1,B 的那些方格,和读写头符号,构成了系统状态。(由 Minsky (1967) p.121 绘制)。图灵通过把非本质的东西丢掉,将整个计算过程局限在了少数非常简单的操作上。现在我们试着从一个都熟悉的东西入手,来探究图灵的思考过程。我们现在开始解构两个三位数相乘的运算过程。通常人工的乘法步骤如下,通过观察整个运算过程,可以发现,我们每一步运算都只是对当前的两个数字进行运算操作,并不关心其他数字。除了需要知道当前运算到哪一个数字之外,我们还需要知道当前是否有进位,当前的运算符号等额外的人为记忆的东西。现在把整个算式平铺放到一条带网格的纸带上,那么整个运算过程和之前并没有太大不同。想象我们可以操作纸带前后移动,第一步:我们首先把纸带分别依次移动到第3、4、6个网格,得到的暂存数据如下:当前运算数字:5、2当前进位:0当前符号:×经过运算,并将运算结果写到第11个网格中,并更新进位为1。第二步:继续把纸带分别依次移动到第2、4、6个网格,得到的暂存数据如下:当前运算数字:2、2当前进位:1当前符号:×经过运算,并将运算结果写到第10个网格中,并更新进位为0。第三步,依次同上。就这样依次运算下去,我们就可以在有限的步骤内,完成计算。从这个简单的乘法例子我们可以得到:1)在每一步中,只需要关注当前的两个数字2)每一步采取的行动,仅仅取决于当前的乘法、加法、进位值更进一步,从这个简单的乘法运算,我们可以提取出任何数学运算的本质特征:1)在每一步中,只需要关注少数符号2)每一步采取的行动,仅仅取决于当前的运算符号、计算人当前的记忆状态运算行为过程中的人,是完全可以由机器取代的。这就是图灵最初给出的,自动运算机器的抽象逻辑归纳,也是用来证明判定问题不存在算法的方法:如果一个问题无法用图灵机来完成,那么可以说,没有任何算法程序可以解决这个问题。也就是说,凡是能用算法方法解决的问题,也一定能用图灵机解决。发布于 2020-05-01 10:59​赞同 167​​8 条评论​分享​收藏​喜欢收起​查勃多得了如是说​http://124.221.142.162:8081​ 关注我们每个人就是宇宙这个大的、三维单带多头图灵机的一个读写头。我们这个读写头根据【现实处境、脑子里的观念】决定【把当下处境改造成什么、下一步要往哪里走、在脑子里保留何种观念】。(五元组:不错!正是在下。)一个人要是死了,那么这个读写头就不会再动了。要是所有的读写头都不再动了,那么宇宙这台图灵机也就算是停机了。再理解不了你就去玩MineCraft好了。多玩点。不要浅尝辄止。经典的图灵机不过就是一个一维空间上的,上帝模式的MineCraft罢了。编辑于 2023-04-10 12:40​赞同 4​​添加评论​分享​收藏​喜欢

什么是图灵机?通用图灵机和一般意义的图灵机有什么区别? - 知乎

什么是图灵机?通用图灵机和一般意义的图灵机有什么区别? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册编程计算机图灵机什么是图灵机?通用图灵机和一般意义的图灵机有什么区别?关注者26被浏览42,944关注问题​写回答​邀请回答​好问题 2​添加评论​分享​6 个回答默认排序返朴​科普话题下的优秀答主​ 关注1900年,伟大的数学家希尔伯特提出了23个问题,他希望将整个数学体系建立在坚实的基础上,呐喊出了“我们必须知道,我们必将知道”。但哥德尔不完备性定理的提出将其梦碎,数学的一致性和完备性不可同时存在。英国数学家、计算机先驱图灵进一步对数学的判定问题做出了结论——通过通用图灵机在有限推理内可以解决的即是可判定问题,反之则不可判定。而通用图灵机的诞生不仅证明了数学的不完美,由此发明的通用计算机完全改变了世界。“人类的思维永远无法被机器所取代”,但人类会因有机器探索更远的思想边界。撰文 | B. Jack Copeland(新西兰坎特伯雷大学杰出教授)翻译| 王勇、黄红华那是剑桥大学1935年的四旬节学期(译者注:复活节前的六周禁食期,也是剑桥大学冬季学期的名称。),正值暮冬时分。在暗淡的灰色光线中,剑桥大学古老的尖塔和围墙环绕的学院更显年代感。在英国的这个潮湿而寒冷的角落里,尽管冬天异常温暖,但天气依然是阴沉沉的。在剑桥大学圣约翰学院旁边的院子里,钟楼上的三一钟在上午10点响起了刺耳的钟声——10下惊心动魄的钟声接连10下更高音调的钟声,诗人华兹华斯(Wordsworth)曾把三一钟的钟声比作“女性”的声音。圣约翰学院位于狭窄的中世纪老式街道上,距离国王学院不远,据说是剑桥大学第二富有的学院,仅次于最富有的三一学院。有一个流传了几个世纪的传言,说从剑桥大学圣约翰学院一直走到遥远的牛津大学圣约翰学院,都不用踏出圣约翰的土地。马克斯·纽曼是圣约翰学院的一名研究员,他大步走进了教室。戴着眼镜,秃头,年近40岁的纽曼,是英国数学界冉冉升起的新星。走路的时候,身上的学位服会随着他的步伐不断摆动。教室已经有几个世纪的历史了,给人的感觉好像是一座古老的大教堂或修道院的一部分。纽曼教授的课程“数学基本原理”以难度大而著称,所以教室里的学生并不多。图灵正专心致志地坐在讲台下。1931年艾伦·图灵(后排右三)在剑桥国王学院的合影丨图片来源:Cambridge该系列课程的“压轴戏”是阐述库尔特·哥德尔(Kurt Gödel)取得的一些惊人成果。哥德尔是维也纳大学一名25岁的数学家,生性沉默寡言,但非常聪明。1940年,哥德尔逃离了纳粹统治下的维也纳来到美国——纳粹不顾他患有各种真实的或是编造的疾病,要求他参军,但他宁愿成为难民也不参军。潜伏在德国潜艇中横渡大西洋的风险太大,所以哥德尔沿着苏联的西伯利亚大铁路一路向东,然后乘船从日本逃到旧金山。他被普林斯顿高等研究所录取,那里已经聚集了一批欧洲最伟大的科学家和数学家,其中包括阿尔伯特·爱因斯坦和约翰·冯·诺伊曼,诺伊曼在之后曾深度参与洛斯阿拉莫斯(Los Alamos)原子弹计划。1931年,哥德尔证明了算术系统的不完备性,这一惊人而又奇特的结论将是纽曼最后几节课的主题。哥德尔的成果被称为“哥德尔不完备性定理”,至今仍是数学领域最令人震惊的发现之一。哥德尔不完备性定理表明,无论算术系统的形式规则是如何制定的,总会有一些算术公理无法通过规则来证明,就如简单的皮亚诺算术系统中的关系式2+2=4。这给人的感觉有点儿像制造出来的拼图故意少了一些碎片,或者新地毯永远无法完美覆盖到房间的四个角落。消除不完备性的唯一方法似乎是重置规则,使其前后自相矛盾,但这似乎并不是一个完美的解决方案。哥德尔指出,数学中有些真实性无法被证明。这个结论令人震惊,甚至激怒了一些人。数学家不仅倾向于认为所有真实的事物都可以被证明,而且认为所有重要的事物都应该能够被证明,因为只有通过清晰的、规则明确的严格证明才能带来确定性。纽曼计划在未来几周的时间里来讲述这个令人敬畏的主题,在当天的演讲中,他谈论的不是哥德尔,而是德国哥廷根大学的著名数学教授希尔伯特(David Hilbert)。希尔伯特比哥德尔年长40多岁,实际上他被誉为欧洲数学界的教皇。在数学领域,希尔伯特有句名言:“我们必须知道,我们必将知道。”1900年,在巴黎国际数学大会的演讲中,希尔伯特向国际数学界提出了23个有待解决的数学难题,这为20世纪的数学发展制订了计划。而图灵,一个颇有些愤世嫉俗的剑桥研究生,将证明希尔伯特的部分观点从根本上就是错的。纽曼正在向学生介绍数学中“系统化”程序的概念,这是希尔伯特整个方法论体系的核心概念。我们每个人在学校里学过的长乘法规则就是一个典型例子,它很好地说明了数学家所谓的系统化程序的含义。系统化程序就像简单的纸笔法,任何人都可以机械地按步骤执行,而无须任何创意或真知灼见。类似天分或直觉的东西就再也不需要了。有经验的操作员甚至都不需要知道程序的用途,就可以准确地执行它。操作员可以按照说明书上的指示准确地执行程序,而不必了解程序的目的、运作方式和原理。实际上,这不仅仅是一个抽象的概念。在企业、政府和研究机构中,有成千上万的负责计算的人员在执行系统化的操作流程。他们所做的烦琐的数学计算工作,如今已被电子计算机取代。有趣的是,这些从事计算工作的职员本身就被称为“计算机”。只是在那个时代,计算机根本不是一台机器,而是一个人,一个能够做到死记硬背的数学文员。纽曼和学生说,这些系统化的数学程序的基本特征是可以通过机器来执行。这在当时是一种很新颖的表达方式,纽曼的演讲激发了图灵的想象力。许多年后,纽曼回忆起图灵发明的通用图灵机,说:“我相信这一切都是源于他参加了我关于数学和逻辑基础的课程。”纽曼认为,关于机器可以执行系统化程序的提议,启发了图灵去“尝试并说明一个完美的通用计算机器意味着什么”。纽曼的演讲让图灵非常着迷,他疯狂地思考着,以至于对演讲内容的研究占据了他多年的工作生涯。奇特的是,图灵似乎很少和别人讨论自己的想法,或者告诉别人他在想什么——就连纽曼也不例外。图灵认为这是他自己的问题,他觉得没有必要去和别人讨论。一天,在国王学院的高桌晚宴上,学院的另一位研究员理查德·布雷斯威特(Richard Braithwaite)试图让图灵介绍下他的研究工作。布雷斯威特意味深长地说自己能理解哥德尔理论的内在联系,但是他发现图灵对此毫无反应。后来布雷斯威特在一封信中写道:“图灵完全不清楚哥德尔的工作。”他还补充道:“在一定程度上,我认为是我让图灵注意到他的工作和哥德尔的工作之间的联系。”也许图灵太过沉迷于研究通用计算机,他甚至都懒得去听纽曼关于哥德尔的后续讲座了。或许这就是纽曼后来颇为尖刻地称“图灵具有性格缺陷”的一个例证,即“图灵很难借助或利用别人的工作成果,反而更喜欢自己解决问题”。哥德尔当然没有这样的“缺陷”,他毫不吝啬地赞扬了图灵在那一年里所取得的成就。哥德尔慷慨地说,图灵向他展示了“正确的视角”。利用图灵的发现,他成功地将不完备性定理的适用范围扩展到涵盖所有包含基本算术形式的数学系统中。数学中的不完备性几乎无处不在。1936年4月底,在一番精心准备后,图灵拜访了纽曼,并给了他一份详尽的《论可计算数及其在判定问题上的应用》的论文草稿。纽曼在阅读这篇论文时一定很震惊。图灵发明了一种通用机器,这台理想化的机器由一个无限的内存(一个无限的纸带)和一个“扫描器”组成,扫描器沿着纸带来回移动,读取纸带上打印的内容,然后在纸带上进一步打印出更多的内容。在开始计算之前,机器的程序和计算所需的所有数据都已打印在纸带上。通过选取存储在纸带上的各种不同程序,操作员可以让机器执行任何“人类计算机”可以执行的过程。这就是图灵称之为“通用”机器的原因。在那个时代,“计算机器” 特指能够执行由 “人类计算机” 完成的工作的机器。图灵把他的发明称为“通用计算机器”(universal computing machine),不久后,它被简称为“通用图灵机”(universal Turing machine)。今天,现在大量有关通用图灵机的文献中,它的名字有时会被误称为“Turning machine”或“Türing machine”,甚至是 “universal touring machine”。通用图灵机是现代计算机的架构基础,由单一硬件主板构成,通过使用存储在内存中的程序,可以轻松地处理各种迥异的任务,例如数学计算、文字处理和下棋等。图灵致力于驳斥希尔伯特关于数学本质的权威观点,通用计算机的提出是驳斥其观点的关键一步,但也因此招致了希尔伯特的反驳。通过对通用计算机行为的推理,图灵能够证明有一些定义明确的数学问题是通用计算机无法解决的。这个结果同哥德尔的不完备性定理一样令人震惊。正如我们今天可以很清晰地表述,图灵证明了对于部分有明确定义的数学问题,即使计算机有无限的内存空间,能够永远持续计算,在有穷的步骤内也无法给出“是”或者“否”的答案。充满干劲的计算机程序员有时认为,只要问题表述得足够精确,能够写出合适的程序,计算机就能解决任何数学问题,但是图灵的结论表明,这种乐观是没有根据的。图灵给出了几个此类定义明确的数学问题作为示例,它们都是计算机在有穷步骤内无法解决的。其中之一就是打印难题,即针对任意一个给定的图灵机程序,判断运行该程序后是否一定会在纸带上打印“0”。许多程序会在某个时刻打印出0,而有些程序则永远不会。从原理上讲,即使不运行图灵机,只要对程序的性质进行推理,应该是可以做出判断的。只要证明经过有限步数的推理,我们就可以给出“是”或“否”的明确答案,而且更进一步,不管对哪个图灵机程序执行推演,我们都应该可以给出明确的答案。如果完成上述两点的证明,那就解决了打印难题。显然,没有一台计算机可以解决这个看起来很简单的问题。哥德尔和图灵给希尔伯特关于数学本质的观点带来了双重打击,并且从此再也没有恢复。哥德尔的不完备性结论第一次打击了希尔伯特关于数学本质上可证明的观点。5年之后,图灵彻底推翻了希尔伯特摇摇欲坠的宝座。哥德尔的打击集中在一个非常具体的系统算术规则上,而图灵使用通用机器作为武器,在更普遍的范围进行了反驳。基于图灵机能够执行任何系统化程序这一事实——如今我们简称其为“图灵论题”,图灵能够得出比哥德尔更普适的结论。图灵开发了重绘数学蓝图所需的工具,精确指出了与打印难题类似的一些数学问题,是无法通过任何系统化的程序来解决的。希尔伯特认为,一定存在一个最高阶的系统程序,可以用来确定数学中的真假。纽曼嘲讽地称这个系统程序为“新的魔法石”,暗指能够帮助炼金术士把铅变成黄金的神秘物质。有了这个神奇的系统程序后,任何人不需要任何见识、直觉或创意,都能分辨出任意给定的数学命题是对还是错。希尔伯特说,为了把整个数学体系建立在“人人都认同的具体基础上”,就必须存在一个最高阶的系统程序。哥德尔的工作动摇了人们对存在最高阶系统程序的信念,现在图灵又提出了一个完全令人信服的论点,那就是不存在最高阶程序。如果这个程序确实存在,那么通用图灵机就可以实现它,因为通用图灵机可以执行所有系统程序。有了这个“新的魔法石”,通用图灵机就能解决所有“是”或“否”的问题。然而,图灵已经明确地证明,通用图灵机不能解决所有“是”或“否”的问题。毋庸置疑,希尔伯特的最高阶系统程序不可能存在。尽管当时对图灵来说,纠正希尔伯特谬误的工作很重要,但从今天的角度看,这与他发明精妙的通用计算机相比,真的是不值一提。图灵从一开始就对制造通用计算机产生了浓厚兴趣,但他并不了解合适的制造技术。在维多利亚时代,颇具远见的查尔斯·巴贝奇曾经梦想建造一台巨大的通用数字计算机,他称之为“引擎”,可以接管数百个“人类计算机”的工作(如图)。如果图灵是现代计算机之父,那么巴贝奇无疑就是其祖父。巴贝奇在去世前完成了雄心勃勃的“引擎”机的雏形设计,但是他从来没有制造出完整的机器来。根据巴贝奇的设计,机器读取的指令打印在与色带相连的卡片上——这个想法是巴贝奇从自动提花织布机上借鉴来的。“分析引擎”的设计初衷,虽然考虑了把数据存储在其内存(巴贝奇将其简单地称为“存储器”)中,但是并没有考虑指令本身的存储。巴贝奇的机器缺少现代计算机的基本特征,即图灵的存储程序设置。由于巴贝奇生活在维多利亚铁路时代,所以他打算利用铁路发动机和其他工业机械使用的零部件,如黄铜齿轮、棒、棘轮、小齿轮等,来实现建造计算引擎的计划。巴贝奇1号差分机,1824-1832年。丨图片来源:Science Museum / SSPL采用类似巴贝奇的机械部件,当时人们成功地制造出了小型专用计算机。1931年,麻省理工学院研制的模拟微分分析器(Differential Analyser)就是其中之一。该计算机需要一个熟练的技工使用铅锤来为每项新任务“编程”!不过,巴贝奇“蒸汽铁路时代”的技术对图灵来说毫无用处。图灵需要可以支持高速运行的技术,做到能够将指令和数据存储在一个相当紧凑的空间里,而机械齿轮无法胜任。1936年,机电式继电器成为制造电子信息处理设备(如电话交换机和穿孔卡片分拣设备)的主要技术。它是一个小型的电动开关,由电磁铁和弹簧推动的金属棒组成。当金属棒朝一个方向移动时,就可以联通电路,当金属棒朝相反方向弹回来时,电路就会断开。继电器体积大,速度慢,还笨重,而且可靠性也差。图灵开玩笑说,一台由继电器制成的通用图灵机,需要有伦敦市中心的阿尔伯特音乐厅那么大的空间才放得下。直到第二次世界大战期间,图灵和纽曼同在布莱切利庄园从事密码破译工作,他们才了解到如何制造通用图灵机。秘诀就是电子管,英国人叫电子管,美国人则称其为真空管。因为电子管中唯一运转的部分是电子束,所以它的运行速度比继电器快很多倍。这两位密码破译者的梦想就是建造一台高速的通用电子计算机。纽曼曾在圣约翰学院讲授过这个棘手的问题,图灵在他的研究中也直面了这个难题。1939年,哥德尔在访问距离芝加哥两小时车程的圣母大学时做了一些逻辑导论的讲座,并对图灵关于判定问题的看法进行了生动的描述。哥德尔提到了一个想象中带有曲柄的机器。这台机器有点儿像打字机,可以在其中键入数学公式。输入一个可以用所谓的“命题演算”(非常简单的基础数学)概念来表示的公式,然后转动曲柄一次,如果在命题演算中公式能被证明,则机器会响铃,如果该公式无法被证明,则不会响铃。也就是说,机器能够“决定”这个公式是否可证明。图灵对判定问题的研究显示,如果公式无法用简单的命题演算的形式来表示,那么就不可能建立一台计算机在有穷步骤内来确定公式是否可证明。这是对希尔伯特观点的又一个致命打击,因为希尔伯特和他的支持者相信,应该存在一个最高阶系统程序来决定所有的数学问题。最后,哥德尔补充说,图灵的研究结果表明,“人类的思维永远无法被机器所取代”——这是我将在本书第十一章中说到的有趣观点。就在图灵准备把他的手稿寄给一家期刊的编辑时,美国逻辑学家阿隆佐·丘奇(Alonzo Church)发表的论文的副本也送到了剑桥。丘奇比图灵大几岁,是普林斯顿大学数学系的一名年轻的土耳其人。20世纪20年代末,他在哥廷根大学与希尔伯特小组一起花了近6个月的时间进行研究。仔细阅读丘奇著写的由数学符号组成的简单的两页论文,会发现其关于判定问题的研究成果与图灵的研究内容基本一致。这可能是研究人员最不想遭遇的窘态之一。是的,丘奇的论文虽然没有包含通用图灵机和存储程序的概念,但内容与图灵的手稿有明显的重合,根据学术规则,一旦有人率先发表了一个数学成果,除非其他人的论文有一些重要的不同或全新的见解,否则不得再次署名发表。幸亏有纽曼在图灵身边给他出谋划策。纽曼很清楚,图灵论文的意义远不止狭隘地应用于解决判定问题。他仍然建议图灵发表论文,甚至亲自给伦敦数学学会的编辑写信,声明即使丘奇的成果发表在先,也不应阻止图灵的作品在协会期刊上发表。和往常一样,纽曼又一次占了上风,图灵的代表作于1936年年底正式发表。丘奇的方法并没有说服哥德尔,哥德尔发现了论文中有争议的漏洞。丘奇关于无法构建决策机器的证明并不能让人信服。哥德尔那个假想的带有曲柄的机器就很形象。直言不讳是学者的典型特征,哥德尔率直地告诉丘奇,他的技术方法“完全不能令人满意”(丘奇在某封信件中提及)。但是当哥德尔读到图灵的论文时,他发现图灵成功地弥补了丘奇的漏洞。哥德尔赞赏地写道,图灵的“机械可计算性的定义”是“最令人满意的”,而且将事实“毫无争议”地展现了出来。1958年英国国家物理实验室(NPL)制造的完整版图灵自动计算引擎(ACE) 丨图片来源:http://i-programmer.info图灵的论文中也存在一些小错误。不过,相比整篇复杂的数学论文而言,这些小错误都是很浅显的,主要是图灵粗心大意所致。几个月后,图灵发表了一篇修订版论文,但其中仍有一些小纰漏未被发现。第二次世界大战后,图灵在英国国家物理实验室的年轻助手唐纳德·戴维斯(Donald Davies)发现了这些错误——戴维斯称之为“粗心的编程错误”。年轻的戴维斯天真地认为图灵在听到他所发现的错误时会很欣慰。戴维斯回忆道:“我跑去告诉他,当时我非常高兴。”然而,图灵生气了。“他非常生气,”戴维斯平静地回忆说,“他愤怒地指出这些疏忽并不重要,本质上来说这结论是对的。”图灵的家人很清楚图灵的这个性格特点,他的母亲指出:“真正让图灵生气的是与他在科学观点上的矛盾。”有时他不得不离开房间,来摆脱糟糕的坏心情。论文发表后,图灵是时候展翅高飞了。他选择前往数学和科学蓬勃发展的新国度——美国。从1935年起,图灵就一直想去普林斯顿大学访学,现在他知道了丘奇的存在,去那里就显得更有意义了。普林斯顿大学位于新泽西州南部不断蔓延的城市边缘,有着新哥特式的石头建筑和四合院,就像一个梦幻般的绿洲,是这个地球上最伟大的数学家居住的“温室世界”。图灵马上就有机会能够与丘奇一起合作进行数学研究了。丘奇很了解图灵,后来也是他率先使用“图灵机”一词来指代图灵的发明成果的。图灵收拾好行囊,离开了与世无争的剑桥。本文经授权节选自《图灵传:智能时代的拓荒者》(中信出版社,2022年10月版),图片为编辑所加。发布于 2022-12-15 08:54​赞同 36​​添加评论​分享​收藏​喜欢收起​欣快的犀牛暂时还有头发的程序员​ 关注纵观人类上万年的文明史,众多发明如繁星璀璨,但每一样发明都只完成一项主要功能:轮子可以滚动,筷子可以夹食物,马桶可以让人在温暖的室内回答自然的召唤……发明物的生产过程也都需要人对自然界的物质和能量进行操纵,因此是一个「硬件」的改造过程。上篇中描述的图灵机,也只是单一功能的。每一个图灵机负责计算一个「可计算数」。但这个发明跟轮子、筷子不同,不需要和物理世界进行接触,它们仅依赖于「逻辑规则」,是一个「软件」。这种软件性质,催生了一个图灵机中的战斗机——通用图灵机(Universal Turing Machine)。通用图灵机和之前的单一功能图灵机不同,虽然它什么(可计算)数都不会算,但它又所有的(可计算)数都能算,窍门就在于它的能力是一步步地驱动其他会算数的图灵机把数给算出来。这一点对大厂管理模式熟悉的朋友应该不难理解。所有的发明最终总归要跟人所生存的物质世界产生交互,如果通用图灵机只是停留在逻辑世界,对人的用处就非常有限。现代计算机之所以对人类文明产生这么大的推动作用,其核心就是把「软件」从「硬件」中剥离开。可编程的「软件」通过一些最基本的「逻辑 ⇨ 物理」转换接口(如数字到电位差)来操纵「硬件」。软件因为只服从逻辑规则,可以被人的理性和自由意志全权决定,真正做到心想事成。从这个意义上来说,计算机是人(咳咳,高贵的程序员)的精神力量对物质世界的操控——正所谓键盘在手,天下我有。(至于程序员却被HR的精神力量所控制的现象则属于心理学范畴,在此不予讨论)。现在让我们看看「通用图灵机」是一个怎样的存在。上篇中,图灵机的纸带初始状态是全空的。用现代术语说,该图灵机没有「输入」(Input)。图灵机执行起来之后,会源源不断地在纸带上各种鬼画符,有些符号是为了完成内部控制使用的(如打印某个特殊记号以便后来搜寻定位),另外一些则是计算结果的一部分(0和1)。在每一个步骤,我们可以用以下三条信息完整地描述该图灵机的执行状态:该机当前内部状态(q1,q2等);该机当前扫描方格的坐标;纸带上每个方格上面的符号(有限多个)。以上三条信息我们可称之为「大三元」。现在假设你已经有了第N步大三元,那你会不会生成第N+1步的大三元?是不是很简单?我们需要做的就是从这个图灵机的指令集里寻找到一条匹配当前大三元的指令就可以了。回顾一下:每条指令都符合下面的格式,即,如果当前内部状态为qi,当前扫描到的符号为Sj,那么在当前方格打印符号Sk,向右移动+1,-1或者0格,并将内部状态转至ql)。每一步的大三元中都包含了匹配到这条指令左侧的必要信息(即内部状态和当前扫描符号),再通过这条指令右侧的规定动作,就可以生成下一步的大三元了。这时老司机会有一个技术细节的疑问,如果指令集中匹配不到任何一条指令怎么办?或者指令集里有多于一条匹配当前大三元的指令怎么办?这就是通常所说的软件Bug了,而这样的图灵机就不是一个合法的图灵机,在后面停机问题的讨论中会提到。理解了这个过程,就掌握了通用图灵机的工作原理。通用图灵机U和一般图灵机最主要的区别是,它的纸带的初始状态不是「全空」,而是从坐标0向右顺序打印着某个图灵机A的所有指令(即A的代码)。如果你还记得上篇中我们是如何为图灵机编号的,就不难理解任何一个图灵机A的指令集可以进行线性序列化,作为U纸带的输入数据。而U自己的指令集就是能够让它完成上面从第N步大三元生成第N+1步大三元的过程。具体说,这一指令集让U在纸带上来回移动、做记号、匹配A的某一条指令、拷贝符号,并在右侧的空白纸带上不断地打印A的第1步大三元,第2步大三元……直至无穷。如果A计算 ,那么在U「模拟」A的过程中, 的每一位数字也将在U的纸带上出现,并可以确定性的收集起来作为U的输出。总结一下,这就是通用图灵机——它可以把任意其他图灵机A的代码拿过来作为输入,并且模拟A的全部执行过程,将A的计算结果作为U自己的输出。我们说U是“可编程”(Programmable)的,因为U做什么,完全取决于输入的A的代码。通用图灵机听上去非常强悍,因为输入的代码可以有无穷多种,U能做的事也就是无穷多——想当马桶是马桶,想当筷子是筷子。但我们在上篇最后证明了图灵机的数量是可枚举的,而实数是不可枚举的,因此至少有一个实数是任何图灵机都算不出来的。这是白纸黑字的有效数学证明,不接受任何反驳。但问题是你能找到这样一个具体的实数是任何图灵机都算不出来的吗?建议你试一下,用确定的数学语言指定一个唯一的实数,多奇怪都可以,例如「 的1/e次方的正弦」,或者「某个一元17次方程的满足某些限定条件的唯一实数解」。再想想你能不能找到一个有限的算法步骤可以源源不断地产生出这个数的每一位数字。事实上,几乎所有在数学、物理中「有用」的数,和它们的各种组合,都存在相应的算法来计算。这也是为什么图灵机模型在理论上似乎可以满足人类所有实际的计算需求(计算效率是另外一个话题)。但之前的证明也非常明确地指出确实至少有一个实数(实际上有无穷多个),任何图灵机都无法计算,它(们)到底是谁?怎么可能它既具有明确的定义,但又没有通用算法能把它算出来?搞懂这个问题可以让我们更好地理解通用图灵机的能力边界。迄今为止,不管计算机变得多快、多强大,甚至在未来「量子计算机」能够广泛应用的时候,这个理论限制也是无法突破的。图灵机的能力边界似乎和自然界中其他一些理论上(下)限——如热力学第二定律、光速极限、测不准原理等——一起雪藏着更深层次的宇宙真理。下一篇我们详细解读图灵机的这个性质。(未完待续)发布于 2022-06-25 17:45​赞同 5​​添加评论​分享​收藏​喜欢

图灵机 快速入门教程 - 陈树义 - 博客园

图灵机 快速入门教程 - 陈树义 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

陈树义

用最简单的语言,让复杂的技术不再难懂。

博客园

首页

新随笔

订阅

管理

图灵机 快速入门教程

文章首发于【博客园-陈树义】,点击跳转到原文《图灵机 快速入门教程》。

图灵机是图灵机理论中提出的理想模型,其可以实现任意复杂的计算。

什么是图灵机

英国数学家艾伦·图灵在1936年提出了「图灵机」的理论。「图灵机」设想有一条无限长的纸条,纸条上有一个个方格,每个方格可以存储一个符号,纸条可以向左或向右运动。

图灵机可以做下面三个基本的操作:

读取指针头指向的符号。

修改方框中的字符。

将纸带向左或向右移动,以便修改其临近方框的值。

下面我们通过一个小例子来了解下图灵机到底是如何进行计算的。这个例子比较简单,我们将在空白的纸带条上打印1 1 0这三个数字。

首先,我们向指针头指向的方框中写入数字1:

接着,我们让纸带向左移动一个方框:

现在,我们再往指针头指向的方框写入数字1:

接着,我们继续让纸带向左移动一个方框,并写入数字0:

这样我们就完成了一个简单的图灵机操作。

用图灵机完成异或操作

我们来尝试一个稍微复杂点的操作,我们尝试将1 1 0做一个异或操作,即将1 1 0变成0 0 1。要图灵机完成计算,就类似于向图灵机输入以下操作指令,这些指令组成了一个小程序。

读到的符号

写入指令

移动指令

-

-

0

写入1

向右移动纸带

1

写入0

向右移动纸带

我们假设图灵机纸带现在的状态如下图所示:

现在读取到的符号是0,按照操作指令,我们应该往方框写入1并向右移动一个方框:

现在读取到的符号是1,按照操作指令,我们应该往方框写入0并向右移动一个方框:

类似地,现在读取到的符号是1,我们重复相同的操作。

最后,我们读取到了一个空白字符,图灵机不做任何操作。

用图灵机完成任意复杂计算

上面我们使用了图灵机成功完成了异或操作,理论上来讲我们也可以完成加法、减法、乘法、除法操作,只不过是实现的步骤(指令)复杂些而已。下面这个网站是一个图灵机的在线模拟器,其实现了一些基本运算,比如:加法、减法等,有兴趣的可以自己去试试看。

Online Turing Machine Simulator

图灵机的意义

让我们尝试这样的思考历程:

我有许多很复杂的公式需要计算,如果自己一个人算的话时间会很久。

思考:能不能有一个东西能帮我实现公式的计算,无论这个公式有多复杂?

思考:我能不能设计一个模型来证实这个实行是可行的?(数学家最喜欢建模型来证明了~)

思考:提出「图灵机」理论,任何计算都可以简化成固定的步骤,无论多复杂的计算都能实现了。

某些动手能力强的数学家利用电子工程学知识将许多真空管组成了一套设备,实现了「图灵机」理论模型。

随着电子工程的不断发展,原本庞大的计算机不断变小,慢慢地变成了今天的计算机。

「图灵机」理论通过假设模型证明了任意复杂的计算都能通过一个个简单的操作完成,从而从理论上证明了「无限复杂计算」的可能性,直接给计算机的诞生提供了理论基础。

从这样的思考历程来看,图灵机的出现为计算机的诞生奠定了理论基础,这就是图灵机诞生的意义。

文章首发于【博客园-陈树义】,点击跳转到原文《图灵机 快速入门教程》。

posted @

2017-08-23 10:31 

陈树义 

阅读(22423) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 陈树义

Powered by .NET 8.0 on Kubernetes

图灵机 - 集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织

图灵机 - 集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织

图灵机

来自集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织

跳到导航

跳到搜索

图灵机是一种数学计算模型,定义了一个抽象的机器,该机器可以根据指定的规则表在纸带上进行操作。虽然图灵机模型非常简单,但是图灵机可以模拟任何给定的计算机算法。

图灵机在一条无限长的纸带上运行,纸带被分割成若干个离散的单元格。机器的读写头在一个单元格上“读取”或“扫描”纸带上的符号。然后,图灵机根据读取的符号和机器自身在用户指定指令的“有限表”中的状态,机器(i)在单元格中写下一个符号(例如,有限字母表中的数字或字母),然后(ii)将纸带向左或向右移动一个单元,然后(iii)根据观察到的符号和机器自身在表中的状态,要么继续执行另一指令,要么停止计算。

图灵机是1936年由阿兰·图灵 Alan Turing发明,他称之为“自动机”。通过这个模型,图灵能够否定地回答两个问题:

是否存在一台机器,能够确定其纸带上的任意机器是否是“循环”的(例如,死机,或无法继续其计算任务)?

是否存在一种机器可以确定其纸带上的任何任意机器是否曾经打印出一个特定的符号?

因此,通过提供可以进行任意计算的非常简单的装置的数学描述,他能够证明计算的一般性质,尤其是判定性问题(翻译自德语Entscheidungsproblem, 英文译作decision problem)的不可计算性。

图灵机证明了机械计算能力存在基本限制。虽然机械计算可以表达任意的计算,但最小设计使机械计算不适合在实践中计算: 与图灵机不同的是,现实世界的计算机是基于另外一种设计,即使用随机存取存储器 Random-access memory。

图灵完备性 Turing completeness是一个指令系统模拟图灵机的能力。一个图灵完备的编程语言理论上能够表达所有计算机可以完成的任务; 如果忽略有限内存的限制,几乎所有的编程语言都是图灵完备的。

目录

1 图灵机概述

1.1 物理描述

1.2 描述

2 可视化或实现图灵机所需的其他细节

2.1 其他定义

2.2 状态

2.3 图灵机的状态图

3 图灵机的等价模型

4 选择C型机器、Oracle的O型机器

5 通用图灵机

6 与实际机器的比较

6.1 图灵机的局限性

6.1.1 计算复杂性理论

6.1.2 并发性

6.1.3 交互

7 历史

7.1 历史背景:计算机器

7.2 判定问题: 希尔伯特1900年提出的第10号问题

7.3 阿兰图灵的机器

7.4 1937-1970“数字计算机”“计算机科学”的诞生

7.5 1970年至今:作为计算模型的图灵机

8 另参见

9 笔记

10 参考文献

10.1 原始文献、重印和汇编

10.2 可计算性理论

10.3 丘奇的论文

10.4 小型图灵机

10.5 其他

11 外部链接

12 编者推荐

12.1 集智文章推荐

12.2 课程推荐

12.3 文章推荐

图灵机概述

图灵机是一种中央处理器单元 Central Processing Unit,即CPU,控制着计算机的所有数据操作,规范及其使用顺序内存来存储数据。更具体的,图灵机是一种能够枚举字母表有效字符串的机器(自动机);这些字符串是字母递归可枚举集的一部分。理想情况下,图灵机有无限长的纸带,其可以在上面执行读写操作。

假设有一个“黑盒子”,图灵机无法知道它最终是否会用给定的程序枚举出子集中的任何一个特定字符串。这是因为停机问题 Halting Problem是不可解的,停机问题对计算的理论极限有着重大的影响。

图灵机能够处理不受限制的语法,这意味着它能够以无限多的方式鲁棒地评价一阶逻辑。通过λ运算可以证明这一点。

能够模拟任何其他图灵机的图灵机称为通用图灵机。邱奇 Alonzo Church,美国著名数学家,提出了一个更具有普适性的数学定义。他将在λ运算的工作和图灵在正式计算机理论中的工作融合,称为邱奇-图灵理论。在这项工作中,他指出图灵机确实抓住了逻辑和数学中有效方法的非正式概念,并提供了算法或“机械程序”的精确定义。研究它们的抽象特性可以使我们对计算机科学和复杂性理论有更深入的了解。

物理描述

在1948年的论文《智能机器 Intelligent Machinery》中,图灵写道他的机器包括: 以无限长纸带的形式获得的无限存储容量,纸带上标有方块,每个方块上可以打印一个符号。在任何时候,机器中都有一个符号,被称为扫描符号。机器可以改变扫描的符号,其行为部分由该符号决定,但纸带上其他地方的符号不会影响机器的行为。然而,纸带可以在机器中来回移动,这是机器的基本操作之一。因此,纸带上的任何符号最终都可能有一个局。

描述

图灵机在纸带上进行机械操作的机器进行数学建模。纸带上有符号,机器可以使用读写头一次一个读取和写入这些符号。操作完全由一组有限的基本指令决定,例如“在状态42中,如果看到的符号为0,则写入1;如果看到的符号为1,则改为状态17;在状态17中,如果看到的符号为0,写一个1并更改为状态6”等。在原始的文章中(“论可计算的数字,以及对可判定行的影响”)。图灵想象的不是一种机制,而是一种他被称之为计算机的“人”,可以严格执行这些决定性的机械规则的人。

更切确地说,图灵机由以下部分组成:

纸带。纸带被分成多个单元,每个紧邻着。每个单元都包含来自某个有限字母表的一个符号。字母表中包含有一个特殊的空白符号(此处写作“0”)和一个或者多个其他符号。假设纸带可以任意向左/向右扩展,所以图灵机拥有能够支撑起计算所需的纸带数量。没有写入过的单元格被假定用空白符号填充。在某些型号中,胶带的左端标有特殊符号,磁带向右侧延伸或无限延伸。

读写头。读写头可以在纸带上读写符号,并一次将纸带左右移动一个(有且仅有一个)单元格。在某些型号的机器中,读写头移动而纸带静止。

状态寄存器。状态寄存器用来存储图灵机的状态,是有限多个状态中的一个。其中有一个特殊的启动状态,状态寄存器就是用它来初始化。图灵写道,这些状态代替了执行计算的人通常会处于的“精神状态”。

一个有限的指令表[1][2],给定机器当前所处的状态(qi)和它在纸带上读取的符号(aj)(当前读写头下的符号),告诉机器依次做以下事情(对于5元组模型):

擦除或写入一个符号(将aj替换为aj1)。

移动读写头(由dk描述,如果值为'L'表示向左移动一步,'R'表示向右移动一步,'N'表示停留在原地)。

假设与规定的状态相同或新的状态(进入状态qi1)

在四元组模型中,擦除或写入符号(aj1))和向左或向右移动读写头(dk)被指定为独立的指令。该表告诉机器(ia)擦除或写入一个符号,或者(ib)向左或向右移动读写头,然后(ii)按规定承担相同或新的状态,但在同一指令中不能同时执行(ia)和(ib)。在某些模型中,如果表中没有当前符号和状态组合的条目,那么机器将暂停;其他模型要求填充所有条目。

机器的每一部分(即它的状态、符号收集和在任何特定时间使用的纸带)和它的行动(如打印、擦除和纸带运动)都是有限的、离散的和可区分的;是无限的纸带和运行时间给了它无限制的存储空间。

在Hopcroft和Ullman之后,单纸带图灵机可以被正式定义为一个七元组M=⟨Q,Г,b,Σ,δ,q_0,F⟩,其中:

Г是有限的、非空的纸带字母符号集;

bᕮГ,是空白符号(唯一允许在计算过程中的任何步骤无限频繁地出现在纸带上的符号);

Σ⊆Г\{b}是输入符号集,即允许出现在初始纸带内容中的符号集;

Q是有限的、非空的状态集;

q_0ᕮQ是初始状态;

F⊆Q是最终状态或接受状态的集合。初始纸带内容被认为是接受由M如果它最终停止在一个状态 F.

δ: (Q \ F) Χ Г Χ {L, R}是一个偏函数,称为转移函数,其中 L 是左移,R 是右移。如果在当前状态和当前纸带符号上未定义,则机器停止;直观地,转移函数指定了从当前状态转移的下一个状态,哪个符号覆盖读写头指向的当前符号,以及下一个读写头运动。

此外,图灵机还可以有拒绝状态,使拒绝更加明确。在这种情况下,有三种可能性:接受、拒绝和永远运行。另一种可能性是将磁带上的最终值视为输出。然而,如果唯一的输出是机器最终所处的状态(或永远不停止),机器仍然可以有效地输出一个较长的字符串,通过输入一个整数,告诉它要输出字符串的哪一位。

一个相对不常见的变体允许“无移位”,比如 N,作为方向集的第三个元素{L, R}。

三状态繁忙的海狸(busy beaver)七元组是这样的:(关于繁忙的海狸相关的资料可以搜索“图灵机实例”了解)

Q={A, B, C, HALT}(状态);

Г= {0, 1}(纸带符号);

b=0(空白符号);

Σ={1}(输入符号);

q_0 = A(初始状态);

F={HALT}(最终状态);

δ=参见下面的状态表(转换函数)。

空白的时候,所有的纸带单元格都用0标记。

State table for 3-state, 2-symbol busy beaver

纸带符号

当前状态 A

当前状态 B

当前状态 C

写入符号

移动纸带

下一个状态

写入符号

移动纸带

下一个状态

写入符号

移动纸带

下一个状态

0

1

R

B

1

L

A

1

L

B

1

1

L

C

1

R

B

1

R

停机

可视化或实现图灵机所需的其他细节

用Van Emde Boas(1990)的话来说: “集合论对象(类似于上面的七元组描述形式)只提供了关于机器将如何运行以及它的计算将是什么样子的部分信息。”

例如,

符号到底是什么样子的,需要有很多决策,也需要有一种万无一失的方法来无穷尽地读写符号。

左移和右移操作可能会使读写头在纸带上移动,但在实际构建图灵机时,更实际的做法是让纸带在读写头下来回滑动。

纸带可以是有限的,并根据需要自动延伸出空白(这是最接近数学定义的),但更常见的是将其视为在一端或两端无限延伸,除了读写头所在的明确给定的有限片段外,都会被预先填充空白。(当然,这在实践中是无法实现的。)纸带的长度不能是固定的,因为那不符合给定的定义,而且会严重限制机器可以执行的计算范围,如果纸带与输入大小成正比,则为线性有界自动机的计算范围,如果纸带是严格的固定长度,则为有限状态机的计算范围。

其他定义

文献中的定义有时会稍有不同,以使论证或证明更容易或更清晰,但这总是以使所产生的机器具有相同的计算能力的方式进行。例如,集合可以从 [math]\displaystyle{ \{L,R\} }[/math] 改为 [math]\displaystyle{ \{L,R,N\} }[/math]其中N(“无”或“无操作”)将允许机器停留在同一纸带单元上,而不需要左右移动。这样不会增加机器的计算能力。

最常见的规则是根据图灵/戴维斯的规则,在“图灵表”钟永9个5元组中的一个表示每个“图灵指令”(图灵1936年在《The Undecidable》p.126-127):

(定义1) :((qi, Sj, Sk/E/N, L/R/N, qm))

其中qi,是当前状态,Sj是已扫描符号,Sk是打印符号,E是擦除,N是无状态,L是向左移动,R是向右,qm 是新状态。

其他作者(Minsky,Hopcroft和Ullman,Stone采用了另一种规定,在扫描符号Sj之后立即列出新状态qm:

(定义2): (qi, Sj, qm, Sk/E/N, L/R/N)

(当前状态 qi , 扫描符号 Sj , 新状态 qm , 打印 Sk/擦除 E/none N , L/right R/none N)

其中qi,是当前状态,Sj是已扫描符号,Sk是打印符号,E是擦除,N是无状态,L是向左移动,R是向右,qm 是新状态。

文的其余部分将使用“定义1”(图灵/戴维斯规则)。

例子: 将3状态2符号“繁忙的海狸”简化为5元组

例子: 将3状态2符号“繁忙的海狸”简化为5元组

当前状态

扫描符号

打印符号

移动纸带

最终(即下一个)状态

5元组

A

0

1

R

B

(A, 0, 1, R, B)

A

1

1

L

C

(A, 1, 1, L, C)

B

0

1

L

A

(B, 0, 1, L, A)

B

1

1

R

B

(B, 1, 1, R, B)

C

0

1

L

B

(C, 0, 1, L, B)

C

1

1

N

H

(C, 1, 1, N, H)

在下表中,图灵的原始模型只允许前三行,他称之为N1, N2, N3(参见图灵书籍《The Undecidable》p.126)。他允许通过命名第0个S0="E"或"N",即“擦除”或者“空白”等。但是,他不允许“不打印”,所以每个指令行都包括“打印符号Sk”或者“擦除E”。这些缩写是图灵在1936-1937年的原始论文之后,机器模型已经允许所有九种可能的五元组类型。

当前的m配置(图灵状态)

纸带符号

打印

纸带运动

最终的M配置(图灵状态)

5元组

5元组注释

4元组

N1

qi

Sj

打印(Sk)

向左 L

qm

(qi, Sj, Sk, L, qm)

"blank" = S0, 1=S1, etc.

N2

qi

Sj

打印(Sk)

向右 R

qm

(qi, Sj, Sk, R, qm)

"blank" = S0, 1=S1, etc.

N3

qi

Sj

打印(Sk)

空 N

qm

(qi, Sj, Sk, N, qm)

"blank" = S0, 1=S1, etc.

(qi, Sj, Sk, qm)

4

qi

Sj

空 N

向左 L

qm

(qi, Sj, N, L, qm)

(qi, Sj, L, qm)

5

qi

Sj

空 N

向右 R

qm

(qi, Sj, N, R, qm)

(qi, Sj, R, qm)

6

qi

Sj

None N

None N

qm

(qi, Sj, N, N, qm)

Direct "jump"

(qi, Sj, N, qm)

7

qi

Sj

擦除

向左 L

qm

(qi, Sj, E, L, qm)

8

qi

Sj

擦除

向右 R

qm

(qi, Sj, E, R, qm)

9

qi

Sj

擦除

空 N

qm

(qi, Sj, E, N, qm)

(qi, Sj, E, qm)

任何图灵表(指令列表)都可以由上述九个5元组构成。由于技术原因,三个非打印或“N”指令(4、5、6)通常可以省去。

较少遇到使用4元组的情况:这些代表了图灵指令的进一步原子化(参见Post(1947),Boolos & Jeffrey(1974,1999),Davis-Sigal-Weyuker(1994));

状态

图灵机上下文中使用的“状态”一词可能会引起混淆,因为它可能意味着两件事。图灵之后的大多数研究者都使用“状态”来表示要执行的当前指令的名称/指示符——即状态寄存器的内容。但是图灵 (1936) 在他所谓的机器“m-配置”的记录和机器(或人)通过计算的“进展状态”——整个系统的当前状态——之间做出了强有力的区分。图灵所说的“状态公式”包括当前指令和纸带上的所有符号:

因此,任何阶段的计算进度状态完全由指令注释和纸带上的符号决定。也就是说,系统的状态可以由单个表达式(符号序列)来描述,该表达式由纸带上的符号后跟Δ(我们假设不会出现在其他地方)和指令注释组成。这个表达式被称为“状态公式”。——《The Undecidable》,图灵,p.139–140

更早时期,图灵在他的论文中进行了进一步的研究:他举了一个例子,在该示例中,他把当前“m-配置”的符号(指令的标签)和纸带上的所有符号一起放在扫描的方块下面(《The Undecidable》,第121页);他把这个称为“完整的配置”(《The Undecidable》,第118页)。为了将“完整配置”打印在一行,他将状态标签/m-配置放在扫描符号的左边。

在Kleene(1952)中可以看到这样的一个变体,Kleene展示了如何写出一台机器的“状态”的哥德尔数:他把“m-配置”符号q4放在磁带上6个非空白方格的大致中心的扫描方格上(见本文图灵-纸带图),并把它放在扫描方格的右边。但Kleene把“q4”本身称为“机器状态”(Kleene,第374-375页)。Hopcroft和Ullman把这种组合称为“瞬时描述”,并遵循图灵规定,把“当前状态”(指令标签,m-配置)放在扫描符号的左边(第149页)。

示例:3次“移动”后,三态2符号繁忙的海狸的总状态(取自下图中的示例“运行”):

1A1

这意味着:经过三次移动后,纸带上有......000110000......,读写头正在扫描最右边的1,状态为A。空白(在这种情况下用“0”表示)可以成为总状态的一部分,如图所示。B01;纸带上有一个“1”,但读写头正在扫描它左边的“0”(“空白”),状态是B。

图灵机情况中,应阐明“状态”是哪种状态。(i)当前指令,或(ii)纸带上的符号列表连同当前指令,或(iii)纸带上的符号列表连同当前指令放在扫描符号的左边或扫描符号的右边。

图灵的传记作者Andrew Hodges (1983:107)注意到并讨论了这种混淆。

图灵机的状态图

繁忙的海狸的表格("P" = 打印/写入 a "1")

纸带符号

当前状态A

当前状态B

当前状态C

写入符号

移动纸带

下一个状态

写入符号

移动纸带

下一个状态

写入符号

移动纸带

下一个状态

0

P

R

B

P

L

A

P

L

B

1

P

L

C

P

R

B

P

R

停机

“三态繁忙的海狸”图灵机的有限状态表示。每个圆圈代表表的一个“状态”——一个“m-配置”或“指令”。状态转换的"方向"用箭头表示。出状态附近的标签(如0/P,R)(在箭头的“尾部”)指定了引起特定转换的扫描符号(如0),后面是斜线/,接着是机器的后续“行为”,如“P打印”然后移动纸带“R向右”。没有普遍接受的格式存在。所显示的规则是以McClusky(1965)、Booth(1967)、Hill和Peterson(1974)为蓝本。

右边:上面的表格表示为“状态转换”图。

通常大的表格最好是留作表格(Booth,p.74)。它们更容易由计算机以表格形式模拟出来(Booth,p.74)。然而,某些概念,例如具有“复位”状态的机器和具有重复模式的机器(参见Hill和Peterson p.244)在被视为图纸时更容易被看到。

图纸是否代表了对其表的改进,必须由读者针对特定的情况来决定。详见有限状态机。

繁忙的海狸的计算进化从顶部开始,一直到底部。

再次提醒读者,这种图表示的是在时间上冻结的表的快照,而不是计算在时间和空间上的过程(“轨迹”)。虽然繁忙的海狸的机器每次“运行”都会遵循相同的状态轨迹,但对于可以为变量输入“参数”提供信息的“复制”机器而言,情况并非如此。

“计算进度 "图显示了三态繁忙的海狸从开始到结束的计算过程中的“状态”(指令)进度。最右边是每一步的图灵“完整配置”。如果机器停止并清空“状态寄存器”和整个纸带,则可以使用这些“配置”在其进行中的任何地方重新启动计算(参见Turing(1936)The Undecidable 第139– 140页)。

图灵机的等价模型

许多可能被认为比简单的通用图灵机有更多计算能力的机器,实际上并没有更多的能力(Hopcroft和Ullman p.159, cf. Minsky(1967))。它们可能计算得更快,或者使用更少的内存,或者它们的指令集可能更小,但是它们不能计算更多的数学函数。(邱奇-图灵理论假设这对任何机器都是正确的:任何可以被“计算”的东西都可以被某些图灵机器计算。)

图灵机相当于单堆栈下推自动机 Pushdown Automaton,PDA,它通过放宽其栈中的“后进先出”要求,使其更加灵活和简洁。此外,通过使用一个堆栈对读写头左侧的纸带进行建模,使用另一个堆栈对读写头右侧的磁带进行建模,图灵机也等效于具有标准“后进先出”语义的双堆栈PDA。

在另一个极端,一些非常简单的模型变成了图灵等价模型,即具有与图灵机模型相同的计算能力。

常见的等价模型是多带图灵机、多道图灵机、有输入和输出的机器,以及与确定型图灵机 Deterministic Turing Machine,DTM和非确定型图灵机 non-Deterministic Turing Machine,NDTM,后者的动作表对于每个符号和状态组合最多只有一个条目。

只读、右移动的图灵机相当于 DFAs(以及通过使用NDFA到DFA转换算法转换的NFA)。

对于实际的和教学的意图,等价的 寄存器机器可以作为通常的汇编编程语言使用。

一个有趣的问题是:用具体编程语言表示的计算模型是否是图灵等价的?虽然真实计算机的计算是基于有限状态的,因此无法模拟图灵机,但编程语言本身并不一定具有这种限制。Kirner等人在2009年的研究表明,在通用编程语言中,有些语言是图灵完备的,而有些则不是。例如,ANSI C并不等同于图灵机,因为ANSI C的所有实例(由于标准出于遗留的原因,故意不定义某些行为,所以可以有不同的实例)都意味着有限空间的内存。这是因为内存引用数据类型的大小,称为指针,可以在语言内部访问。然而,其他编程语言,如Pascal,则没有这个功能,这使得它们在原则上是图灵等价的。只是原则上是图灵等价的,因为编程语言中的内存分配是允许失败的,也就是说,当忽略失败的内存分配时,编程语言可以是图灵等价的,但在真实计算机上可执行的编译程序却不能。

选择C型机器、Oracle的O型机器

早在1936年的论文中,图灵就对“运动……完全由配置决定”的“自动机”和“选择机”进行了区分:

它的运动只是部分由配置决定……当这样一台机器达到其中一种不明确的配置时,它不能继续运行,直到外部操作者做出任意的选择。如果我们使用机器来处理公理系统,就会出现这种情况。——The Undecidable,p.118

图灵(1936)除了在脚注中描述了如何使用自动机来“找到所有希尔伯特微积分的可证明公式”,而不是使用选择机之外,没有做进一步的说明。他“假设选择总是在0和1之间。那么每个证明将由i1, i2, ..., in (i1 = 0 或 1, i2 = 0 或 1, ..., in = 0 或 1) 的选择序列决定,因此数字 2n + i12n-1 + i22n-2 + ... +in 完全决定了证明。自动机依次执行验证1、验证2、验证3,……”

这通过这种技术,一个确定型的(比如,a-)图灵机可以用来模拟一个非确定型的图灵机的行为; 图灵在脚注中解决了这个问题,似乎把它从进一步的考虑中剔除了。

Oracle机或o-machine是一种图灵机器,它将计算暂停在“o”状态,同时,为了完成计算,它“等待”“oracle”——一个未指定的实体(不是一台机器)的决定(The undecutable,p.166-168)。

通用图灵机

图灵机的实现

正如图灵在《The Undecidable》一书中所写,第128页:

我们可以发明一种机器,用来计算任何可计算序列。如果向机器U提供纸带,纸带的开头写着计算机M用分号隔开的五元数组,那么机器U将计算出与机器M相同的序列。

虽然这一发现现在被认为是很常见的,但在当时(1936年),很多人认为这是不可思议的。图灵称之为“通用机器”(缩写为“U”)的计算模型被一些人(参见Davis(2000))认为是产生存储程序计算机概念的基础理论的突破。

实质上包含了现代计算机的发明以及伴随着它的一些编程技术。——Minsky(1967),P.104

就计算复杂度而言,多带通用图灵机与它所模拟的机器相比,只需要慢上一个对数倍。这个结果是由F.C.Hennie和R.E.Stearns在1966年得到的。(Arora and Barak,2009,定理1.9)

与实际机器的比较

使用乐高积木实现的图灵机 Lego pieces

人们常说,图灵机不同于简单的自动机,它和实际的机器一样强大,能够执行真实程序所能执行的任何操作。在这种说法中被忽略的是,由于实际的机器只能有有限的配置,所以这里的“真正的机器”其实只是一个有限的状态机。另一方面,图灵机相当于拥有无限存储空间进行计算的机器。

有很多方法可以解释为什么图灵机是实际计算机的有用模型:

凡是真正的计算机能计算的东西,图灵机也能计算。例如,“图灵机可以模拟编程语言中的任何类型的子程序,包括递归程序和任何已知的参数传递机制”(Hopcroft and Ullman 第157页)。一个足够大的FSA也可以模拟任何真正的计算机,而不用考虑IO。因此,关于图灵机的局限性的说法也将适用于实际计算机。

区别只在于图灵机有能力处理无限制的数据量。然而,在有限的时间内,图灵机(像实际的机器)只能操纵处理的数据量。

像图灵机一样,实际的机器可以根据需要,通过获得更多的磁盘或其他存储介质,扩大其存储空间。

使用较简单的抽象模型对真机程序的描述往往比使用图灵机的描述要复杂得多。例如,描述算法的图灵机可能有几百个状态,而给定实际机器上的等效确定性有限自动机 deterministic finite automaton(DFA)却有四千亿个状态。这使得DFA的表示方式无法分析。

图灵机描述的算法与它们使用的内存多少无关。目前任何机器所拥有的内存都有一个极限,但这个极限可以在时间上任意上升。图灵机允许我们对算法做出声明,这些声明(理论上)将永远成立,而不考虑传统计算机架构的进步。

图灵机简化了算法的表述。在图灵机上运行的算法通常比在实际机器上运行的算法更通用,因为它们有任意精度的数据类型可用,而且永远不必处理意外情况(包括但不限于内存耗尽)。

图灵机的局限性

计算复杂性理论

图灵机的一个局限性在于,其不能很好地模拟特定排列的优势。例如,现代存储程序计算机实际上是一种更具体的抽象机器的实例,这种抽象机器被称为随机存取存储程序机器或 RASP机器模型。与通用图灵机一样,RASP将其“程序”存储在有限状态机的“指令”之外的“内存”中。与通用图灵机不同的是,RASP具有无限数量可区分的、有编号但无限制的“寄存器”——可以包含任何整数的内存“单元”(参见Elgot和Robinson(1964),Hartmanis(1971),特别是Cook-Rechow(1973));RASP的有限状态机可以间接寻址(例如,一个寄存器的内容可以用作另一个寄存器的地址),因此当图灵机被用作约束运行时间的基础时,可以证明某些算法的运行时间有一个“假下限”(由于图灵机的假简化假设)。这方面的一个例子是二进制搜索,当使用RASP计算模型而不是图灵机模型时,可以证明这种算法的运行速度更快。

并发性

图灵机的另一个局限是,其不能很好地模拟并发。例如,一个始终保持非确定性的图灵机在空白纸带上开始计算的整数大小是有限制的。相比之下,有一些没有输入的始终保持一致的并发系统,可以计算出无界大小的整数。(可以用本地存储创建一个初始化为0的进程,它同时向自己发送一个“停止”和一个“运行”的消息。当它收到一个“运行”信息时,它的计数增加1,并向自己发送一个去信息。当它收到一个“停止”消息时,它就停止,在它的本地存储区有一个无限制的数字)。

交互

在计算机的早期,计算机的使用通常仅限于批处理,即非交互式任务,每个任务从给定的输入数据中产生输出数据。可计算性理论研究从输入到输出的函数的可计算性,图灵机就是为此而发明的,其反映了这种做法。

自20世纪70年代以来,计算机的交互式使用变得更加普遍。原则上,可以通过让外部代理与图灵机同时从纸带中读出并写入纸带的方式进行建模,但这很少与交互的实际发生方式相吻合;因此,在描述交互性时,通常首选I/O自动机等替代程序。

历史

历史背景:计算机器

罗宾•甘迪 Robin Gandy,1919-1995,是图灵(1912-1954)的学生,也是他一生的朋友,他将“计算机器”这一概念的渊源追溯到查尔斯•巴贝奇 Charles Babbage(大约1834年),并提出了“巴贝奇论”:

整个发展和分析的操作现在都可以由机器来执行。(italics in Babbage as cited by Gandy, p.54)

甘迪对巴贝奇分析机的分析描述了以下五种操作:

算术函数+,-,×,其中“-”表示“适当的”减法,即满足某种条件,比如y≥x,x-y=0。

任何运算序列都是一个运算。

操作的迭代(重复n次操作p)。

条件迭代(以测试t的“成功”为条件重复n次操作p)。

条件转移(即有条件的“goto”)。

Gandy指出: “可由(1)、(2)和(4)计算出来的函数恰恰是那些图灵可计算的函数。”(p.53)。他引用了其他关于“通用计算机”的理论,包括珀西·卢德盖特 Percy Ludgate, 1909年、莱昂纳多·托雷斯·奎维多 Leonardo Torres y Quevedo,1914年、莫里斯·d’奥卡涅 Maurice d'Ocagne,1922年、路易斯·库夫尼纳尔 Louis Couffignal,1933年、万尼瓦尔·布什V annevar Bush,1936年、霍华德·艾肯 Howard Aiken,1937年。然而:

重点是对一个固定的可迭代的算术运算序列进行编程。条件性迭代和条件性转移对于计算机的一般理论的根本重要性没有得到承认……——Gandy,第55页

判定问题: 希尔伯特1900年提出的第10号问题

关于著名数学家大卫·希尔伯特 David Hilbert在1900年提出的希尔伯特问题中,第10号问题的一个方面浮动了近30年,才被准确地框定下来。希尔伯特对10号问题的原始表述如下:

10. Diophantine方程的可解性的确定。给出一个具有任意数量的未知量和有理积分系数的Diophantine方程。设计一个过程,根据这个过程可以在有限的操作中确定该方程是否可以用有理整数来解。当我们知道一个程序,允许任何给定的逻辑表达式通过有限的多次操作来决定其有效性或可满足性时,判定问题(一阶逻辑的决定问题)就解决了……判定问题必须被认为是数理逻辑的主要问题。——2008年,德尔肖维茨 Dershowitz和古列维奇 Gurevich引用了此译文和德文原文

到了1922年,“判定问题”的概念有了进一步的发展,Behmann指出:

判定问题的一般形式如下:需要一个相当明确的、普遍适用的处方,它将允许人们在有限的步骤中决定一个给定的纯逻辑论断的真假……——Gandy,第57页,引用Behmann的话

Behmann指出:一般问题相当于决定哪些数学命题是真的问题。如果能够解决判定问题,那么人们就会有一个“解决许多(甚至所有)数学问题的程序”。

1928年的国际数学家大会,希尔伯特把他的问题描述的非常的细致。第一,数学是完整的吗?第二,数学是一致的吗?第三,数学是可判定的吗?”1930年,在希尔伯特发表退休演讲的同一次会议上,库尔特·哥德尔 Kurt Gödel回答了前两个问题;而第三个问题(判定问题)不得不等到上世纪30年代中期。

问题在于,要回答这个问题,首先需要对“明确的通用规则”下一个精确定义。普林斯顿大学的教授阿朗佐•丘奇 Alonzo Church将其称为“有效可计算性”,而在1928年并不存在这样的定义。但在接下来的6-7年里,埃米尔•波斯特 Emil Post拓展了他的定义,即一个工人按照一张指令表从一个房间移动到另一个房间书写和擦除标记(1936),邱奇和他的两个学生Stephen Kleene和j.B. Rosser利用邱奇的λ微积分和哥德尔的递归理论也是如此。丘奇的论文(发表于1936年4月15日)表明,判定问题确实是“无法决策的”,比图灵早了将近一年(图灵的论文1936年5月28日提交,1937年1月发表)。与此同时,波斯特在1936年秋天提交了一篇短文,所以图灵至少比波斯特更有优先权。当丘奇评审图灵的论文时,图灵有时间研究丘奇的论文,并在附录中添加了一个草图,证明邱奇的λ微积分和他的机器可以计算同样的函数。

但邱奇所做的是完全不同的事情,而且在某种意义上是较差的。……图灵的构造更直接,并提供了最初原则的论据,从而弥补了邱奇证明中的空白。——Hodges,第112页

波斯特只是提出了一个可计算性的定义,并批评了邱奇的“定义”,但没有证明任何事情。

阿兰图灵的机器

1935年春天,图灵作为英国剑桥大学国王学院的一名年轻硕士生,接受了这个挑战;他受到逻辑学家纽曼 Newman的讲座的鼓舞,并从他们那里了解了哥德尔的工作和判定问题。在图灵1955年的讣告中,纽曼写道:

对于“什么是‘机械’过程”?图灵回答了一个特有的答案“可以由机器完成的事情”,接着他开始着手分析计算机的一般概念。——Gandy,第74页

Gandy表示:

我想,但我不知道,图灵从他工作的一开始,就把证明判定问题的不可解性作为他的目标。1935年夏天,他告诉我,当他躺在格兰切斯特草地的时候,他完成了这篇论文的构想。这个“构想”可能是他对计算的分析,也可能是他意识到有一个普遍的机器,因此有一个对角线论证来证明不可解性。——同上,第76页

尽管Gandy认为Newman的上述言论有“误导性”,但这一观点并不为所有人所认同。图灵一生都对机器有着浓厚的兴趣:“阿兰(图灵)从小就梦想发明打字机;(他的母亲)图灵夫人有一台打字机;他很可能一开始就问自己,把打字机称为‘机械的’是什么意思”(Hodges p.96)。在普林斯顿攻读博士学位时,图灵制造了一个布尔逻辑乘法器(见下文)。他的博士论文题为“基于序数的逻辑系统”,包含了“可计算函数”的定义:

上面说过,“如果一个函数的值可以通过某种纯粹的机械过程找到,那么它就是有效的可计算的”。我们可以从字面上理解这句话,用纯粹的机械过程来理解可以由机器来完成的过程。我们有可能以某种正常形式对这些机器的结构进行数学描述。这些想法的发展导致了作者对可计算函数的定义,以及对可计算性与有效可计算性的认同。要证明这三个定义(第三个是λ-微积分)是等价的并不困难,虽然有些麻烦。——图灵(1939)在《The Undecidable》一书中,第160页

当图灵回到英国后,他负责破解名为“英格玛”的加密机创造的德国密码;他还参与了ACE(自动计算引擎)的设计。“图灵的ACE建议实际上是自成一体的,其根源不在于EDVAC(美国的倡议),而在于他自己的通用机器”(Hodges p.318)。关于被Kleene(1952年)命名为 “图灵论文”的起源和性质的争论仍在继续。但是,图灵用他的计算机模型所证明的东西出现在他的论文中“关于可计算数及其在Entscheidungs型问题中的应用”。

希尔伯特-判定问题不可能有解……因此我建议,不可能有一个一般的过程来确定函数微积分K的一个给定公式U是否可证明,也就是说,不可能有一台机器在提供任何一个公式U的情况下,最终会说出U是否可证明。——摘自图灵的论文,详见《The Undecidable》,第145页

图灵的例子(他的第二个证明):如果有人要求用一般程序来告诉我们:“这台机器是否曾经打印过0”,这个问题就是“无法确定的”。

1937-1970“数字计算机”“计算机科学”的诞生

1937年,图灵在普林斯顿大学写博士论文时,从零开始建立了一个数字(布尔逻辑)乘法器,自制了机电继电器(Hodges p.138)。“艾伦的任务是将图灵机的逻辑设计体现在一个由继电器操作的开关网络中……”(Hodges p.138)。德国(Konrad Zuse,1938年)和美国(Howard Aiken,1937年)都在朝着同一个方向努力,他们的劳动成果被轴心国和盟国的军队在二战中使用。在20世纪50年代初至中期,Hao Wang和Marvin Minsky将图灵机简化为一种更简单的形式(它是 Martin Davis的后图灵机的前身);与此同时,欧洲研究人员将这种新型电子计算机简化为一种类似于计算机的理论物体,相当于现在所说的“图灵机”。在20世纪50年代后期和60年代初期,Melzak和Lambek(1961)、Minsky(1961)和Shepherdson and Sturgis(1961)等人不约而同地展开进一步的研究,推进了欧洲的工作,并将图灵机简化为一个更友好的、类似计算机的抽象模型,称为计数器;Elgot和Robinson(1964)、 Hartmanis(1971)、Cook 和 Reckhow(1973)将这项工作进一步推进到寄存器和随机存取机器模型——但基本上所有这些都只是带有类似算术指令集的多带图灵机。

1970年至今:作为计算模型的图灵机

如今,计数器、寄存器和随机存取机以及它们的先驱图灵机仍然是理论家们研究计算理论问题的首选模型。特别是,计算复杂性理论也使用了图灵机。

根据人们在计算中喜欢操作的对象(非负整数或字母数字串等),有两种模型在基于机器的复杂性理论中获得了主导地位:

离线多带图灵机——它代表了面向字符串计算的标准模型,以及Cook和Reckhow提出的随机存取机(RAM) ,它是理想化的冯诺依曼式计算机的模型。——van Emde Boas 1990:4

只有在算法分析的相关领域,这个角色才能被RAM模型所取代。——van Emde Boas 1990:4

另参见

算术层次结构

贝肯斯坦约束,表明不可能出现有限大小和有限能量的无限带图灵机。

BlooP 和 FlooP(这是两种编程语言)

繁忙的海狸

Chaitin常数或Omega(计算机科学)以获取有关停止问题的信息。

中文房间

康威生命游戏,一个图灵完备的细胞自动机

数字无限

皇帝的新脑

枚举器(理论计算机科学)

遗传

哥德尔、艾舍尔、巴赫——集异璧之大成,这是一本讨论邱奇-图灵论等话题的名著。

停机问题

哈佛结构

命令式编程

朗顿蚂蚁和白蚁,图灵机的二维模型

修正后的哈佛结构

概率图灵机

随机存取图灵机

量子图灵机

香农,另一位信息理论的领军科学家

图灵机实例

调协开关

图灵图谱,任何计算系统或语言,尽管是图灵完备的,但通常被认为对实际计算无用。

无组织的机器,图灵关于神经网络的早期想法

冯-诺依曼结构

笔记

↑ Occasionally called an action table or transition function.

↑ Usually quintuples [5-tuples]: qiaj→qi1aj1dk, but sometimes quadruples [4-tuples].

参考文献

原始文献、重印和汇编

B. Jack Copeland (ed.)(2004), The Essential Turing: Seminal Writings in Computing, Logic, Philosophy, Artificial Intelligence, and Artificial Life plus The Secrets of Enigma, Clarendon Press (Oxford University Press), Oxford UK. Contains the Turing papers plus a draft letter to Emil Post re his criticism of "Turing's convention", and Donald W. Davies' Corrections to Turing's Universal Computing Machine

Martin Davis (mathematician)|Martin Davis (ed.) (1965), The Undecidable, Raven Press, Hewlett, NY.

Emil Post (1936), "Finite Combinatory Processes—Formulation 1", Journal of Symbolic Logic, 1, 103–105, 1936. Reprinted in The Undecidable, pp. 289ff.

Emil Post (1947), "Recursive Unsolvability of a Problem of Thue", Journal of Symbolic Logic, vol. 12, pp. 1–11. Reprinted in The Undecidable, pp. 293ff. In the Appendix of this paper Post comments on and gives corrections to Turing's paper of 1936–1937. In particular see the footnotes 11 with corrections to the universal computing machine coding and footnote 14 with comments on Turing's proof|Turing's first and second proofs.

Turing, A.M. (1936). "On Computable Numbers, with an Application to the Entscheidungsproblem". Proceedings of the London Mathematical Society. 2 (published 1937). 42: 230–265. doi:10.1112/plms/s2-42.1.230. (and Turing, A.M. (1938). "On Computable Numbers, with an Application to the Entscheidungsproblem: A correction". Proceedings of the London Mathematical Society. 2 (published 1937). 43 (6): 544–6. doi:10.1112/plms/s2-43.6.544.). Reprinted in many collections, e.g. in The Undecidable, pp. 115–154; available on the web in many places.

Alan Turing, 1948, "Intelligent Machinery." Reprinted in "Cybernetics: Key Papers." Ed. C.R. Evans and A.D.J. Robertson. Baltimore: University Park Press, 1968. p. 31. Reprinted in Turing, A. M. (1996). "Intelligent Machinery, A Heretical Theory". Philosophia Mathematica. 4 (3): 256–260. doi:10.1093/philmat/4.3.256.

F. C. Hennie and R. E. Stearns. Two-tape simulation of multitape Turing machines. JACM, 13(4):533–546, 1966.

可计算性理论

Boolos, George; Richard Jeffrey (1999) [1989]. Computability and Logic (3rd ed.). Cambridge UK: Cambridge University Press. ISBN 0-521-20402-X. https://archive.org/details/computabilitylog0000bool_r8y9. 

Boolos, George; John Burgess; Richard Jeffrey (2002). Computability and Logic (4th ed.). Cambridge UK: Cambridge University Press. ISBN 0-521-00758-5.  Some parts have been significantly rewritten by Burgess. Presentation of Turing machines in context of Lambek "abacus machines" (cf. Register machine) and Computable function|recursive functions, showing their equivalence.

Taylor L. Booth (1967), Sequential Machines and Automata Theory, John Wiley and Sons, Inc., New York. Graduate level engineering text; ranges over a wide variety of topics, Chapter IX Turing Machines includes some recursion theory.

Martin Davis (1958). Computability and Unsolvability. McGraw-Hill Book Company, Inc, New York.  On pages 12–20 he gives examples of 5-tuple tables for Addition, The Successor Function, Subtraction (x ≥ y), Proper Subtraction (0 if x < y), The Identity Function and various identity functions, and Multiplication.

Davis, Martin; Ron Sigal; Elaine J. Weyuker (1994). Computability, Complexity, and Languages and Logic: Fundamentals of Theoretical Computer Science (2nd ed.). San Diego: Academic Press, Harcourt, Brace & Company. ISBN 0-12-206382-1. 

Hennie, Fredrick (1977). Introduction to Computability. Addison–Wesley, Reading, Mass. QA248.5H4 1977. . On pages 90–103 Hennie discusses the UTM with examples and flow-charts, but no actual 'code'.

John Hopcroft and Jeffrey Ullman (1979). Introduction to Automata Theory, Languages, and Computation (1st ed.). Addison–Wesley, Reading Mass. ISBN 0-201-02988-X.  Centered around the issues of machine-interpretation of "languages", NP-completeness, etc.

Hopcroft, John E.; Rajeev Motwani; Jeffrey D. Ullman (2001). Introduction to Automata Theory, Languages, and Computation (2nd ed.). Reading Mass: Addison–Wesley. ISBN 0-201-44124-1.  Distinctly different and less intimidating than the first edition.

Stephen Kleene (1952), Introduction to Metamathematics, North–Holland Publishing Company, Amsterdam Netherlands, 10th impression (with corrections of 6th reprint 1971). Graduate level text; most of Chapter XIII Computable functions is on Turing machine proofs of computability of recursive functions, etc.

Knuth, Donald E. (1973). Volume 1/Fundamental Algorithms: The Art of computer Programming (2nd ed.). Reading, Mass.: Addison–Wesley Publishing Company. . With reference to the role of Turing machines in the development of computation (both hardware and software) see 1.4.5 History and Bibliography pp. 225ff and 2.6 History and Bibliographypp. 456ff.

Zohar Manna, 1974, Mathematical Theory of Computation. Reprinted, Dover, 2003.

Marvin Minsky, Computation: Finite and Infinite Machines, Prentice–Hall, Inc., N.J., 1967. See Chapter 8, Section 8.2 "Unsolvability of the Halting Problem." Excellent, i.e. relatively readable, sometimes funny.

Christos Papadimitriou (1993). Computational Complexity (1st ed.). Addison Wesley. ISBN 0-201-53082-1.  Chapter 2: Turing machines, pp. 19–56.

Hartley Rogers, Jr.Theory of Recursive Functions and Effective Computability, The MIT Press, Cambridge MA, paperback edition 1987, original McGraw-Hill edition 1967 (pbk.)

Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. https://archive.org/details/introductiontoth00sips.  Chapter 3: The Church–Turing Thesis, pp. 125–149.

Stone, Harold S. (1972). Introduction to Computer Organization and Data Structures (1st ed.). New York: McGraw–Hill Book Company. ISBN 0-07-061726-0. 

Peter van Emde Boas 1990, Machine Models and Simulations, pp. 3–66, in Jan van Leeuwen, ed., Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity, The MIT Press/Elsevier (Volume A). QA76.H279 1990. Valuable survey, with 141 references.

丘奇的论文

Nachum Dershowitz; Yuri Gurevich (September 2008). "A natural axiomatization of computability and proof of Church's Thesis" (PDF). Bulletin of Symbolic Logic. 14 (3). Retrieved 2008-10-15.

Roger Penrose (1990) [1989]. The Emperor's New Mind (2nd ed.). Oxford University Press, New York. 

小型图灵机

Rogozhin, Yurii, 1998, "A Universal Turing Machine with 22 States and 2 Symbols", Romanian Journal of Information Science and Technology, 1(3), 259–265, 1998. (surveys known results about small universal Turing machines)

Stephen Wolfram, 2002, A New Kind of Science, Wolfram Media.

Brunfiel, Geoff, Student snags maths prize, Nature, October 24. 2007.

Jim Giles (2007), Simplest 'universal computer' wins student $25,000, New Scientist, October 24, 2007.

Alex Smith, Universality of Wolfram’s 2, 3 Turing Machine, Submission for the Wolfram 2, 3 Turing Machine Research Prize.

Vaughan Pratt, 2007, "Simple Turing machines, Universality, Encodings, etc.", FOM email list. October 29, 2007.

Martin Davis, 2007, "Smallest universal machine", and Definition of universal Turing machine FOM email list. October 26–27, 2007.

Alasdair Urquhart, 2007 "Smallest universal machine", FOM email list. October 26, 2007.

Hector Zenil (Wolfram Research), 2007 "smallest universal machine", FOM email list. October 29, 2007.

Todd Rowland, 2007, "Confusion on FOM", Wolfram Science message board, October 30, 2007.

Olivier and Marc RAYNAUD, 2014, A programmable prototype to achieve Turing machines" LIMOS Laboratory of Blaise Pascal University (Clermont-Ferrand in France).

其他

Martin Davis (2000). Engines of Logic: Mathematicians and the origin of the Computer (1st ed.). W. W. Norton & Company, New York. 

Robin Gandy, "The Confluence of Ideas in 1936", pp. 51–102 in Rolf Herken, see below.

Stephen Hawking (editor), 2005, God Created the Integers: The Mathematical Breakthroughs that Changed History, Running Press, Philadelphia. Includes Turing's 1936–1937 paper, with brief commentary and biography of Turing as written by Hawking.

Rolf Herken (1995). The Universal Turing Machine—A Half-Century Survey. Springer Verlag. ISBN 978-3-211-82637-9. 

Andrew Hodges, Alan Turing: The Enigma, Simon and Schuster, New York. Cf. Chapter "The Spirit of Truth" for a history leading to, and a discussion of, his proof.

Ivars Peterson (1988). The Mathematical Tourist: Snapshots of Modern Mathematics (1st ed.). W. H. Freeman and Company, New York. https://archive.org/details/mathematicaltour00pete. 

Roger Penrose, The Emperor's New Mind: Concerning Computers, Minds, and the Laws of Physics, Oxford University Press, Oxford and New York, 1989 (1990 corrections).

Paul Strathern (1997). Turing and the Computer—The Big Idea. Anchor Books/Doubleday. ISBN 978-0-385-49243-0. https://archive.org/details/turingcomputer00stra. 

Hao Wang (academic)|Hao Wang, "A variant to Turing's theory of computing machines", Journal of the Association for Computing Machinery (JACM) 4, 63–92 (1957).

Charles Petzold, Petzold, Charles, The Annotated Turing, John Wiley & Sons, Inc.

Arora, Sanjeev; Barak, Boaz, "Complexity Theory: A Modern Approach", Cambridge University Press, 2009, section 1.4, "Machines as strings and the universal Turing machine" and 1.7, "Proof of theorem 1.9"

Kantorovitz, Isaiah Pinchas (December 1, 2005). "A note on turing machine computability of rule driven systems". SIGACT News. 36 (4): 109–110. doi:10.1145/1107523.1107525.

Kirner, Raimund; Zimmermann, Wolf; Richter, Dirk: "On Undecidability Results of Real Programming Languages", In 15. Kolloquium Programmiersprachen und Grundlagen der Programmierung (KPS'09), Maria Taferl, Austria, Oct. 2009.

外部链接

Turing Machine in the Stanford Encyclopedia of Philosophy

Turing Machine Causal Networks by Enrique Zeleny as part of the Wolfram Demonstrations Project.

编者推荐

集智文章推荐

神经网络与图灵机的复杂度博弈

1931年,天才数学家图灵提出了著名的图灵机模型,它奠定了人工智能的数学基础。1943年,麦克洛克 & 皮茨(McCulloch & Pitts)两人提出了著名的人工神经元模型,该模型一直沿用至今,它奠定了所有深度学习模型的基础。那么,这两个开山之作究竟是怎样一种相爱相杀的关系呢?天才数学家冯诺依曼指出,图灵机和神经元本质上虽然彼此等价,我们可以用图灵机模拟神经元,也可以用神经元模拟图灵机,但是它们却位于复杂度王国中的不同领地。神经网络代表了一大类擅长并行计算的复杂系统,它们自身的结构就构成了对自己最简洁的编码;而图灵机则代表了另一类以穿行方式计算的复杂系统,这些系统以通用图灵机作为复杂度的分水岭:一边,系统的行为可以被更短的代码描述;另一边,我们却无法绕过复杂度的沟壑。而先进的深度学习研究正在试图将这两类系统合成为一个:神经图灵机。

课程推荐

图灵机

本课程将围绕图灵机,详细介绍图灵机的定义、图灵机的计算、图灵机框架的模拟、通用图灵机、以及图灵停机问题,说明算法的上界。

人工智能2020

本课程为北京师范大学系统科学学院张江教授开设的研究生课程《人工智能》课程回放。课程偏重理论,辅以编程实践,将粗粒度的梳理人工智能重要的理念、算法、模型。前面会包含一些人工智能之前的理论计算机模型,图灵机等,后面系统从两方面讲解,一是符号派的人工智能,包括搜索、推理、表示等;二是连接派的人工智能,机器学习,强调理论机器学习基础。

文章推荐

分子计算:通向化学图灵机的途径。

为了顺应快速增长的信息存储和处理需求,需要新的计算策略。分子计算的想法(即通过分子、超分子或生物分子方法进行基本计算,而不是通过电子方法)长期以来一直吸引着研究人员。使用分子和(生物)大分子进行计算的前景并非没有先例。自然中充满了以高效率、低能量成本和高密度信息编码来处理和存储数据的示例。根据通用计算方法运行的计算机的设计和组装,例如图灵机中的计算机,未来可能会以化学的方式实现。从这个角度来看,本文章重点介绍了到目前为止已经设计和合成的分子和(生物)大分子系统,目的是将它们用于计算目的;还提出了分子图灵机的蓝图,它基于一个催化装置,它沿着聚合物带滑动,在移动时,以氧原子的形式在这条带上打印二进制信息。

生成缩略图出错:无法找到文件

使用图灵机的图灵模式:出现和低层次结构形成。

尽管阿兰·图灵(Alan Turing)在1952年发表的关于形态发生的论文中提出了常微分方程的反应扩散模型,反映了他对数学生物学的兴趣,但他从未被认为接近过细胞自动机的定义。然而,他对形态发生的处理,特别是他发现的与对称破缺导致的某些形式的不均匀分布有关的困难,是将他的普遍计算理论与他的生物模式形成理论联系起来的关键。建立这样的联系并不能克服图灵所担心的特殊困难,无论如何,这个问题已经在生物学上得到了解决。但相反,这里开发的方法抓住了图灵最初关心的问题,并通过算法概率的概念为更一般的问题提供了一个低级解决方案,从而将图灵模式形成和通用计算这两个他对科学最重要的贡献联系在了一起。本文将展示使用此方法的一维模式的实验结果,而不会损失对n维模式泛化的一般性。

本中文词条由Moonscar、Solitude、Langenfeng、Swarma编译,AvecSally、ZQ审校,SyouTK编辑,如有问题,欢迎在讨论页面留言。

本词条内容源自wikipedia及公开资料,遵守 CC3.0协议。

取自“https://wiki.swarma.org/index.php?title=图灵机&oldid=26111”

分类:理论计算机科学计算模型可计算性理论

导航菜单

个人工具

登录

名字空间

页面讨论

变种

视图

阅读查看源代码查看历史

更多

搜索

导航

集智百科集智主页集智斑图集智学园最近更改所有页面帮助

工具

链入页面相关更改特殊页面可打印版本固定链接页面信息

此页面最后编辑于2021年8月22日 (星期日) 23:00。

此页面已被访问过32,432次。

除非另有声明,本网站内容采用知识共享署名-相同方式共享授权。

隐私政策

关于集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织

免责声明

手机版视图

都听过图灵机,它的灵感来自哪儿? | 果壳 科技有意思

都听过图灵机,它的灵感来自哪儿? | 果壳 科技有意思

首页科学人物种日历吃货研究所美丽也是技术活秦曾昌科技数学1666字需用时 03:19都听过图灵机,它的灵感来自哪儿? 秦曾昌人类,从来都不缺计算工具。

从中国的算筹、算盘,到西方帕斯卡、莱布尼兹等制造的计算器,这些古老的计算工具虽然能够进行加减乘除、乘方以及开方运算,在当时大大地加快了人们的运算速度,但与我们今天所理解的计算机相去甚远——这些古老的计算器,往往只能完成某一项特定任务;而今天,在计算机上只要点开不同的程序,就能完成各种不同的任务。

这种能解决各式各样问题的计算机,都属于图灵机。

什么是图灵机?

图灵机是图灵在他24岁发表的论文(《论可计算数及其在判定问题中的应用》)中提出的一种抽象模型。这种当时只存在于想象中的机器由一个控制器、一个读写头和一根无限长的工作带组成的。纸带起着存储的作用;读写头能够读取纸带上的信息,以及将运算结果写进纸带;控制器则负责对搜集到的信息进行处理。

一个图灵机的示意装置。图片来源:GabrielF|wikipedia

图灵机的结构看起来非常简单,但事实上,它与算盘之类的古老计算器有本质的区别:如果在控制器中输入不同的程序,它就能够处理不同的任务。这意味着,图灵机实际上是一种“通用计算机”。

虽然图灵机因图灵而得名,但给予图灵灵感的却很可能是著名的“失败”发明家查尔斯·巴贝奇。

“失败”的发明家巴贝奇

查尔斯巴贝奇(1791-1871)对数学和机械都有着极高天赋,他在18岁时以优异的成绩考入剑桥大学。在大学期间,巴贝奇注意到了一个现象:当时欧洲的数学用表存在大量的错误。一项普查发现,在40本数表中,有3700个错误,而且大部分是由于手工计算和印刷造成的。这让巴贝奇难以接受,他认为如果能用一台机器代替人工计算同时自动打印出数表,那么这些问题就可以得到解决。而这台机器,就是著名的“差分机”。

图片来源:wikimedia

当然,要制造这样一台机器需要巨大的资金来源,巴贝奇开始向政府寻求帮助。在政府看来,当时数学用表的错误确实给航运以及建筑业带来了极大的不便,如果巴贝奇的“差分机”能够成功,将会减少船只触礁以及房屋桥梁倒塌事故的发生,因此有意愿资助他。

于是,在政府的支持下,巴贝奇完成了能够进行4级拆分的差分机。这台差分机的运算速度之快和错误率之低已经远远领先于当时手工计算水平。

“差分机”的成功研制,让巴贝奇备受鼓舞。他打算继续研制精度更高、运算速度更快的“差分机2号”。也是在研制“差分机2号”的时候,巴贝奇开始构想另一种结构更简单,功能更全面的机器——分析机。“分析机”有一种被称为“孔卡”的结构,给“孔卡”编写不同的程序,就可以让分析机解决不同种类的问题。这一构想其实与图灵机的“控制器”异曲同工。

巴贝奇的分析机(部分测试版)。1833年,一位不满18岁的女孩被“分析机”的构想深深吸引(这个女孩便是历史上第一位程序员爱达,Ada Augusta Byron)。1842年,爱达热心地将一位意大利数学家发表的阐释巴贝奇分析机原理和性能的文章翻译成英文,并且在备注中,写下了一段程序,这段程序,被认为是第一段计算机程序。图片来源:Bruno Barral|Wikipedia

可惜的是,巴贝奇输给了时代。巴贝奇的概念太过超前,以至于当时的人们无法验证他的猜想,也无法建造出他理想中的机器(直到二十世纪末,人们才按照巴贝奇的设计造出了“差分机2号”)。

巴贝奇至死都没有见到“差分机2号”和“分析机”问世。而当时英国政府向巴贝奇资助的1.7万英镑,最终也打了水漂。这让不少人认为巴贝奇是个失败者,他的“分析机”构想也没有再引起人们的关注。

图灵机的诞生

直到近一个世纪后,大名鼎鼎的图灵提出了一种能模拟人类进行数学计算过程的机器,图灵称之为A-machine,也就是我们所熟知的图灵机。A-machine很大程度上模仿了人类处理问题的过程:它拥有一个类似于人眼和手的读写头能够读取信息以及输出信息;一条无限长的纸带,源源不断地提供信息以及供输出结果; 一个类似于我们大脑的控制器,能够根据问题不同,进行不同的处理。

理论上来说,任何能够用数学解决的问题都能交由图灵机来处理,这一构想与巴贝奇所追求的“完全由机器来分析和处理问题”十分一致。图灵的学生以及合作者罗宾·甘迪,也发现了巴贝奇分析机的理论中有不少与图灵机理论异曲同工之处,因此推测分析机是图灵机的灵感来源。

阿兰·图灵。图片来源:turingarchive.org

相较于巴贝奇,图灵是幸运的。他的理论在接下来的十几年时间里便得到了验证,并逐渐发展成为我们今天的计算机。

自图灵机模型提出以来,至今已经历了八十年时间。人们对图灵机模型进行拓展,诞生了一批改进版的图灵机,如双向无限带图灵机、多头图灵机、非确定型图灵机、多维图灵机等。但这些模型,仅是对运算速度等进行了提升,并没有提出超越图灵机的新模型。超越图灵机的伟大构想,说不定已经在酝酿中。

可以肯定的是,超越图灵机的全新计算机,必将给人工智能技术带来一次巨大的飞跃。(编辑:婉珺)The End发布于2018-06-11, 本文版权属于果壳网(guokr.com),禁止转载。如有需要,请联系果壳。举报这篇文章秦曾昌北京航空航天大学副教授,果壳网科学顾问田达玮中科院海洋研究所硕士,未来实验室科普策划科技有意思 · 果壳走着瞧关于果壳联系我们电话+86 010-85805342邮箱service@guokr.com更多联系方式关注我们©果壳网·京ICP备09043258号·京网文[2018] 6282-492号·新出发京零字第朝200003号·京公网安备11010502007133号违法和不良信息举报邮箱:jubao@guokr.com·举报电话:17310593603·网上有害信息举报专区·未成年人专项举报邮箱未成年人专项举报热线:15313123670·萃取-pensieve