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

2024-02-12 11:28

本文主要是介绍深入学习《大学计算机》系列之第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

这篇关于深入学习《大学计算机》系列之第1章 1.7节——图灵机的一个例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/702493

相关文章

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl