欢迎来到图灵机的世界!

如果这一章起初看起来有点让人头大,请别担心!图灵机(Turing machines, TMs)是计算机科学中最基础也最优雅的概念之一。阿兰·图灵(Alan Turing)在20世纪30年代设计出它,是为了回答一个极其深奥的哲学问题:

“‘可计算’究竟意味着什么?”

这些笔记将带你拆解阿兰·图灵的理论机器,解释它的组成部分,以及为什么它定义了现代计算机能力的边界。理解图灵机是掌握计算理论(Theory of Computation)核心的关键。


3.13.3 图灵机的构造

图灵机是一种简单且抽象的计算模型。虽然它看起来很基础,但在理论上,它具备执行现代数字计算机所能完成的任何计算的能力。它被视为一台仅能运行单一固定程序的计算机。

类比:流水线机器人

将图灵机想象成一个在无限长流水线上工作的最简机器人:

  • 它在一条长传送带(纸带,Tape)上运行。
  • 它通过机械臂(读写头,Read-write head)读取、写入或擦除符号。
  • 它遵循一套严格的准则(转换规则,Transition rules),这些规则基于它当前的内部状态(状态,State)。

图灵机的五个基本组成部分

图灵机的单一固定程序由以下五个理论部分定义:

1. 无限纸带 (Infinite Tape)

这相当于图灵机的内存和输入/输出空间,被划分为一个个标记好的格子(squares)

  • 纸带上存储着一系列符号。
  • 关键点在于:纸带在其中一个方向上是无限延伸的(尽管有时从概念上将其视为双向无限,但考试重点关注单向无限模型)。
2. 有限符号集 (Finite Alphabet of Symbols)

这是可以写在纸带上的有限字符集合(例如:“0”、“1”以及一个代表“空格”的特殊符号)。

注:教学大纲不区分输入字母表(初始数据允许的符号)和纸带字母表(机器能使用的所有符号)。

3. 感应式读写头 (Sensing Read-Write Head)

这是执行工作的核心部分,它可以:

  • 读取当前所在格子的符号。
  • 写入(或重写)该格子上的新符号。
  • 沿着纸带移动,每次只移动一个格子(向左或向右)。
4. 有限状态集 (Q)

机器始终处于有限数量的内部配置之一,即状态(states)

  • 起始状态(Start State):计算开始时的特定状态。
  • 停机状态(Halting States):指那些没有发出转换的状态。当图灵机进入这些状态时,计算即告停止。
5. 转换规则 (Transition Rules, 即程序)

这些规则决定了机器的行为,通常通过转换函数(transition function)状态转换图(state transition diagram)来定义。


图灵机的表示与追踪

转换规则格式

图灵机的每一步都受一条规则支配。该规则基于机器的当前情况(当前状态和读取的符号),并定义产生的动作。

规则格式如下:

(当前状态, 读取的符号) \(\rightarrow\) (新状态, 待写入的符号, 移动方向)

例如,一条规则可能是:
\((q_1, 0) \rightarrow (q_2, 1, R)\)

含义:如果机器处于 \(q_1\) 状态并读取到一个“0”,它将进入 \(q_2\) 状态,将“0”改写为“1”,并将读写头向右移动。

转换函数 vs. 状态转换图

你需要明确:转换函数(形式化的规则列表)和状态转换图(可视化地图)是描述图灵机程序的等价方式。

  • 状态图: 状态用圆圈表示,转换用带箭头的线条表示。这种方式通常更易于可视化追踪。
  • 函数: 一份完整、无歧义的可能动作清单。

手动追踪简单图灵机

追踪是指按顺序执行图灵机的步骤以确定最终输出的过程。你需要记录以下三件事:

  1. 当前状态
  2. 纸带内容
  3. 读写头位置

避免常见的错误: 确保按照规则规定的正确顺序执行操作:
先写入新符号,然后移动读写头,最后更改状态。

关键点总结(第2节):

该过程是确定性的(deterministic):对于给定的(状态, 符号)对,只有唯一确定的下一步。机器会一直运行,直到触及停机状态为止。


图灵机的重要性与威力

什么是可计算的?

图灵机之所以基础,是因为它提供了计算的通用(形式化)模型。它为我们所说的“算法”提供了一个精确的数学定义。

如果一个问题能通过算法解决,我们称该问题是可计算的(computable)。如果图灵机能解决某个问题,那它就是可计算的;如果不能,它就是不可计算的(至少无法通过算法解决)。

通用图灵机 (Universal Turing Machine, UTM)

标准的图灵机只能硬编码去解决一个特定问题(例如加法),而阿兰·图灵引入了一种可以解决特定图灵机所能解决的任何问题的机器。

UTM的定义

通用图灵机 (UTM) 是一种特殊的图灵机,它能够模拟任何其他图灵机 (M) 的行为。

UTM是如何工作的?

UTM不再内部固定程序,而是利用其纸带存储指令,从而像一台可编程计算机那样运作。UTM的纸带包含:

  1. 被模拟机器M的描述(即M的转换规则、字母表和状态)。
  2. 机器M需要处理的输入数据

UTM读取M的描述,并将M的规则应用于输入数据。这本质上就是在硬件上运行软件

为什么UTM如此重要?

UTM证明了单一机器(UTM硬件)可以完成无数专用机器的工作。这一概念为现代存储程序概念(Stored Program Concept)(冯·诺依曼体系结构)铺平了道路,即机器代码指令(程序描述)与待处理的数据存储在同一内存中。

快速回顾盒:TM 与 UTM
  • 标准 TM: 程序固定,解决单一问题。
  • UTM: 可编程,只要在纸带上给出机器的描述和输入,就能解决任何问题。

本章总结:核心要点

1. 结构: 图灵机由五个部分组成:无限纸带、有限字母表、读写头、有限状态集和转换规则。

2. 运行: 图灵机的行为由当前状态和读取的符号决定。它以确定性的方式运行,直到达到停机状态(无后续转换的状态)。

3. 重要性: 图灵机为可计算性提供了形式化定义。如果图灵机无法解决某个问题,那么该问题就是不可计算的。

4. UTM: 通用图灵机是一个革命性的概念,它证明了一台机器可以模拟任何其他机器,构成了现代可编程计算机的理论基石。