计算理论

图灵机

一台看起来很简单的机器,为什么能代表“所有计算”?

图灵机并不依赖现代电脑的芯片、屏幕或网络。它只用纸带、读写头和一套规则,就能展示“算法”本质上是什么。

先动手

先试一次,再理解原理

先动手拖动规则和步数,再回头看这些规则如何驱动纸带变化,理解会更直观。

互动实验

图灵机单步执行器

这是一台真实按规则推进的小型图灵机。你可以切换不同规则集,观察同一台机器如何因为规则不同而表现出完全不同的“算法行为”。

让机器走到输入末尾,再补上一个新的 1。

适合理解“扫描 -> 写入 -> 返回 -> 停机”的基本流程。

同一台机器只要换一套规则,就能从“观察”变成“改写输入”。

当前状态q0
执行步数0
机器状态等待下一步

当前读到符号 1,将执行规则 (q0, 1) -> (q0, 1, R),含义是:遇到 1 就继续向右扫描,直到找到输入尾部。

q0q1halt
下一条规则(q0, 1) -> (q0, 1, R)
0_
11
21
31
4_
5_
6_
7_
8_
读写头
读取1
写入1
移动R
转移q0

规则

(q0, 1) -> (q0, 1, R)

遇到 1 就继续向右扫描,直到找到输入尾部。

规则

(q0, _) -> (q1, 1, L)

扫描到空格后在末尾补一个 1,并开始向左返回。

规则

(q1, 1) -> (q1, 1, L)

回退状态下持续向左移动,直到触碰左边界。

规则

(q1, _) -> (halt, _, S)

回到边界后停机,说明这一轮补写已经完成。

快速认识

先用一句话知道它是什么

图灵机是一种把“算法”抽象成读、写、移动和切换状态的最小计算模型。

理解主线

再把关键变化顺下来

把纸带想成无限长的草稿纸,机器每次只看当前这一格。

它根据“现在看到的符号 + 当前状态”决定下一步写什么、往哪走、切到什么状态。

只要规则足够完整,这种逐步执行就能表达很复杂的计算过程。

核心公式

用模型把关系写清楚

状态转移函数

δ(q, s) = (q', s', d)

机器看到当前状态 q 和当前符号 s 后,会决定写入什么、切到哪个状态、再往哪个方向移动。

符号含义

  • q 当前状态
  • s 当前读到的符号
  • q' 下一状态
  • s' 要写回纸带的符号
  • d 移动方向,通常为 L / R / S

适用说明

  • 这是图灵机最核心的形式化描述。
  • 实验里的每条规则,实质上都在定义一行这样的映射。

运行规则

图灵机到底按什么规则运行

图灵机每一步都只做一件事:读当前格、按规则反应、移动读写头。

规则的完整格式通常可以写成:读取到什么 + 当前状态 -> 写入什么、向哪移动、切到什么状态。

如果某种“符号 + 状态”的组合没有对应规则,机器就会停下。

复制 1 并向右移动

(q0, 1) -> (q0, 1, R)

看到 1 时保持不变并继续向右扫描,常用于“跳过已有内容”或寻找边界。

遇到空格后写入结束标记

(q0, _) -> (q1, 1, L)

扫描到空白符号说明到达输入末尾,这时写入新符号并准备返回处理。

回退到起点继续下一轮

(q1, 1) -> (q1, 1, L)

在回退状态下持续向左移动,适合回到起始区或上一个关键位置。

满足条件后停机

(q1, _) -> (halt, _, S)

当读到边界且任务完成时进入停机状态,表示这段计算结束。

核心概念

把最重要的三个点讲清楚

纸带不是存储器替身,而是“信息现场”

它记录输入、中间过程和输出,让你看到计算并不是突然得到答案,而是逐格推进。

状态是机器的“注意力”

同一个符号在不同状态下会触发不同动作,这说明程序不仅看数据,也看自己处于哪一步。

规则表就是算法骨架

算法最关键的不是机器长什么样,而是遇到某种情况时要怎么反应。

现实应用

这些场景真的会用到它

编译原理与程序语义

它帮助我们判断一段程序到底能否被机械地执行,以及执行规则应如何被形式化。

可计算性研究

很多“机器到底能不能做这件事”的问题,都以图灵机作为最基础的判断模型。

计算机科学教学

它是理解自动机、复杂度、语言理论和程序模型的共同起点。

继续探索

继续探索:从图灵机走向有限自动机、编程语言与算法复杂度。

返回首页继续浏览