计算机基础知识-第5章-图灵机

 

format,png

一、图灵-计算机科学之父

首先我们来好好认识一下图灵这位神仙吧。当然,这些都是从百度百科上找的。

 

format,png

图灵全名艾伦-麦席森-图灵。图灵1912年6月23日生于英国伦敦,少年时就表现出独特的直觉创造能力和对数学的爱好。

1931年,图灵考入剑桥大学国王学院。1935年,他的第一篇数学论文“左右殆周期性的等价”发表于《伦敦数学会杂志》上。同一年,他还写出“论高斯误差函数”一文。这一论文使他由一名大学生直接当选为国王学院的研究员,并于次年荣获英国著名的史密斯(Smith)数学奖,成为国王学院声名显赫的毕业生之一。1936年5月,图灵向伦敦权威的数学杂志投了一篇论文,题为《论数字计算在决断难题中的应用》。该文于1937年在《伦敦数学会文集》第42期上发表后,立即引起广泛的注意。在论文的附录里他描述了一种可以辅助数学研究的机器,后来被人称为“图灵机”,这个设想最有变革意义的地方在于,它第一次在纯数学的符号逻辑和实体世界之间建立了联系,后来我们所熟知的电脑以及还没有实现的“人工智能”,都基于这个设想。这是他人生第一篇重要论文,也是他的成名之作。1938年夏,图灵回到英国,仍在剑桥大学国王学院任研究员,继续研究数理逻辑和计算理论,同时开始了计算机的研制工作。

第二次世界大战打断了图灵的正常研究工作。1939年秋,他应召到英国外交部通信处从事军事工作,主要是破译敌方密码。由于破译工作的需要,他参与了世界上最早的电子计算机的研制工作。1945年,图灵结束了在外交部的工作,他试图恢复战前在理论计算机科学方面的研究,并结合战时的工作,具体研制出新的计算机。这一想法得到当局的支持。同年,图灵被录用为泰丁顿(Teddington)国家物理研究所的研究人员,开始从事“自动计算机”(ACE)的逻辑设计和具体研制工作。这一年,图灵写出一份长达50页的关于ACE的设计说明书。这一说明书在保密了27年之后,于1972年正式发表。在图灵的设计思想指导下,1950年制出了ACE样机,1958年制成大型ACE机。人们认为,通用计算机的概念就是图灵提出来的。1950年,图灵编写并出版了《曼彻斯特电子计算机程序员手册》(The programmers’handbook for the Manchester electronic computer)。这期间,他继续进行数理逻辑方面的理论研究。并提出了著名的“图灵测试”。同年,他提出关于机器思维的问题,他的论文“计算机和智能”(Computingmachiery and intelligence),引起了广泛的注意和深远的影响。1950年10月,图灵发表论文《机器能思考吗?》。这一划时代的作品,使图灵赢得了“人工智能之父”的桂冠。1952年,图灵写了一个国际象棋程序。可是,当时没有一台计算机有足够的运算能力去执行这个程序,他就模仿计算机,每走一步要用半小时。他与一位同事下了一盘,结果程序输了。后来美国新墨西哥州洛斯阿拉莫斯国家实验室的研究群根据图灵的理论,在MANIAC上设计出世界上第一个电脑程序的象棋。

现代计算机之父冯·诺依曼(还记得这个人吗?第一章讲过的呀)生前曾多次谦虚地说,如果不考虑查尔斯·巴贝奇等人早先提出的有关思想,现代计算机的概念当属于艾伦·图灵。冯·诺依曼能把“计算机之父”的桂冠戴在比自己小10岁的图灵头上,足见图灵对计算机科学影响之巨大。

1952年,图灵的同性伴侣协同一名同谋一起闯进了图灵的房子实施盗窃。图灵为此而报警。但是警方的调查结果使得他被控以“明显的猥亵和性颠倒行为”(同性恋)。他没有申辩,并被定罪。在著名的公审后,他被给予了两个选择:坐牢或荷尔蒙疗法。他选择了荷尔蒙注射,并持续了一年。在这段时间里,药物产生了包括乳房不断发育的副作用。1954年6月7日,图灵被发现死于家中的床上,床头还放着一个被咬了一口的泡过氰化物的苹果。 警方调查后认为是剧毒的氰化物中毒,调查结论为自杀。 当时图灵41岁。2009年,英国计算机科学家康明(John Graham-Cumming)发起了为图灵平反的在线请愿,截止到2009年9月10日请愿签名人数已经超过了3万,为此,当时的英国政府及首相戈登布朗不得不发表正式的道歉声明。2012年12月,霍金、纳斯(Paul Nurse,诺贝尔医学奖得主)、里斯(Martin Rees,英国皇家学会会长)等11位重要人士致函英国首相卡梅伦,要求为其平反。2013年12月24日,在英国司法大臣克里斯・格雷灵(Chris Grayling)的要求下,英国女王终于向图灵颁发了皇家赦免。英国司法部长宣布,“图灵的晚年生活因为其同性取向而被迫蒙上了一层阴影,我们认为当时的判决是不公的,这种歧视现象如今也已经遭到了废除。为此,女王决定为这位伟人送上赦免,以此向其致敬。”

 

