首页 > 其他分享 >计算机简史第四章 电子时代之图灵机

计算机简史第四章 电子时代之图灵机

时间:2024-06-11 10:30:06浏览次数:30  
标签:状态 纸带 偶数 停机 图灵 简史 图灵机 第四章

讲讲图灵对计算机的贡献

图灵机发明的背景

阿兰·马蒂森·图灵 (Alan Mathison Turing)于 1921 年出生在伦敦, 从小就表现出惊人数学和科学能力。

艾伦·麦席森·图灵(Alan Mathison Turing),1912-1954,英国数学家、计算机学家、逻辑学家、密码学家、哲学家、理论生物学家。(图片来自维基百科)

他对计算机科学的建树始于 1935 年,当时他是剑桥国王学院的硕士生,他开始解决德国数学家 大卫·希尔伯特提出的问题: Entscheidungsproblem (德语),即“可判定性问题”: 是否存在一种算法,输入正式逻辑语句,输出准确的"是"或"否"答案?

如果这样的算法存在, 可以回答比如 “是否有一个数大于所有数?” (虽然我们知道答案:没有)。但有很多其他非常难以解决的数学问题,我们想知道答案,因为如果我们知道是没有解决方法的,就不用花时间去尝试解决了。

美国数学家阿隆佐·丘奇, 于 1935 年首先提出解决方法,开发了一个叫“Lambda 算子”的数学表达系统,证明了这样的算法不存在。虽然“Lambda 算子”能表示任何计算,但它使用的数学技巧难以理解和使用。

同时在大西洋另一边,阿兰·图灵 想出了自己的办法来解决"可判定性问题",提出了一种假想的计算机,现在叫图灵机(Turing Machines),图灵机提供了简单又强大的数学计算模型。

虽然用的数学不一样,但图灵机的计算能力和 Lambda 算子一样,同时因为图灵机更简单,所以在新兴的计算机领域更受欢迎。

什么是图灵机

图灵机是图灵受打字机的启发而假想出来的一台理论计算设备。假设我们有

  • 无限长的纸带,纸带可以存储符号
  • 一个状态变量,保存当前状态
  • 一个读写头,可以读取和写入 纸带上的符号。
  • 一组规则,描述机器做什么。规则是根据当前状态 + 读写头看到的符号,决定机器做什么,结果可能是在纸带写入一个符号,或改变状态,或把读写头移动一格,或执行这些动作的组合。

为了更好理解,我们举一个例子:让图灵机读一个以零结尾的字符串,并计算 1 的出现次数是不是偶数。如果是,在纸带上写一个 1;如果不是,在纸带上写一个 0。

首先要定义“图灵机”的规则:

  • 机器的初始状态:由于还没开始计算,当前的 1 的出现次数是 0,是偶数
  • 如果当前状态是"偶数", 当前符号是 1,那么把状态更新为"奇数",把读写头向右移动
  • 如果当前状态是"奇数", 当前符号是 1,那么把状态更新为"偶数",把读写头向右移动
  • 如果当前状态为偶数,当前符号是 0,意味着到了字符串结尾,那么在纸带上写一个 1,并且把状态改成 停机(halt),状态改为"停机" 是因为图灵机已完成计算
  • 如果当前状态为奇数,当前符号是 0,意味着到了字符串结尾,那么在纸带上写一个 0,并且把状态改成 停机(halt),状态改为"停机" 是因为图灵机已完成计算

定义好了起始状态 + 规则,就像写好了程序,可以开始输入了。假设把"1 1 0"放在纸带上,有两个 1,是偶数。注意,规则只让读写头向右移动,其他部分无关紧要,为了简单所以留空。

“图灵机"准备好了,开始!机器起始状态为"偶数”,看到的第一个数是 1,符合最上面那条规则,所以执行对应的步骤,把状态更新到"奇数", 读写头向右移动一格:

然后又看到 1, 但机器状态是"奇数",所以执行第三条规则,使机器状态变回"偶数",读写头向右移动一格:

最后看到 0,并且机器状态是 偶数,所以执行第二条规则,在纸带上写 1,表示"真" 的确有偶数个 1,然后机器停机。

这就是图灵机的原理,很简单对吧?你可能觉得“有什么大不了的”?

图灵证明了:这个简单假想机器,如果有足够时间和内存,可以执行任何计算。它是一台通用计算机,刚才的程序就是个简单例子,只要有足够的规则,状态和纸带可以创造任何东西,浏览器,魔兽世界,任何东西!当然这样做效率很低,但理论上可行,所以图灵机是很强大的计算模型。

事实上,就可计算和不可计算而言,没有计算机比图灵机更强大,和图灵机一样强大的,叫 “图灵完备”。每个现代计算系统 比如笔记本电脑,智能手机,甚至微波炉和恒温器内部的小电脑,都是"图灵完备"的。

为了回答可判定性问题,他把图灵机用于一个有趣计算问题:"停机问题“。

停机问题

在试想一下,在有些情况下,一台图灵机如果长时间没有输出结果,那么它很可能陷入了死循环或永无止境的计算中。这是我们不愿看到的,因为机器可能运行 1 分钟后停机,也可能运行 10 天半个月甚至几十年才停机,亦或者永远也不会停机,这个很难靠人为判断。

说人话:如果一个数学问题是没有解的,但花了 10 天半个月甚至几十年才发现是没有解决办法,或者永远都没有解决办法,那么就白白花费了很多时间。

假设我们构建出一台图灵机 H,它接收其他图灵机及其输入信息作为输入,并能够判定其是否会停机,就解决了上面的烦恼——构建这样的机器难度虽大,但理论上是可行的。

这就是著名的停机问题(halting problem)。

令 H 表现如下图所示,如果其判定对象会停机则输出 1,反之输出 0。

图灵机H运行流程

我们再构建一台图灵机 G,其运行流程如下图所示。如果 H 输出 1,说明 G 会停机,但事实上它将陷入循环;如果 H 输出 0,说明 G 不会停机,但事实上它将停机。

图灵机G运行流程

因此,不存在一台图灵机,可以判定任意图灵机是否会停机。

听起来可能有点绕,其实可以理解为,G 就是故意针对图灵机 H 的。你认为我是不永久的,我就一直永久;如果你认为我是永久的,我就退出;也就是说,你是无法判断我是否会停机的。这说明了不存在这样的图灵机,能够判断停机问题。

更多可以参考如下博客:

如何通俗地解释停机问题(Halting Problem)?https://www.zhihu.com/question/20081359/answer/22043224

停机问题、Chaitin 常数与万能证明方法:http://www.matrix67.com/blog/archives/901

深远影响

图灵的工作参透了数学和计算机的本质关系——计算机是为解决数学问题而诞生的,却又基于数学,因而数学自身的极限也便框定了计算机的能力范围。

图灵虽然证明了没有任何机器可以解决所有数学问题,却也证明了机器可以完成所有人类能完成的计算工作,从如今的应用看来,后一个结论的意义重大得多。

如今的所有通用计算机都是图灵机的一种实现,两者的能力是等价的。当一个计算系统可以模拟任意图灵机(或者说通用图灵机)时,我们称其是图灵完备的(Turing complete);当一个图灵完备的系统可以被图灵机模拟时,我们称其是图灵等效的(Turing equivalent)。

图灵完备和图灵等效成为衡量计算机和编程语言能力的基础指标,如今几乎所有的编程语言也都是图灵完备的,这意味着它们可以相互取代,一款语言能写出的程序用另一款也照样可以实现。

标签:状态,纸带,偶数,停机,图灵,简史,图灵机,第四章
From: https://blog.csdn.net/weixin_38125348/article/details/139577819

相关文章

  • 浙大版PTA python程序设计 第四章题目及知识点解析整理
    第四章--1--在循环中continue语句的作用是(结束本次循环)退出循环的当前迭代  √ 带有else子句的循环如果因为执行了break语句而退出的话,会执行else子句的代码。×因为break是跳出整个循环,所以如果循环体内有else子句,且循环是通过break退出的,那么else子句中的代码也不......
  • 第四章: 全面梳理Java 标识符变量的声明,基本数据类型,String类型以及相互之间的类型
    1.关键字和保留字关键字(keyword)是指被Java语言赋予了特殊含义,用做专门用途的字符串(单词)其特点就是关键字中所有字母都为小写官方地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html保留字(reservedword)是当前Java版本尚未使用,但以......
  • 程序设计与算法(三)C++:第四章poj代码
    课程:北京大学程序设计与算法(三)   MOOCOJ:OpenJudge014:MyString这个题需要写的函数有点多我们来分析一下。charw1[200],w2[100]; while(cin>>w1>>w2){ MyStrings1(w1),s2=s1;//构造函数题目有了,不用写//复制构造函数没有,需要写 MyStrings3......
  • 计算机简史第四章 电子时代之图灵机
    讲讲图灵对计算机的贡献‍图灵机发明的背景阿兰·马蒂森·图灵(AlanMathisonTuring)于1921年出生在伦敦,从小就表现出惊人数学和科学能力。​​艾伦·麦席森·图灵(AlanMathisonTuring),1912-1954,英国数学家、计算机学家、逻辑学家、密码学家、哲学家、理论生物学家。(图片......
  • 计算机简史第四章 电子时代之晶体管
    晶体管:半导体制品。前言本文理解起来有一定难度,如果看不懂,可以多看几遍;实在不行记住结论就可以了:晶体管作用和电子管一样,但是更快。晶体管是由半导体组成的,为了方便理解晶体管的工作原理,我们首先回顾下初三的化学。‍原子与电子:初三化学原理复习原子由原子核和电子,其电子的......
  • 计算机简史第四章 电子时代之MOS管
    MOS管:现代计算机的细胞MOS管的发明1959年,就在集成电路和平面工艺相继问世的同时,贝尔实验室仿佛偷看了历史的剧本,正好研制出一种比BJT更适合集成新型晶体管,它的名字很长,叫金属氧化物半导体场效应晶体管(metal–oxide–semiconductorfield-effecttransistor),简称MOSFET或MO......
  • 计算机简史第四章 电子时代之集成电路与摩尔定律
    大规模集成电路的到来集成电路:芯片时代的到来1952年,实用的晶体管问世不久,电子行业还盛行电子管之时,一家为石油行业提供地震勘探服务的公司以极其长远的眼光向贝尔实验室买下了专利许可,并斥资数百万美元押注晶体管市场,而它当时的年利润仅有90万,这无疑是一场没有后路的跨界豪赌......
  • 【C语言从入门到入土】第四章数组
    第四章数组———————-数组的引入你所有的压力,都是因为你太想要了,你所有的痛苦,都是因为你太较真了。有些事不能尽你意,就是在提醒你改转弯了。如果事事都如意,那就不叫生活了,珍惜所有不期而遇,看淡所有的不辞而别。文章目录第四章数组4.1如何定义一个数组1.相同......
  • 第四章 Three.js 绘制基本几何体
    本章将介绍如何使用Three.js绘制各种基本几何体,包括立方体、球体、圆柱体、圆锥体、平面和环形几何体。我们将详细讲解每种几何体的创建方法,并通过示例代码展示如何将它们添加到场景中。4.1立方体(BoxGeometry)立方体是最基础的几何体之一。Three.js提供了THREE.Box......
  • 计算机简史第三章 机电时代之电的引入
    电,使得运算的速度大幅提高。‍‍1752年,以本杰明·富兰克林(BenjaminFranklin)为代表的科学家们用风筝线将闪电引到了地表,这个像神话一般的大胆实验,宣告着人类正式从造物主那里接收了这件将从根本上改变计算技术的神物。​​‍‍1820年4月,丹麦一位名为汉斯·克里斯蒂安·......