图灵机与图灵完备

一、图灵

艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。

二、图灵机

2.1 图灵机模型

又称图灵计算、图灵计算机,是由数学家艾伦·麦席森·图灵(1912~1954)提出的一种抽象计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算。它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
在这里插入图片描述

以上只是图灵机模型的内容,而非具体的实现。

2.2 图灵机可以解决什么问题

假设上述模型里所说的功能都能被以某种形式物理实现,那么任意可计算问题都可以被解决。

计算问题的一些举例:

给定一个正整数n,判断它是否是质数
给定一个01序列,把他们按位取反
给定一个字符串,判断某个字符是否存在,及查找存在位置
给定一个逻辑蕴含的命题,求它的逆否命题
非计算问题的例子:

今晚吃什么
为什么太阳从东边升起

三、什么是图灵完备?**

3.1 简而言之

计算机之父艾伦 • 图灵发现,简单的机器有能力计算任何可计算的事物。如果机器具有通用的计算能力,那么它必须能遵循包含指令的程序,以便:
对存储器中的数据进行读写;
执行条件分支:如果存储地址具有给定的值,则跳转到程序的另一个点。

3.2 换一种复杂的说法

在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)按照一定的顺序可以计算出结果,被称为图灵完备(turing complete)。

一个有图灵完备指令集的设备被定义为通用计算机。如果是图灵完备的,它(计算机设备)有能力执行条件跳转(if、while、goto语句)以及改变内存数据。 如果某个东西展现出了图灵完备,它就有能力表现出可以模拟原始计算机,而即使最简单的计算机也能模拟出最复杂的计算机。所有的通用编程语言和现代计算机的指令集都是图灵完备的(C++ template就是图灵完备的),都能解决内存有限的问题。图灵完备的机器都被定义有无限内存,但是机器指令集却通常定义为只工作在特定的、有限数量的RAM上。

图灵完备的语言,有循环执行语句,判断分支语句等。理论上能解决任何算法。但有可能进入死循环而程序崩溃。

图灵不完备也不是没有意义,有些场景我们需要限制语言本身。如限制循环和递归, 可以保证该语言能写的程序一定是终止的。

比特币的脚本系统是图灵不完备的,以太坊的智能合约系统是图灵完备的。各有优缺点,图灵不完备会更安全些,图灵完备会更智能些。

3.3 最简单的图灵完备

人们最近发现,一种称为 MOV(数据传送)的 CPU 指令是图灵完备的。这意味着仅能执行 MOV 指令的 CPU 与完整的 CPU 在功能上并无不同:换言之,通过 MOV 指令可以严格地表达任何类型的代码。

这个重要概念在于,无论简单与否,如果程序能采用编程语言进行编码,就可以重写后在任何图灵完备的机器中运行。编译器是一种神奇的程序,能自动将代码从复杂的语言转换为简单的语言。

参考:
图灵完备到底是个什么鬼?
计算机科学精粹

猜你喜欢

转载自blog.csdn.net/xihuanyuye/article/details/109901121