format,png

下面是彩虹旗(lgbtq的象征),后面是图灵。可悲的是,图灵死于同性恋,但几十年后的英国,现在同性恋如此普遍,大英腐国不是白叫的。苹果的乔布斯也很崇拜图灵,苹果logo少了一口,有人说是亚当夏娃那个苹果,但实际上是图灵自杀吃的那个苹果,向图灵致敬。

 

format,png

2014年的电影《模仿游戏》讲述了“计算机科学之父”艾伦·图灵的传奇人生,故事主要聚焦于图灵协助盟军破译德国密码系统“英格玛”,从而扭转二战战局的经历。

二、图灵测试

图灵测试和图灵机没关系,但既然说到了图灵,就不得不说图灵测试。以后出去跟程序员聊天,一说到图灵,最最基本两件事——图灵测试和图灵机。

图灵测试指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果机器让平均每个参与者做出超过30%的误判,那么这台机器就通过了测试,并被认为具有人类智能。其中30%是图灵对2000年时的机器思考能力的一个预测,我们已远远落后于这个预测。

 

format,png

简单的说就是把电脑和人关在两个屋里,外面的人通过一些与人或机器无关的方式(比如通过键盘打字,要是直接问,那人的语音语调,表情等等肯定会有影响)进行提问,人和机器也使用这种方式给出相应答案,如果提问者分不出谁是谁,那就说这个机器通过了图灵测试,具有智能。当然也有前提,比如人是正常人,能正常回答问题。图灵测试原理很简单,没有任何复杂的算法或者其他的评估,也是最真实的智能水平反映,但就目前还是做不到。

图灵测试问世后一直没有机器能够通过,直到2014年6月7日,在英国皇家学会举行的2014图灵大会上,聊天程序“尤金·古斯特曼”冒充一个13岁乌克兰男孩,回答了评委一系列问题后,有33%的评委被其骗过。至此,沉寂了半个多世纪的图灵测试,终于首次有人工智能通过了。

图灵测试其实指的是强人工智能。人工智能分为强人工智能和弱人工智能,弱人工智能指的是某一个很窄的方面的,比如识图、下棋、写诗作画等,强人工智能指的是在更多方面,在更高层面上模仿人类,比如不限制领域的对话,比如真实环境下人的反应等。目前中国和世界的水平是一样的,强人工智能很弱,弱人工智能很强。

三、图灵机

好啦,回到本章的主题——图灵机。要是能完全理解图灵机,就能更好的理解后面的编程。

 

format,png

图灵机,又称图灵计算机指一个抽象的机器,一种抽象的计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。 只要图灵机可以被实现,就可以用于解决任何可计算问题。

一台图灵机是一个七元组,{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) 将以如下方式运作:

开始的时候将输入符号串 从左到右依此填在纸带的第n号格子上, 其他格子保持空白(即填以空白符)。M 的读写头指向第 0 号格子, M 处于状态 q0。机器开始运行后,按照转移函数 δ 所描述的规则进行计算。例如,若当前机器的状态为 q,读写头所指的格子中的符号为 x,设 δ(q,x)= (q',x',L), 则机器进入新状态 q', 将读写头所指的格子中的符号改为 x', 然后将读写头向左移动一个格子。若在某一时刻,读写头所指的是第 0 号格子, 但根据转移函数它下一步将继续向左移,这时它停在原地不动。换句话说,读写头始终不移出纸带的左边界。若在某个时刻 M 根据转移函数进入了状态 qaccept, 则它立刻停机并接受输入的字符串; 若在某个时刻 M 根据转移函数进入了状态 qreject, 则它立刻停机并拒绝输入的字符串。

注意,转移函数 δ 是一个部分函数, 换句话说对于某些 q,x, δ(q,x)可能没有定义, 如果在运行中遇到下一个操作没有定义的情况, 机器将立刻停机。

下面我们以通俗易懂的方式来理解图灵机。

有一个右端无限长的纸带,纸带上面被分成无数的小格子,每个格子里面有一个字符或者数据或者任何约定好的符号都可以,纸带左端代表着开始。有一个机器人从纸带左端开始移动,它每次可以向左或者向右移动,每次移动一个格子。机器人内部有一个状态,表示着现在要做什么。机器人每走到一个格子就读取这个格子里的内容,然后根据这个内容改变自己的状态,再决定是否要修改这个格子的内容。比如说我要算这个式子(4+2)*6,可以设计一个这样的图灵机。其中的命令和操作都可以用符号表示,我这里为了方便也为了好理解就直接写要做什么了。

 

format,png

机器人从左端开机,向右移动一格,读取了当前的符号,对比内部的程序集,知道下一步要读取右侧两个内容,并且加到一起。

 

format,png

 

format,png

 

format,png

