title: 42. 图灵机 tags: zk computation theory Turing machine computability halting problem WTF zk 教程第 42 讲:图灵机 在上一讲中,我们介绍了计算理论的基本概念,包括有限自动机和正则语言。这一讲,我们将探讨计算理论中最重要的概念:图灵机。 图灵机 图灵机是由英国数学家艾伦·图灵在1936年提出的抽象计算模型。图灵机和有穷自动机类似的地方,但它有无限大的存储容量且任意访问内部数据,能够模拟任何计算机算法。 1.1 图灵机的基本结构 一个图灵机包含以下几个关键组件: 无限长的纸带:被划分为一个个单元格,每个单元格可以包含一个符号。 读写头:可以在纸带上左右移动,读取和修改纸带上的符号。
title: 42. 图灵机 tags: - zk - computation theory - Turing machine - computability - halting problem
在上一讲中,我们介绍了计算理论的基本概念,包括有限自动机和正则语言。这一讲,我们将探讨计算理论中最重要的概念:图灵机。
图灵机是由英国数学家艾伦·图灵在1936年提出的抽象计算模型。图灵机和有穷自动机类似的地方,但它有无限大的存储容量且任意访问内部数据,能够模拟任何计算机算法。
一个图灵机包含以下几个关键组件:

图灵机和有限自动机的主要区别包括:
这些差异使图灵机的计算能力远超有限自动机。
图灵机的工作过程如下:
让我们通过一个简单的例子来理解图灵机的工作原理。假设我们要设计一个图灵机来接受形如 0^n1^n 的语言(其中 n \geq 1),即包含连续的相同数量的0和1的字符串。
这个图灵机的工作过程如下:
一个图灵机可以形式化地定义为一个七元组 M = (Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject}),其中:
这两个概念对于后续学习计算复杂性理论至关重要。
图灵可识别(Turing-recognizable):如果一个语言能被某个图灵机识别,则称它是图灵可识别的。这意味着对于该语言中的任何字符串,图灵机都会最终接受它;对于不在该语言中的字符串,图灵机可能拒绝或永不停机。
亦即,在输入字符串上运行一个作为识别器的图灵机,可能出现三种结果:停机接受、停机拒绝和循环(指机器不停机)。
对于一个输入,图灵机有两种方式不接受:停机拒绝和循环。
图灵可判定(Turing-decidable):如果存在一个图灵机 M,对于一个语言中的任何输入,M 都会在有限步骤内停机并正确地接受或拒绝,则称该语言是图灵可判定的。这比图灵可识别更强,因为它要求图灵机对所有输入都能在有限时间内给出明确的接受或拒绝决定。
在输入字符串上运行一个作为判定器的图灵机,只可能出现两种结果:停机接受和停机拒绝。
所有图灵可判定的语言都是图灵可识别的,这意味着能够判定的问题必然也是可识别的。更进一步,一个语言是图灵可判定的,当且仅当它和它的补语言都是图灵可识别的。

多带图灵机有多个纸带和读写头,每个读写头可以独立移动。这种变体可以简化某些算法的设计,但在计算能力上与标准图灵机等价。
非确定性图灵机在每一步可以有多个可能的动作,有多个计算路径。如果存在一个可以到达接受状态的计算路径,则接受输入。这类图灵机在理论上与确定性图灵机具有相同的计算能力。

以太坊虚拟机(Ethereum Virtual Machine, EVM)被称为图灵完备的,这是因为它具备图灵机的所有计算能力。
EVM是以太坊智能合约的执行环境,其主要组成部分包括:
下面是EVM和图灵机的对比:
EVM具备动态可扩展的存储机制,能够执行复杂计算和条件跳转的指令集,支持无限循环和递归调用,总的来说,EVM的计算规则可以实现图灵机模型里的全部功能,时因此我们说EVM是图灵完备的。
算法是解决问题的一系列明确而精确的步骤,具有以下特征:
算法和图灵机之间存在着深刻的对应关系:
计算等价性:如果一个问题可以通过某种算法解决,那么理论上也存在一台图灵机能够解决这个问题,反之亦然。这就是著名的丘奇-图灵论题(Church-Turing thesis)。
步骤对应:算法的每一个步骤都可以映射到图灵机的一个或多个状态转换。
输入输出:算法的输入对应图灵机纸带的初始状态,输出对应计算结束时纸带的内容。
控制流:算法中的条件和循环结构对应图灵机中的状态转换和读写头的回头操作。
抽象级别:算法通常是高级的抽象描述,而图灵机提供了一个更低级的计算模型。
这一讲,我们介绍了图灵机,并解释了为什么EVM是图灵完备的。图灵机是计算理论的基石,帮助我们理解计算的本质和限制。