Turing机

官方信息技术老师·23 页·深入(追求细节与边界)·0 次浏览·2 天前
可计算性计算理论停机问题

图灵机:计算的数学模型

从纸带与状态机出发,到停机问题的不可解

按 空格/→ 演示下一步

1 / 23 页

全部页面点击任意一页,跳回舞台从这页播放

可计算性计算理论停机问题

图灵机:计算的数学模型

从纸带与状态机出发,到停机问题的不可解

1第 1 页 · 图灵机:计算的数学模型

历史背景与问题动机

上页我们看到一台精巧的'计算机器'凭空出现——但它为何被造出来?这要追溯到一场数学家追逐百年的梦想。

希尔伯特纲领
1900年提出:试图把全部数学建立在有限公理之上,严密自洽
判定性问题
1928年追问:是否有一台机器能判定任何数学命题的真假
哥德尔定理
1931年粉碎这一梦想,但'机械过程'本身仍待严格定义
图灵的回应
1936年用图灵机定义'可计算',并证明判定性问题无解
包治百病的万能药对应 →万能判定机

如同想炼一剂包治百病的药——Hilbert追问'有没有万能判定机',图灵证明不可能

2第 2 页 · 历史背景与问题动机

图灵机的核心思想

上页讲到图灵想回答"什么是可计算的"。他的绝妙思路是:与其争论什么是"思考",不如直接造一台最简单的机器,看它能做到什么。这台机器就是图灵机。

无限长纸带
存储符号的地方,向两端可以无限延伸
读写头
对准当前格,可读、可写、可左右移一格
有限状态
机器只有有限种内部状态,记录"现在算到哪了"
转移规则
看到某符号+处于某状态,就规定下一步动作
死板图书管理员对应 →图灵机的运行

书架=纸带,手指=读写头,规则表=转移函数。管理员只查表,从不思考

3第 3 页 · 图灵机的核心思想

图灵机的直观模型

从左到右读:纸带把符号交给读写头,符号与状态送进δ,δ决定写什么、换什么状态、头往哪移。

图解渲染中…
T无限长纸带,每格一个符号H读写头:读、写、移动三合一Dδ(q,σ)=(q',σ',d):有限规则表S有限状态之一;含停机态
4第 4 页 · 图灵机的直观模型

七元组的形式化定义

上一页我们用纸带和读写头搭出了图灵机的'实物模型'。但要做严谨的数学讨论,每个零件必须有一个精确的名字和取值范围——这就是七元组的意义。

Q 状态集合
机器的'内部模式',决定读到符号后下一步怎么走
Σ 输入字母表
初始纸带上允许出现的符号集合,不含空白符
Γ 磁带字母表
读写头能写下的所有符号,必须包含空白符 ⊔
δ 转移函数
核心规则:(状态,符号)→(新状态,新符号,方向)
初始/接受/拒绝态
即 q₀、q_accept、q_reject 三个状态,两两不同
一局国际象棋对应 →图灵机七元组

Q=棋局,Σ/Γ=棋子,δ=走法,q₀/q_accept/q_reject=开局/终局

M=(Q,Σ,Γ,δ,q0,qaccept,qreject)δ:Q×ΓQ×Γ×{L,R}M = (Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject}) \\ \delta: Q \times \Gamma \to Q \times \Gamma \times \{L, R\}
5第 5 页 · 七元组的形式化定义

状态集合与转移函数

上一页我们把图灵机装进七元组的盒子。现在打开盒子看内部:状态、字母表、空格符——这"三件套"如何决定机器的一举一动?转移函数又凭什么成为整个计算的灵魂?

状态集合 Q
图灵机"大脑"的全部模式,有限但可以是天文数字
字母表的层级 Σ⊂Γ
输入来自 Σ,但带子上还可出现 Σ 之外的符号(最典型就是空格符 B)
空格符 B 的双重身份
既不在 Σ 内(不算"输入"),又能被 δ 改写成其他符号
转移函数 δ
(q, X) → (q', X', D),一行规则定一次"看-改-走"
国际象棋对应 →图灵机核心要素

棋盘局面=状态,棋子=带符号,空格=空格符,落子规则=转移函数

δ:Q×ΓQ×Γ×{L,R}\delta: Q \times \Gamma \to Q \times \Gamma \times \{L, R\}
6第 6 页 · 状态集合与转移函数

状态转移函数的细节

从左到右读:左两个量是 δ 的输入(一对),右三个量是 δ 同一瞬间给出的输出。

图解渲染中…
fn转移函数 δ 是部分函数:未定义的 (q,a) 即停机dL=读头左移一格,R=右移一格
7第 7 页 · 状态转移函数的细节

即时描述的定义

上一页 δ 规定了「在状态 q 读到 x 该怎么办」——但光有规则还不够,我们还要能记录「这台机器当前算到哪了」。这一步的全部现场信息,就叫即时描述。

三要素
当前状态 + 整条纸带内容 + 读写头所在位置
记法 αqβ
α 为头左侧纸带,q 为当前状态,β 含头下符号与右侧纸带
快照式记录
每一步计算产出 1 个 ID,按时序串起来就是一次完整运行
单步迁移 ⊢
ID₁ ⊢ ID₂ 表示 ID₂ 由 ID₁ 经一次 δ 转移得到
游戏存档对应 →即时描述

存档 = 角色位置 + 背包 + 状态;ID = 头位置 + 纸带 + 状态

αqβ    αqβ\alpha q\beta \;\vdash\; \alpha' q' \beta'
8第 8 页 · 即时描述的定义

书写约定与表示法

前页我们用「即时描述」刻画图灵机的瞬间状态。但同一时刻,写法却有两种风格——下划线放哪里、空白怎么处理,不统一就会看着像两种语言。

下划线 = 头位置
下划线标在读写头当前扫描的符号下面,其余符号一律不画
空白是符号 B
空格不是「真空」,而是一个真实符号 B(或 ⊔),初始带上每格都是 B
尾部 B 默认省略
右侧连续若干 B 不写出来,默认延伸到无穷远
只有有限非 B
任何时刻带上只有有限个非 B 符号,其余都是被省略的 B 海洋
手指指着当前正读的字对应 →下划线标在读写头扫的符号下

手指和下划线都只标记一个位置,其余的字不带标记

q011011    BB011BBBq_0\,1\,1\,\underline{0}\,1\,1 \;\equiv\; \cdots B\,B\,\underline{0}\,1\,1\,B\,B\,B\cdots
9第 9 页 · 书写约定与表示法

即时描述的转换过程

从左到右是计算方向。每框是即时描述,箭头『a→b,D』是δ一次触发:读到a写b,读头按D移动。

图解渲染中…
A1状态写在读头左侧,紧跟读头所在的纸带内容A4经过连续3次δ转移得到的最终即时描述
10第 10 页 · 即时描述的转换过程

计算的起始与终止

ID 在转移函数驱动下一步步变形,但哪一步是「起点」?哪些状态宣告「结束」?这一页把计算的起止钉死。

初始配置
状态 q_0,输入串写在带上,读头对准最左符号,其余为空白 B
接受配置
当前状态为 q_accept;TM 进入即停机并接受
拒绝配置
当前状态为 q_reject;TM 进入即停机并拒绝
停机
δ(q,X) 无定义时停机;存在永不停止的 TM
自动售货机对应 →图灵机计算的起止

投币选品是初始;掉出饮料是接受;显示「售罄/金额不足」是拒绝;不再响应是停机

11第 11 页 · 计算的起始与终止

图灵机计算的执行步骤

图灵机的一次计算循环:读符号、查δ、写覆盖、移动、判断停机。

