软件理论基础学习笔记——图灵机

news/2024/11/8 18:23:12/

目录

  • 图灵机(turing machine)
  • 例子
  • 格局(configuration)
  • Turing's Thesis


图灵机(turing machine)

学过计算机的人总归会多或少得听说过图灵机这种东西,但是图灵机究竟是什么呢?图灵机其实也是自动机的一种,并且图灵机会在状态转换过程中操作一个无限的tape

tape的样子如下图所示,tape里面包含字符,其中后面那个两竖一横的符号是blank的意思,它是一个特殊的字符,用来填满无限的tape
在这里插入图片描述
tape head指向当前tape上的字符

tape上的操作

  • 可以对tape head指向的字符进行读/扫描操作
  • 可以对tape head指向的字符进行写/更新操作
  • 将tape head左移一格
  • 将tape head右移一格

操作规则:
1、
每一步操作都要执行一下操作

  • 读取当前的字符
  • 更新当前格子中的字符
  • 左移一格或者右移一格

如果当前tape指向最左边的格子,那么执行左移操作将不会发生移动

如果你不想更改当前格的字符,那么执行更新操作的时候只要让它更新为和当前字符一样即可

2、
操作行为类似于有限状态机

有初始状态

终止状态有两种:

  • accept state
  • reject state

计算结束后状态会变成下列三种中的一种:

  • 终止并且接受(accept)
  • 终止并且拒绝(reject)
  • 循环(loop,就是说没有终止)

下面是图灵机的正式定义,Turing Machine可以表示为一个七元组 ( S , Σ , Γ , δ , s 0 , b , F ) (S,Σ,Γ,δ,s_{0},b,F) (S,Σ,Γ,δ,s0,b,F)

  • S是一组状态的集合
  • Σ Σ Σ是输入字母表
  • Γ Γ Γ是tape的字母表
  • δ δ δ是转换函数
  • s 0 s_{0} s0是初始状态
  • b b b是空符号
  • F F F是终止状态的集合(包括accept或reject)

转换函数 δ δ δ定义为:
S × Σ → Γ × ( R / L ) × S S×Σ\rightarrow Γ×(R/L)×S S×ΣΓ×(R/L)×S

这里的(R/L)就是执行左移或者右移操作,R就是向右(right)移动,L就是向左(left)移动

以下面这张图为例,在图上 0 → 1 , R 0\rightarrow 1,R 01,R代表的含义是,在状态A时接收字符0,那么将会转变为状态B,并且在当前磁头位置写下1这个字符,然后磁头向右移动一格
在这里插入图片描述

例子

接下来我们通过构建一个图灵机,并且实际运算一下,看看图灵机究竟是如何进行计算的

我们要构建图灵机,用于计算n+1函数,下图的初始状态是q1,结束状态是qa

在这里插入图片描述
假设输入的数字为1011(二进制),初始时tape head指向第一个值

在这里插入图片描述

第一步读取一个1,自动机会通过 1 → 1 , R 1\rightarrow 1,R 11R这个转换,转换后仍然变成 q 1 q_{1} q1,在第一格写入1,并将tape head右移一格
在这里插入图片描述
接下来的步骤和上面一样分别读取0,1,1仍然转变为 q 1 q_{1} q1,并且写上和原来相同的数字
在这里插入图片描述
这时候的tape head指向了空字符,按照状态机的转换 q 1 q_{1} q1只能转变为 q 2 q_{2} q2,要注意的是,tape head会往左移动一格
在这里插入图片描述
我们看看 q 2 q_{2} q2这边的转换,碰到1就写入0,并且向左移动tape head,因为按照二进制加法的逻辑,最后一位如果是1,那么+1后变成0,并且会进一位,如果最后一位是0,那么就直接变成1就行了,故此有了图上 q 2 q_{2} q2的转换

在这里插入图片描述
再执行一次上面的操作
在这里插入图片描述
这次读取到了0,所以状态 q 2 q_{2} q2将会转变为 q 3 q_{3} q3,并且将0覆写为1,然后向右移动一格
在这里插入图片描述
来到了 q 3 q_{3} q3状态,在这个状态下,只要单纯向右移动即可,因为写入的数字是相同的

在这里插入图片描述
终于到了最后一步啦,看到读取空字符,然后 q 3 q_{3} q3状态就会转变为 q a q_{a} qa的接受状态,因为到达了终止状态,满足了图灵机的终止条件,所以图灵机运行完毕

我们来看看,我们输入的数字是1011,然后输出的数字是1100,所以我们实现的这个图灵机完成了n+1这个函数的操作步骤

格局(configuration)

configuration翻译成了格局,但这个东西其实就是一个图灵机在当前状态下的快照,由当前状态下tape中的字符,tape head指向的位置,以及当前自动机的状态这三个元素组成,可以简单的用如下图所示图灵机的格局

在这里插入图片描述

用字符串表示格局的话,是类似于下面这样的:

▹ \triangleright 1100 q 1 q_{1} q1 11001

▹ \triangleright 符号代表开始位置,里面的 q 1 q_{1} q1代表当前的状态,里面的字符代表的tape中的字符,tape head指向的是状态右边的第一个字符,所以在这个例子里面,tape head指向的是1

Turing’s Thesis

Turing’s Thesis
1、任何能被数字计算机执行的事情,Turing Machine同样也能够完成(从这里可以看出Turing Machine能力相当强大)
2、如果你能写出一个算法来解决某个问题,那么同样可以写出一个图灵机程序来解决相同的问题


http://www.ppmy.cn/news/421777.html

相关文章

【计算理论】图灵机 ( 图灵机设计 )

文章目录 一、设计图灵机要求二、图灵机分析三、计算过程分析四、高级语言五、使用高级语言描述图灵机六、完整图灵机 ( 仅做参考 ) 一、设计图灵机要求 设计一个图灵机 M 2 \rm M2 M2 , 认识一种特定语言 , 该语言由 0 0 0 组成 , 字符串的长度是 2 n \rm 2^n 2n 个 , n …

简述什么是图灵机_图灵机简介和原理分析

图灵机简介和原理分析 摘要 : 1936 年, 阿兰图灵提出了一种抽象的计算模型 —— 图 灵机 (Turing Machine) 。图灵机是指一个抽象的机器,可被视作任 意解决有限数学逻辑过程的机器, 它提供了一种简单有效的解决逻辑 过程的方法&am…

简述什么是图灵机_什么是图灵机

内容提要 什么是图灵机? 一个简单的例子 一个简单的程序 机器状态 有限状态机 什么是图灵机? 图灵机是一个虚拟的机器,由数学家阿兰图灵1936年提出来的,尽管这个机器很简单,但它可以模拟计算机的任何算法,无论这个算法有多复杂。 上面是一个图灵机的简单示意图。假设有一…

【计算理论】图灵机 ( 多个带子的图灵机 | 计算能力对比 | 证明过程 | 一个带子图灵机 )

文章目录 一、多个带子的图灵机二、证明过程设计三、模仿操作四、模仿带子排列五、模仿读写头操作 一、多个带子的图灵机 多个带子的图灵机 指的是 图灵机不止一个带子 , 下图是 3 3 3 个带子的图灵机 , 每条带子有一个对应的读写头 , 总共有 3 3 3 个读写头 , 有 一个状态 ,…

图灵机是最早的计算机,计算机发展史之图灵机

大家都知道计算机是可以完成运算的。那大家知道以前的计算机是怎么样完成运算的吗?今天我们就来讲解一下,以 图灵机和纸带来讲解。 根据维基百科解释,图灵机包括以下四个部分: 1. 一条无限长的纸带TAPE。 纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表…

图灵机模拟程序功能设计

图灵机由无限长的纸带、读写头、状态寄存器、控制规则等四部分组成,纸带上的符号可以是{ 0,1,空格 }。要利用图灵机求解一个问题,需要自己设计图灵机“程序”,即定义一些状态(其中包括初始状态和结束状态&a…

什么是图灵机及图灵完备(一)

图灵机的组成 网上有一张经典的图片来表达图灵机的构成,图如下: 这张图片什么意思?这么一个简单的机器/装置怎么会所有电子计算机的理论模型? 图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,它运算过程…

图灵机|计算理论

注:本学期计算理论课程刘老师上课内容知识点总结 今天学一天感觉脑子是不是不能吸收啊。。。 还是要相信自己的脑子,明儿考试可就靠你了那总比通宵学的强不是 图灵机基础 图灵机定义(TM) 形式化定义 突然想起来考试周这段时间吃…