图灵完备(Turing Completeness)

901 阅读6分钟

什么是图灵完备

  • 可计算性理论,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟任何图灵机,那么它是图灵 完备

什么是可计算性理论

  • 在计算机科学中,可计算性理论(Computability theory)作为计算理论的一个分支,研究在不同的计算模型下哪些算法问题能够被解决。相对应的,计算理论的另一块主要内容,计算复杂性理论主要研究一个问题怎样才能被有效解决

    • 什么是计算理论

      • 计算理论(Theory of computatioin)是数学的一个领域,和计算机有密切关系,其中的理论是现代密码协议、计算机设计和许多应用领域的基础。该领域主要关心三个问题:

        • 采用什么计算模型(即形式语言、自动机)
        • 解决哪些是可计算的、哪些是不可计算的(即可计算性理论及算法)
        • 要用多少时间、用多少存储(即计算复杂性理论)
        •       这三方面的问题可以用一个问题来总结:电脑的基础能力及限制到什么程度
    • 什么是计算模型

      • 计算模型(Computational model)是运算科学中的一个数学模型,它使用大量的运算资源来用计算机模拟研究一个复杂系统的行为。被研究的系统通常是一个复杂的非线性系统,这种系统不易取得简单、直观的解析解。相比于推导数学分析来解决问题,它是通过在计算机中调整系统参数并研究实验结果的差异来完成模型。模型的操作理论可以从这些实验来推断/推导

        • 解析解:又称为闭式解(Analytic expression),是可以用解析表达式来表达的解。在数学上,如果一个方程或者方程组存在的某些解,是由有限次常见运算的组合给出的形式,则称该方程存在解析解。二次方程的根就是一个解析解的典型例子。在低年级数学的教学当中,解析解也被称为公式解
      • 常见的运算模型有天气预报模型、地球模拟器模型、飞形模拟器模型、分子蛋白质折叠模型和神经网络模型

    • 什么是计算复杂性理论

      • 计算复杂性理念(Computational complexity theory)是理论计算机科学和数学的一个分支,它致力于将可计算问题根据它们本身的复杂性分类,以及将这些类别联系起来。一个可计算问题被认为是一个原则上可以用计算机解决的问题,即这个问题可以用一系列机械的数学步骤解决,例如算法

      • 计算复杂性理论所研究的资源中最常见的是时间(要通过多少步演算才能解决问题)和空间(在解决问题时需要多少存储器)

        • 时间复杂度是指在计算机科学与工程领域完成一个算法所需要的时间,是衡量一个算法优劣的重要参数。时间复杂度越小,说明该算法效率越高,则该算法越有价值
        • 空间复杂度是指在计算机科学领域完成一个算法所需要占用的存储空间,一般是输入参数的函数。它是算法优劣的重要度量指标,一般来说,空间复杂度越小算法越好

什么是图灵机

  • 图灵机(Turing machine),又叫确定型图灵机,是英国数学家阿兰.图灵(Alan Mathison Turing)于1936年提出的一种将人的计算行为抽象化的数学逻辑机,其更抽象的意义为一种计算模型,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器

图灵机的艺术表示

  • 图灵机的基本思想:用机器来模拟人们用纸笔进行数学运算的过程,这个过程看作是下面两种简单的动作:

    • 在纸上写上或擦除某个符号
    • 把注意力从纸的一处移动到另一处
    • 在每个阶段,人要决定下一步的动作,依赖于:此人当前所关注的纸上某个位置的符号和此人当前思维的状态
  • 图灵机的构造:

    • 一条无限长的纸带TAPE:纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号表示空白。纸带上的格式从左到右依次被编号为0,1,2,..., 纸带的右端可以无限伸展

    • 一个读写头HEAD:它可以在纸带上左右移动,能读出当前所指的格子上的符号,并能改变它

    • 一套控制规则TABLE:它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态,按照以下顺序告知图灵机命令:

      • 写入(替换)或擦除当前符号
      • 移动HEAD,'L'向左,'R'向右或者'N'不移动
      • 保持当前状态或者转到另一个状态
    • 一个状态寄存器:它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态

复习:什么是图灵完备

  • 在可计算性理论范畴,如果一系列操作数据的规则(如编程语言、计算机指令集),当这套规则可以实现图灵机模型里的全部功能时,就称它为图灵完备的。图灵完备性被用作表达这种数据处理规则的一种属性,如今,几乎所有编程语言都是具有图灵完备性的
  • 一个有图灵完备指令集的设备被定义为通用计算机。它(计算机设备)有能力执行条件跳转(if、where、goto语句)以及改变内存数据
  • 图灵完备的语言,有循环执行语句,判断分支语句等。理论上能解决任何算法,但有可能进入死循环而程序崩溃
  • 非图灵完备语言:

    • 比如由正则表达式表示的正则语言,通过有限状态机进行识别
    • 下推自动机和上下文无关文法,一般用于在程序编译的初期阶段生成分析树
    • 数据语言:XML, HTML, JSON, YAML,通常用于表示结构化数据而不描述计算,有时也被称为标记语言/容器语言/数据描述语言

Reference

en.wikipedia.org/wiki/Turing…

zh.m.wikipedia.org/zh/%E5%9C%9…

www.zhihu.com/question/20…

www.youtube.com/watch?v=RPQ… (B站翻译:www.bilibili.com/video/BV18L…)

stackoverflow.com/questions/7…

www.cs.odu.edu/~zeil/cs390…