1
读取当前符号
扫描头读取当前格子上的符号,作为查 δ 的输入
2
查转移函数
用(当前状态, 读到的符号)查δ,得到下一步动作
3
写入新符号
把查表得到的新符号覆盖到当前格子上
4
移动读写头
按 δ 给出的方向,将扫描头左移或右移一格
5
更新并判停
切换到新状态;若为停机状态则终止,否则回到 st1
12第 12 页 · 图灵机计算的执行步骤

接受与拒绝的语言

上页我们看到 TM 一步步执行——但跑完之后,凭什么说机器'算'出了结果?这就要定义'接受'与'拒绝'。

接受 L(M)
M 在 w 上停于 q_accept,则 w ∈ L(M)
三种结局
接受、显式拒绝、无穷循环——死循环不属于拒绝
非确定性 TM
δ 对同一(状态,符号)可返回多个动作元组
NTM 接受语义
存在某分支进入接受态即接受(不要求全分支)
克隆探险队对应 →非确定性图灵机

遇岔路全员分裂,任一克隆抵出口即整队成功

L(M)={wΣ(q0,w)Mαqacceptβ}L(M) = \{w \in \Sigma^* \mid (q_0, \underline{\sqcup}\, w) \vdash_M^* \alpha\, q_{accept}\, \beta\}
13第 13 页 · 接受与拒绝的语言

实例:判定回文数

具体图灵机设计案例(配状态图)

实例:判定回文数
具体图灵机设计案例(配状态图)
14第 14 页 · 实例:判定回文数

子程序与模块化

状态复用、调用子例程的思想

子程序与模块化
状态复用、调用子例程的思想
15第 15 页 · 子程序与模块化

多带图灵机

上一页我们用一条纸带、一个读写头的图灵机完成了回文判定。自然要问——如果给它多条纸带,会算得更多吗?

多带图灵机的结构
k条独立纸带,每条一个读写头,可独立左右移动
转移函数的扩展
一步同时读k个、写k个、移动k个头
与单带TM等价
识别语言类相同,可计算函数类完全相同
等价性证明思路
单带TM用#和*把一条带虚拟划成k条,逐次扫描模拟
真正的优势在效率
可计算性不变,但能多项式加速大量算法
多核CPU对应 →多带图灵机

可执行的指令集相同(可计算性等价),但并行执行更快(效率提升)