做完加法再向右移,得到指令向右移,把结果写入下一格。

 

format,png

 

format,png

再向右移,得到指令把前后两个相乘,那就先向左移一格读取,再向右移两格读取,并且相乘。

 

format,png

 

format,png

 

format,png

 

format,png

再向右移,接受这一格的命令,右移,写入结果。

 

format,png

 

format,png

最后读取到停机指令,计算过程结束。

 

format,png

这就是一个很简单的图灵机,看懂了吗?这是一个通俗易懂的例子,真正的图灵机要涉及到一些严格的规则或者符号表什么的,当然原理思路是完全一样的。

图灵机是一种理想的机器,纸带无限长,实现不了。但是现实中的程序就是按照图灵机的理论设计的,核心思想就是在某一状态下读取当前的输入,转换内部状态,决定下一步的操作。

还有一个概念,图灵完备。图灵完备是指在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟单带图灵机,当这套规则可以实现图灵机模型里的全部功能时,就称它具有图灵完备性。就是一套规则可以被看作图灵机,就是图灵完备。

刚才说图灵机能解决一切可计算问题,什么是可计算问题呢?

在计算机领域,研究的一切问题都是计算问题,计算问题泛指一切与计算相关的问题。比如:

  • 给定一个正整数n nn,判断它是否是质数;
  • 给定一个0-1序列,把它们按位取反;
  • 给定一个字符串,判断某个字符是否存在,以及查找存在的位置;
  • 给定一个蕴含逻辑的命题,求它的逆否命题;

相反,非计算问题为:

  • 今晚看什么书;
  • 你为什么叫xxx;

当前的主流编程语言(C++,Java,Python)都是图灵完备的语言。回到语言的底层,一切编程语言实现的功能完全一样,本质上就是一个图灵机。

Brainfuck(BF),是一种极小化的程序语言,它是由Urban Müller在1993年创造的。它一共只包含8个有效字符,每个有效字符就是一条指令。语言非常接近机器指令,比如:

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

这段看着不明所以的外星文字编译后,控制台打印"Hello World!"。BF的工作机制与图灵机高度一致。首先存储数据的方式是一个不限长的一维整数数组,里面的数值全部初始化为0。此外,还有一个数据指针,每一时刻都指向数组的某一任意元素。指针可以向左或向右移动,也可以读取或修改当前值。

BF中的8个有效字符为:

字符含义
>指针向右移动1格
<指针向左移动1格
+使指针当前格中的数值加1
-使指针当前格中的数值减1
.把当前格中的数值按ASCII表输出到终端
,从终端接受1byte数据,存储其ASCII对应的数值到当前格
[当指针当前值为0时,程序跳转至与之对应的 ] 之后;否则程序正常执行
]程序跳转回与之对应的 [ 处

很神奇有木有!哈哈哈!

我们可以构造出一个特殊的图灵机,它接受任意一个图灵机 M 的编码 ,然后模拟 M 的运作,这样的图灵机称为通用图灵机(Universal Turing Machine)。现代电子计算机其实就是这样一种通用图灵机的模拟,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的算法。但要注意,它只是模拟,因为现实中的计算机的存储都是有限的,所以无法跨越有限状态机的界限。经典图灵机及其许多变形识别语言的能力都是相同的,正因为如此,图灵机可以作为计算的一般模型。另外,通用图灵机 (可编程图灵机) 是存在的,通用图灵机可以模拟任意一个图灵机,这也是将图灵机作为现代计算机的形式模型的根本原因。

图灵机有很多变种,但可以证明这些变种的计算能力都是等价的,即它们识别同样的语言类。证明两个计算模型A和B的计算能力等价的基本思想是:用A和B相互模拟,若A可模拟B且B可模拟A,则它们的计算能力等价。注意这里我们暂时不考虑计算的效率,只考虑计算的理论“可行性”。

改变图灵机的带字母表并不会改变其计算能力。如果我们允许图灵机的纸带两端都可以无限伸展,这并不能增加图灵机的计算能力,因为我们可以用只有纸带一端能无限伸展的图灵机来模拟这种纸带两端都可以无限伸展的图灵机。

图灵提出图灵机的模型并不是为了同时给出计算机的设计,它的意义有如下几点:

1、它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构;

2、图灵机模型引入了读写与算法与程序语言的概念,极大的突破了过去的计算机器的设计理念;

3、图灵机模型理论是计算学科最核心的理论,因为计算机的极限计算能力就是通用图灵机的计算能力,很多问题可以转化到图灵机这个简单的模型来考虑。

通用图灵机向人们展示这样一个过程:程序和其输入可以先保存到存储带上,图灵机就按程序一步一步运行直到给出结果,结果也保存在存储带上。更重要的是,隐约可以看到现代计算机主要构成,尤其是冯・诺依曼理论的主要构成。

四、总结

好啦,关于图灵机,掌握这么多就差不多了,怎么样,到这里能理解多少呢?

 

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrystalGabrielle

喜欢就投喂一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值