简介

图灵机是由艾伦·麦席森·图灵在1936年描述的一种抽象机器,它是人们使用纸笔进行数学运算的过程的抽象,它肯定了计算机实现的可能性,并给出了计算机应有的主要架构,引入了读写与算法与程序语言的概念为现代计算机的发明打下了基础。

本文将会讲解一下图灵机中的两种类型:确定图灵机和非确定图灵机。

图灵机

图灵机是一种数学计算模型,它定义了一个抽象机器,该抽象机器根据规则表来操纵带子上的符号。尽管该模型很简单,但是在任何给定计算机算法的情况下,都可以构建出模拟该算法逻辑的图灵机。

简单点说,图灵机就是一个模拟算法运行的抽象机器。它是这样定义的:

  1. 有一个无限长度的磁带,这个磁带被分成了一个接一个的单元格,磁带被用于写入字母和符号。
  2. 一个读写磁带的磁头,这个磁头负责控制堆磁带的写入和左右移动。
  3. 一个状态寄存器,用来存储图灵机的状态。
  4. 一个指令表,可以根据机器当前所处的状态和磁带上当前的符号,指示机器进行特定的操作。比如:擦除或者写入一个符号、向左或者向右移动磁头。

可以看到整个图灵机基本上模拟了程序的执行步骤。

图灵机虽然可以表示任意的计算程序,但是因为其极其简单的设计实际上并不适合进行计算,所以现实世界的现代计算机都是对图灵机的优化设计。

图灵完备性是指指令系统模拟图灵机的能力。从理论上讲,图灵完整的一种编程语言可以表达计算机可以完成的所有任务。如果忽略有限内存的限制,几乎所有编程语言都是图灵完备的。

图灵机的缺点

虽然图灵机可以表示任何计算任务,但是图灵机太过于简单了,在某些复杂的模型中无法很好的进行使用。比如在现代计算机中的RASP随机存储模型,因为RASP可以在寄存器中引用其他的寄存器,所以可以基于内存索引进行优化,这种优化是在图灵机中无法实现的。

图灵机的另一个限制是它们不能很好地进行并发建模。另外,因为在早期的时候,计算机的使用通常仅限于批处理,即非交互式任务,每个任务都从给定的输入数据中产生输出数据。 所以图灵机在描述现代交互式应用也有一些限制。

等效图灵机

因为图灵机是一种假想的设备,它为计算机算法的概念提供了理论基础。并且因为图灵机模型比较简单,对于复杂问题的描述比较弱,所以出现了很多图灵机的等效模型,虽然这些模型并不一定比图灵机强大,但是这些模型是真正存在的,并且使用他们可以更加容易的解决特定问题。

确定图灵机

在确定性图灵机(DTM)中,其控制规则规定了在任何给定情况下最多只能执行一个动作。

确定性图灵机具有转换功能,对于磁带头下的给定状态和符号,该转换功能指定了三件事:

要写入磁带的符号,头部应移动的方向(向左,向右或都不向),以及有限控制的后续状态。

例如,状态3的磁带上的X可能会使DTM在磁带上写Y,将磁头向右移动一个位置,然后切换到状态5。

非确定图灵机

在理论计算机科学中,非确定性图灵机(NTM)是一种理论计算模型,其控制规则在某些给定情况下指定了多个可能的动作。 也就是说,NTM的下一个状态不是完全由其动作和它所看到的当前符号决定的(不同于确定性图灵机)。

例如,状态3的磁带上的X可能允许NTM:

输入Y,向右移动,然后切换到状态5或者写一个X,向左移动,并停留在状态3。

那么问题来了,对于非确定图灵机来说是怎么进行下一步的选择的呢?实际上NTM足够幸运,它总是会选择那个能够最终指向接受状态的那一步。

你可以把NTM的诸多分支看成是许多副本,每个副本遵循一个可能的转换。 DTM遵循的是单个“计算路径”,而NTM则是“计算树”。 如果树中至少有一个分支导致接受状态,那么NTM就会接受这个输入状态。

我们看下两者的决策图:

确定图灵机和非确定图灵机 两者在计算上是等效的,也就是说,尽管它们通常具有不同的运行时,但可以将任何NDTM转换为DTM(反之亦然)。 这可以通过构造来证明。

本文已收录于 http://www.flydean.com/03-turing-machine/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