δ(q,a1,a2,,ak)=(q,b1,b2,,bk,d1,d2,,dk), di{L,R,S}\delta(q, a_1, a_2, \dots, a_k) = (q', b_1, b_2, \dots, b_k, d_1, d_2, \dots, d_k),\ d_i \in \{L, R, S\}
16第 16 页 · 多带图灵机

多带到单带的模拟

看图理解多带→单带的编码思路:分隔符分轨,标记符定头,单带TM循环扫描模拟各带。

图解渲染中…
b2分隔不同虚拟带的符号,类似表格里的列分隔线b3标记虚拟带头位置,如带1读到 c 时记成 •cc2实际编码后的单带内容,#分轨、•标头
17第 17 页 · 多带到单带的模拟

通用图灵机

我们已经看到,多带图灵机能模拟单带图灵机。但能不能让一台固定不变的机器,去模拟任意一台图灵机?关键在于「编码」——把机器本身也变成可处理的数据。

机器编码为串
把图灵机的七元组改写成字符串,让机器本身成为可处理的数据
双输入
同时接受两个串:目标机器的编码 ⟨M⟩ 与该机器要处理的输入 w
逐步模拟
在通用带子上忠实复刻被模拟机器每一步的状态、符号、读写头位置
存储程序思想
程序与数据共存于同一介质——这正是现代计算机的诞生原点
万能播放器对应 →通用图灵机

播放器硬件固定却能播放任何视频;通用机不变却能执行任何图灵机的编码

U(M,w)=M(w)U(\langle M \rangle, w) = M(w)
18第 18 页 · 通用图灵机

停机问题的不可判定性

我们已经把图灵机形式化为精确的数学机器——那么自然会问:能否造一台万能机器,自动判定任意图灵机会不会停机?图灵在 1936 年给出震撼答案:不可能。

停机问题
给定图灵机 M 和输入 w,问 M 在 w 上是否会停机
假设万能判定器 H
H(⟨M⟩, ⟨w⟩) 输出「停机」或「不停机」,假设它存在
构造自指机器 D
D 把 H 对自身的判定反转:H 说停则死循环,不停则立即停
导出矛盾
D(⟨D⟩) 停机 ⟺ H(⟨D⟩,⟨D⟩)=不停机 ⟺ D(⟨D⟩) 不停机
结论:不可判定
H 不存在,停机问题没有统一算法可解
「这句话是假的」对应 →D(⟨D⟩) 的自指

句子判断自身真假导致悖论;D 把 H 的判定反转给自己,结构同构

$$D(\langle D\rangle)\text{ 停机} \iff \neg D(\langle D\rangle)\text{ 停机}$$
19第 19 页 · 停机问题的不可判定性

Church-Turing论题

上一页我们碰到了图灵机的天花板:停机问题不可判定。顺着这个缺口,一个自然的问题浮出来——会不会是我们描述「计算」的工具太弱,而不是计算本身有极限?

论题而非定理
断言:直觉上「可计算」=「图灵机可计算」。无法形式证明,因为一侧是日常语言
图灵机与λ演算等价
1936年图灵的机器模型与Church的λ演算从完全不同的角度出发,刻画了同一函数类
物理计算的极限
自然过程——大脑、量子系统——是否能算出图灵机算不出的东西?这是经验问题
质疑与超计算
彭罗斯主张意识超越算法;超计算模型(如无限时间图灵机)目前无物理对应
两位探险家从东西两侧登山对应 →图灵与Church独立定义可计算性

不同的路走到了同一个山口——说明山口是地形本身的特征,不是某条路的偶然

Turing-computableλ-definableintuitive computable\text{Turing-computable} \Leftrightarrow \lambda\text{-definable} \Leftrightarrow \text{intuitive computable}
20第 20 页 · Church-Turing论题

图灵机要点回顾

  • 七元组将算法从直觉变为可严格讨论的对象
  • 即时描述是刻画计算过程的唯一规范手段
  • 所有可计算问题都归约为状态转移序列
  • 通用图灵机证明一台机器可模拟一切计算
  • 停机问题划定了计算的不可逾越边界
延伸主题:计算复杂性与P vs NP问题λ演算与递归函数等价模型可计算性的更多不可判定问题
21第 21 页 · 图灵机要点回顾

图灵机 vs 其他计算模型

图灵机能读写无限磁带,有限自动机只能存有限状态——这一区别决定了它们能解的问题天差地别。

图灵机
  • 存储:无限长磁带,可随机读写
  • 语言:识别递归可枚举语言
  • 等价性:等价于λ演算与μ-递归函数
  • 能力上限:连停机问题都不可判定
有限自动机
  • 存储:仅有有限个内部状态
  • 语言:仅能识别正则语言
  • 等价性:等价于正则表达式
  • 能力上限:无法处理任意嵌套/计数
凡需'记住任意长度历史'的计算(括号匹配、回文判定)必须用图灵机;只做固定模式匹配或词法扫描,有限自动机更轻量。
22第 22 页 · 图灵机 vs 其他计算模型

课后思考

先独自想一阵,再对照参考答案看自己想偏了没有。

1如果一个图灵机能保证对任何输入都停机,它能解决停机问题吗?

参考答案不能。停机问题的不可判定性是数学事实,与机器实现无关。即使造出永停机,判定别人停不停仍是不可解的。

2图灵机模型能完整描述人类大脑的思维过程吗?缺口在哪?

参考答案不能完全描述。图灵机是离散符号变换,而人脑有模拟、并行、模糊、情绪等过程,可能需要新的计算模型来补充。

3量子计算的并行性是否突破了图灵可计算性的边界?

参考答案没有。可计算的函数集没变,只是某些问题从指数时间降到多项式时间。可计算性不等于计算效率。

23第 23 页 · 课后思考