当前位置: 首页 > article >正文

深入学习《大学计算机》系列之第1章 1.7节——图灵机的一个例子

一.欢迎来到我的酒馆

        第1章 1.7节,图灵机的一个例子。

目录

    • 一.欢迎来到我的酒馆
    • 二.图灵机
      • 2.1 艾伦-图灵简介
      • 2.2 图灵机简介
    • 三.图灵机工作原理
      • 3.1 使用图灵机打印二进制数
      • 3.2 图灵机工作原理总结
    • 四.总结

二.图灵机

        本节内容主要介绍计算机科学之父——艾伦-图灵、以图灵名字命名的图灵机以及图灵机的工作原理。

2.1 艾伦-图灵简介

        艾伦-麦席森-图灵(Alan-Mathison-Turing)1912年出生于英国伦敦。父亲(朱利斯-麦席森-图灵,Julius-Mathison-Turing)是一名牛津大学的毕业生,曾赴印度担任民政部官员。母亲(埃塞尔-萨拉-斯托尼,Ethel-Sara-Stoney)毕业于巴黎大学文理学院,曾任马德拉斯铁路的总工程师。父母都是受到良好教育的高材生,说到这里,这又会使人联系起我们之前介绍过的另外一位天才人物——莱布尼茨。他们两人的家庭环境颇为相似,父母都是书香门第。耳濡目染,受到父母亲的影响,从小养成了热爱学习的习惯。可是,图灵和莱布尼茨不同的是,图灵在出生后不久便寄养在一个军人家庭,由于工作的原因,父母远赴海外印度工作,很少时间回到英国,在很大一部分时间里图灵和他哥哥都是由父母的朋友照顾。从小生活在寄养的家庭环境中,这种成长环境对后来图灵的性格养成有着至关重要的影响。进入学校后,图灵孤僻的性格让他很难和老师、同学相处。他无法与老师、同学亲近。在校园里也不受同学的欢迎,同学们经常欺负图灵,老师也不怎么喜欢他。然而,图灵热爱研究数学,他一直都沉浸在数学中。在小学时期,图灵的学习成绩并不是很好,因为这所小学偏重于哲学教育,而图灵热爱自然科学,在这里他并没有得到太多的关注,老师还在他的成绩单上对他不重视语言的学习态度表示失望。
        1926年,图灵通过英国的普通入学考试,进入舍本中学学习。刚进入中学的他,学习成绩也不是很好,即使是在他热爱的数学和物理,也是如此。虽然学习成绩不好,但是这并不能说明他在数学方面的天分,他愿意花更多的时间来研究高等数学,物理理论,爱因斯坦的《相对论》,而花在学校规定的课程上的时间少之又少。他花了大把的时间研究爱因斯坦的《相对论》以及物理理论上,在年仅15岁的时候,他就针对爱因斯坦的《相对论》写了一篇小论文送给母亲萨拉。即便在尖端学问上展现出了异于常人的天赋,老师也没有过高的评价,在他的期末评语上,老师这样写到:他花了太多时间研究高等数学,而荒废了基础学科的学习。这时的他在老师眼里,是一名孤僻的学生,只研究自己喜欢的领域的怪孩子。然而,这一切在他遇到一个男生之前开始有了变化。就在图灵写下小论文不久后,图灵认识了比他大一个年纪的克里斯托弗-摩尔康(Christopher-Morcom),克里斯也是一个非常热爱自然科学的孩子。他们经常利用课余时间在一起学习高等数学和物理,并培养出了浓厚的感情。图灵再后来和朋友的信中回忆说:与克里斯相处的日子是非常快乐的。这段关系让图灵明白如何社交以及维持学业成绩。然而,好景不长,这段友谊并没有持续太久。1930年,克里斯不幸得了感染病去世了。
        1931年,图灵以高分考入英国剑桥大学国王学院。在国王学院,图灵开始了对高等数学的深入研究。由于学院的开放与包容,身为研究鬼才以及同性恋的图灵在这里得到了前所未有的包容,他终于可以研究自己喜欢的事情了。在国王学院,图灵修了许多高等数学和物理相关课程,这为他后来在自然学科做出突出贡献打下了基础。1935年,图灵在一篇论文里面假想了一台自动化机器,简称为A机器,这台机器的概念中包含了四个元素:一条无限长纸带,纸带被划分成一个个小个子,每个小格子里面写有数字0或1;一个可以读取纸带方格的读写头;一套预先制定好的指令,这套指令可以规定机器如何运作;一个可以暂时存储机器状态的记忆体。由这四个部分组成的机器就是大名鼎鼎的图灵机。这套机器的读写头可以在纸带的小方格上自由移动,并且可以改变每个小方格内包含的数据信息,而预先设计好的规则会指定机器在当前状态下应该做什么,倘若这套规则中不存在针对当前状态的指令,机器就会停止运作。这套机器也成为后来电脑的原型,我们称这套机器最早的版本为图灵机,图灵机的概念具有开创性,而在图灵机刚被设计出来的时候并没有得到重视,直到二战爆发,图灵机才显示出了它的威力。
        电影《The Imitation Game,模仿游戏》就是以二战为背景,讲述了纳粹德国使用恩尼格玛(Enigma)加密文件,恩尼格玛的存在使得英国与德国在大西洋海战中节节败退,英国想方设法地破解纳粹德国的加密文件,而用恩尼格玛加密的文件有一亿亿种可能性,如果依靠人力去破解需要2000万年的时间。英国军方招揽了大量的密码学人才,图灵自然也在其中,图灵破译加密文件的思想是使用机器来打败机器。纳粹德国使用恩尼格玛密码机加密了文件,那我们就可以设计一套机器来解密,按照这个思想,图灵设计了一套机器,可以即时破解加密文件。虽然在现在来说,图灵设计的这套机器连电脑都算不上,顶多是一个机械式计算器,但是它的存在扭转了战局,使得德军的加密文件无处遁形。图灵和他的团队无疑是结束第二次世界战争的大功臣,更有专家表示,若是没有图灵等人的破译,二战还会再持续至少两年。战事结束之后,图灵被英国政府授予了第四级的大英帝国勋章。
        这样一位大功臣照理说会受到人们众星捧月般的爱戴,然而图灵在战后的生活可谓是一个悲剧。1953年,图灵家中被盗。在不久之后,图灵就报警了,希望警察可以快速处理此案。然而,在做笔录的时候,当被问道图灵和他同伴的关系时,图灵直接承认了自己是同性恋,这件事情非同小可,因为在那时的法律里规定,同性恋也是一种犯罪行为。偷窃案不了了之,图灵反而身陷同性恋的案子中,法院给出了两种选择,一种是注射雌性激素,另一种是坐牢。图灵选择了前者,注射雌性激素会产生荷尔蒙并且对身体有很大的副作用。过量的荷尔蒙对图灵的身体造成很大的影响,他不再像从前那样可以长跑、骑车了。图灵还因为这件事情失去了政府顾问的资格,并且规定永远不能入境美国。1954年,在被定罪两年后,图灵在公寓里服了含有氰化钾的苹果去世,享年41岁。 1966年,美国计算机协会(ACM)设立图灵奖,奖励那些在计算机科学领域做出突出贡献的人,图灵奖是计算机科学领域的最高奖项,被誉为计算机界的诺贝尔奖。
        2009年,英国政府就图灵受到的迫害一事公开道歉。2013年,英国女王向图灵追加了皇家赦免令,赦免令说,图灵在战争期间的解密工作以及在计算机科学方面的研究应该得到铭记和认可。


