深入学习《大学计算机》系列之第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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/383709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CC++】内存管理2:new + delete

前言 今天继续来学new和delete operator new 与operator delete函数 new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通…

OpenCV入门:图像处理的基石

在数字图像处理领域,OpenCV(开源计算机视觉库)是一个不可或缺的工具。它包含了一系列强大的算法和函数,使得开发者可以轻松地处理图像和视频数据。本文将带你走进OpenCV的世界,了解其基本概念和常见应用。 1. OpenCV简…

【开源】基于JAVA+Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

锐捷(十九)锐捷设备的接入安全

1、PC1的IP地址和mac地址做全局静态ARP绑定; 全局下:address-bind 192.168.1.1 mac(pc1) G0/2:ip verify source port-securityarp-check 2、PC2的IP地址和MAC地址做全局IPMAC绑定: Address-bind 192.168.1.2 0050.7966.6807Ad…

Hugging Face 刚刚推出了一款开源的 AI 助手制造工具,直接向 OpenAI 的定制 GPT 挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

MMKV:轻巧高效的跨平台键值存储解决方案

MMKV:轻巧高效的跨平台键值存储解决方案 引言 在移动应用的开发中,数据存储是一个至关重要的环节。随着移动应用的普及和功能的增多,应用需要存储和管理各种类型的数据,包括用户配置信息、缓存数据、临时状态等。传统的数据存储…

Ubuntu Desktop 删除文件

Ubuntu Desktop 删除文件 1. right mouse click on the file -> Move to Trash2. right mouse click on the file -> DeleteReferences 1. right mouse click on the file -> Move to Trash ​ 2. right mouse click on the file -> Delete ​​​ References …

Unity Meta Quest MR 开发(四):使用 Scene API 和 Depth API 实现深度识别和环境遮挡

文章目录 📕教程说明📕Scene API 实现遮挡📕Scene API 实现遮挡的缺点📕Depth API 实现遮挡⭐导入 Depth API⭐修改环境配置⭐添加 EnvironmentDepthOcclusion 预制体⭐给物体替换遮挡 Shader⭐取消现实手部的遮挡效果 此教程相关…

C++ //练习 5.6 改写上一题的程序,使用条件运算符(参见4.7节,第134页)代替if else语句。

C Primer(第5版) 练习 5.6 练习 5.6 改写上一题的程序,使用条件运算符(参见4.7节,第134页)代替if else语句。 环境:Linux Ubuntu(云服务器) 工具:vim 代码…

blender怎么保存窗口布局,怎么设置默认输出文件夹

进行窗口布局大家都会,按照自己喜好来就行了,设置输出文件夹如图 这些其实都简单。关键问题在于,自己调好了窗口布局,或者设置好了输出文件夹之后,怎么能让blender下次启动的时候呈现出自己设置好的窗口布局&#xff…

《CSS 简易速速上手小册》第10章:未来的 CSS(2024 最新版)

文章目录 10.1 CSS 的新特性和趋势10.1.1 基础知识10.1.2 重点案例:使用 CSS Grid 创建响应式图库10.1.3 拓展案例 1:利用 CSS 变量实现主题切换10.1.4 拓展案例 2:使用 lab() 颜色和 layer 规则优化样式 10.2 CSS Houdini:魔法般…

Day46 300最长递增子序列 674最长连续递增子序列 718最长重复子数组 1143最长公共子序列

300 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序…

Kafka 入门笔记

课程地址 概述 定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ) 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接受感兴趣的消息 消息队列 消息队…

【北邮鲁鹏老师计算机视觉课程笔记】04 fitting 拟合

【北邮鲁鹏老师计算机视觉课程笔记】04 fitting 拟合 1 拟合的任务 如何从边缘找出真正的线? 存在问题 ①噪声 ②外点、离群点 ③缺失数据 2 最小二乘 存在的问题 3 全最小二乘 度量的是点到直线的距离而不是点在y方向到直线的距离 提示:点到直线的…

【北邮鲁鹏老师计算机视觉课程笔记】05 Hough 霍夫变换

【北邮鲁鹏老师计算机视觉课程笔记】05 Hough 霍夫变换 1 投票策略 考虑到外点率太高 ①让直线上的每一点投票 ②希望噪声点不要给具体的任何模型投票,即噪声点不会有一致性的答案 ③即使被遮挡了,也能把直线找出来 参数空间离散化 直线相当于就是m,b两…

vue核心技术(二)

◆ 指令补充 指令修饰符 通过 "." 指明一些指令 后缀,不同 后缀 封装了不同的处理操作 → 简化代码 v-bind 对于样式控制的增强 为了方便开发者进行样式控制, Vue 扩展了 v-bind 的语法,可以针对 class 类名 和 style 行内样式…

网络安全检查表

《网络攻击检查表》 1.应用安全漏洞 2.弱口令,默认口令 3.服务器互联网暴露 4.操作系统,中间件安全漏洞 5.研发服务器,邮件服务器等安全检查

PySpark(四)PySpark SQL、Catalyst优化器、Spark SQL的执行流程、Spark新特性

目录 PySpark SQL 基础 SparkSession对象 DataFrame入门 DataFrame构建 DataFrame代码风格 DSL SQL SparkSQL Shuffle 分区数目 DataFrame数据写出 Spark UDF Catalyst优化器 Spark SQL的执行流程 Spark新特性 自适应查询(SparkSQL) 动态合并 动态调整Join策略 …

Android---Jetpack Compose学习003

Compose 状态。本文将探索如何在使用 Jetpack Compose 时使用和考虑状态,为此,我们需要构建一个 TODO 应用,我们将构建一个有状态界面,其中会显示可修改的互动式 TODO 列表。 状态的定义。在科学技术中,指物质系统所处…

【XR806开发板试用】轻松连上华为云实现物联网

本文为极术社区XR806试用活动文章。 一.开始 偶然的机会在网上看到了鸿蒙开发板的试用,作为一个"老鸿蒙"岂能放弃这个机会,报名之后不出意料地得到了使用名额,在此感谢极术社区. 收到开发板之后其实还有点失望了,就那么一个小小的核心板,其他啥也没有,连一根数据线…