AI数学基础之:确定图灵机和非确定图灵机的更多相关文章

  1. p,np,npc,np难问题,确定图灵机与非确定图灵机

    本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...

  2. 图解AI数学基础 | 线性代数与矩阵论

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/83 本文地址:http://www.showmeai.tech/article-det ...

  3. 图解AI数学基础 | 概率与统计

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/83 本文地址:http://www.showmeai.tech/article-det ...

  4. AI数学基础之:P、NP、NPC问题

    目录 简介 P问题 NP问题 NP问题的例子 有些NP问题很难解决 NPC问题 NP-hard P和NP问题 简介 我们在做组合优化的时候需要去解决各种问题,根据问题的复杂度不同可以分为P.NP.NP ...

  5. AI数学基础之:奇异值和奇异值分解

    目录 简介 相似矩阵 对角矩阵 可对角化矩阵 特征值 特征分解 特征值的几何意义 奇异值 Singular value 奇异值分解SVD 简介 奇异值是矩阵中的一个非常重要的概念,一般是通过奇异值分解 ...

  6. AI 数学基础 张量 范数

    1.张量 几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量. 例如,可以将任意一张彩色图片表示成一个三阶张量,三个维度分 ...

  7. AI数学基础:符号

    1.sigma 表达式 ∑ 是一个求和符号,英语名称:Sigma,汉语名称:西格玛(大写Σ,小写σ) 第十八个希腊字母.在希腊语中,如果一个单字的最末一个字母是小写sigma,要把该字母写成 ς ,此 ...

  8. AI 数学基础:概率分布,幂,对数

    1.概率分布  参考: https://blog.csdn.net/ZZh1301051836/article/details/89371412 p 2.幂次的意义 物理理解:幂次描述的是指数型的变化 ...

  9. AI 数学基础 : 熵

    什么是熵(entropy)? 1.1 熵的引入 事实上,熵的英文原文为entropy,最初由德国物理学家鲁道夫·克劳修斯提出,其表达式为: 它表示一个系系统在不受外部干扰时,其内部最稳定的状态.后来一 ...

随机推荐

  1. CSS3 & CSS var & :root

    CSS3 & CSS var & :root How to change CSS :root color variables in JavaScript https://stackov ...

  2. c++ 获取兄弟窗口

    // 返回给定窗口上方窗口的句柄. HWND prevSibling = GetWindow((HWND)0x1011C, GW_HWNDPREV); printf("%x\n", ...

  3. ng 基础

    文档 组件的工作只管用户体验,而不用顾及其它. 它应该提供用于数据绑定的属性和方法,以便作为视图和应用逻辑的中介者 组件应该把诸如从服务器获取数据.验证用户输入或直接往控制台中写日志等工作委托给各种服 ...

  4. java放射机制的学习心得

    概述 之前在了解Spring的类加载机制的时候,了解了java的反射机制.但是,我对反射理解一直不深.也一直有点疑惑:Spring为什么利用反射创建对象?直接new对象和依靠反射创建对象有什么区别?什 ...

  5. Vue学习笔记-django-cors-headers安装解决跨域问题

    一  使用环境: windows 7 64位操作系统 二  jango-cors-headers安装解决跨域问题(后端解决方案) 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的 ...

  6. 最常用SQL joins:内连接(交集)、左外连接、右外连接、左连接、右连接、全连接(并集),全外连接

    1.内连接.两个表的公共部分用Inner join,Inner join是交集的部分. Select * from TableA A inner join TableB B on A.key=B.ke ...

  7. Docker的架构

    一.Docker引擎 docker引擎是一个c/s结构的应用,主要组件见下图: Server是一个常驻进程 REST API 实现了client和server间的交互协议 CLI 实现容器和镜像的管理 ...

  8. wxWidgets源码分析(8) - MVC架构

    目录 MVC架构 wxDocManager文档管理器 模板类创建文档对象 视图对象的创建 创建顺序 框架菜单命令的执行过程 wxDocParentFrame菜单入口 wxDocManager类的处理 ...

  9. 通过 .NET NativeAOT 实现用户体验升级

    前言 TypedocConverter 是我先前因帮助维护 monaco-editor-uwp 但苦于 monaco editor 的 API 实在太多,手写 C# 的类型绑定十分不划算而发起的一个项 ...

  10. 二叉树、平衡二叉树、红黑树、B树、B+树与B*树

    转: 二叉树.平衡二叉树.红黑树.B树.B+树与B*树 一.二叉树 1️⃣二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图: 基于二叉查找树的这种特点,在查找某个节点 ...