在这里插入图片描述

2.2 图灵机简介

        图灵机(Turing Machine,简称 “TM”),是一种抽象的计算模型。1936年,图灵发表了一篇论文《论可计算的数及其在密码问题中的应用》,首次提出了逻辑机的通用模型,图灵将这种机器称为 “A机器“,或 “自动机器”,后来人们把这个通用模型命名为图灵机。图灵机是一种可计算的数学模型,它可以简化问题。这种模型可以将人们使用纸和笔进行数学运算的过程进行抽象,由一个不存在的机器代替人们手动数学运算。这种理念使得人们可以借助机器来计算各种数学运算,大大节省了时间。并且,图灵提出的 ”A机器“ 或 ”自动机器“ 在后来启发了冯-诺依曼设计出了可存储程序计算机,我们今天使用的计算机使用的正是冯-诺依曼设计的计算机架构。
        图灵机由四个部分组成:一条无限长的纸带;一个可以读取纸带的读写头;一个可以存储读写头状态的记忆体;一套预先设计好的指令。这条纸带被平均分割成一个个小格子,小格子里可以写入数据,比如0和1;读写头可以在纸带上左右移动(移动方向有三个,RLN,分别是右移,左移,不移动),每次只能移动一个格子,读写头上有一个记忆体,可以存储当前读写头的状态(State),比如用q0表示起始状态。读写头一次不仅可以读取一个小方格内的数据,也可以向一个小方格内写入数据,也可以擦除小方格内的数据,也就是小方格内什么也没有。至于是读取纸带中的数据,还是向纸带中写入数据,完全由一套预先设计好的指令决定。读写头的操作流程全部依靠预先设计好的指令执行,一条指令包括五个部分:起始状态,字母表,读取或写入的数据,读写头移动方向,下一个状态。


在这里插入图片描述

三.图灵机工作原理

        前面详细地介绍了图灵机的组成,在我们了解了图灵机的大致原理之后,我们继续探讨图灵机的工作原理。

3.1 使用图灵机打印二进制数

        简而言之,图灵机由以下四个部分组成:一条无限长的纸带,一个读写头,一个保存读写头状态的记忆体,一套预先设计好的指令。下面我们用图灵机模型打印出二进制数111,通过这种方式介绍图灵机的工作原理。在开始之前,我们需要制定一套指令,读写头根据我们预先设计好的指令运行。因此,我们规定,读写头的起始状态为q0,终止状态为q3,状态集为{q0,q1,q2,q3},字母表为{0,1,B(B表示Blank)},行动集为{L,R,N(N表示不移动)}。我们的需求是使用图灵机模型在纸带上打印出二进制数111,根据这个需求可以写出一套指令:

{q0,B,1,R,q1}
{q1,B,1,R,q2}
{q2,B,1,N,q3}

        有了指令,图灵机就可以根据这套指令来执行,下面我们演示在纸带上打印出二进制数111的步骤:
        首先,根据第一条指令{q0,B,1,R,q1},把读写头的当前状态记录为q0,这是读写头的起始状态,接着是B,这是字母表,表示当前小方格内什么数据也没有。这时候,我们读取了两个数据,q0和B,这是指令的前两个数据,我们可以把指令{q0,B,1,R,q1}拆分成一个规则集,规则集通俗来讲就是方便我们查看指令用的,按照上面的三个指令,我们可以写出对应的规则集:


在这里插入图片描述


        第二,写好了指令,图灵机就可以根据指令运行。按照我们之前定义的需求,在一条空白的纸带上打印出二进制数111。图灵机会逐条地执行指令,第一条执行的指令是:{q0,B,1,R,q1},q0表示读写头的当前状态,B表示当前纸带上的小方格为空白,什么数据也没有。第一条指令的前两位数据是q0和B,根据这个我们可以去规则集表里查询到第一条指令的操作,后面的三位数据就是具体的操作,{q0,B,1,R,q1},1表示读写头写入的数据,R表示在写入数据完成后,读写头需要往右移动一格,q1表示更新读写头的内部状态,由最初的q0更新为q1。


在这里插入图片描述


        下图演示了图灵机在执行指令{q0,B,1,R,q1} 的操作流程:

在这里插入图片描述


        接着执行指令{q1,B,1,R,q2}:

在这里插入图片描述


        执行最后一条指令{q2,B,1,N,q3}:
在这里插入图片描述


        三条指令全部执行完成后,在纸带上就输出了一个二进制数111。

3.2 图灵机工作原理总结

        图灵机是一种抽象的计算模型,它可以将人们使用纸和笔计算数学运算进行抽象,使用机器来代替人们手动数学运算。这种理念使得人们可以借助机器来进行各种数学运算,极大的缩减了人们用于数学运算上的时间。后来的冯-诺依曼结构正是受到了图灵机的启发,设计出了可存储程序计算机,这正是现在计算机的原型。图灵机按照预先设计好的指令来运行,一条指令包括五个部分:读写头的起始状态,小方格内当前的数据,需要写入的数据,读写头的移动方向,读写头下一个状态。
状态集:{q0,q1,q2,q3,qn}(q0为读写头的起始内部状态,终止状态可以手动确定)
字母表:{0,1,B}(B表示Blank,空白)
行动集:{L,R,N}(N表示不移动)

四.总结

1.介绍艾伦-图灵的个人生平。图灵设计的机器是破译 “恩尼格玛” 的关键。
2.介绍图灵机。图灵机是一种抽象的计算模型,它可以代替人们手动进行数学运算,极大的缩减了在数学运算上的时间。
3.介绍图灵机的工作原理。图灵机是按照预先设计好的指令执行,一条指令明确指定了读写头的内部状态,写入纸带小方格的数据以及更新读写头的内部状态。
4.参考资料:
(1) 艾伦-图灵简介:https://baike.baidu.com/item/%E8%89%BE%E4%BC%A6%C2%B7%E9%BA%A6%E5%B8%AD%E6%A3%AE%C2%B7%E5%9B%BE%E7%81%B5/3940576?fr=ge_ala
(2) 图灵机简介:https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/one.html


http://www.kler.cn/news/234470.html

相关文章:

  • 蓝桥杯每日一题之内存问题
  • Elementplus报错 [ElOnlyChild] no valid child node found
  • Spring Boot与Kafka集成教程
  • Django模板(二)
  • 每天上班都疲惫不堪,怎么办?
  • 【C/C++ 17】继承
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件
  • 安全SCDN有什么作用
  • PMP考试之20240211
  • JAVA中的单例模式->懒汉式
  • 在 Docker 中启动 ROS2 里的 rivz2 和 rqt 出现错误的解决方法
  • 《Django+React前后端分离项目开发实战:爱计划》 01 项目整体概述
  • DP读书:《openEuler操作系统》(九)从IPC到网卡到卡驱动程序
  • 【FPGA开发】Modelsim和Vivado的使用
  • mysql底层结构
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • 简单介绍算法的基本概念
  • LeetCode Python -8.字符串转整数
  • golang 集成sentry:PostgreSQL
  • 4核8g服务器能支持多少人访问?- 腾讯云
  • 【Rust】——猜数游戏
  • python打印等边三角形
  • 【0257】关于pg内核shared cache invalidation messages (概念篇)
  • 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • 私有化部署一个自己的网盘
  • 【超高效!保护隐私的新方法】针对图像到图像(l2l)生成模型遗忘学习:超高效且不需要重新训练就能从生成模型中移除特定数据
  • 2024 年 5 款适用于免费 iPhone 数据恢复的工具软件
  • 【从Python基础到深度学习】1. Python PyCharm安装及激活
  • AR人脸106240点位检测解决方案