Skip to content

Lec 4 状态机

今天我们将介绍一种名为状态机(State Machine)的全新抽象概念,它可以帮助我们对算法的工作原理进行建模。我们将展示如何使用归纳法来证明状态机的性质。但首先,让我们来看一个例子

一、引例:8 拼图问题

初始状态:

1 2 3
4 5 6
8 7 *

目标状态:

1 2 3
4 5 6
7 8 *

问题: 仅通过将相邻方块滑入空格,能否从初始到达目标?
答案: 不能。我们将用不变量原理证明这一点。

二、状态机 (State Machine)

Definition 状态机(state machine):
  • 状态集合(states)
  • 初始状态(initial state)
  • 状态转移规则(transitions)
  • 确定性deterministic):每个状态至多一种转移。
  • 非确定性non-deterministic):某些状态有多种可能转移。

执行execution):从初始状态出发,按转移规则生成的状态序列。

Definition 什么是可达性(reachable)若存在某条执行路径能到达状态 s,则称 s 是可达的

8 拼图的状态机模型:

  • 状态:棋盘的所有排列(共 9! 种)
  • 初始状态:12345687
  • 转移:将一个方块滑入空格

三、可达性与不变量

有一种用于证明“状态不可达性”的强大技巧,称为“不变量原理(Invariant Principle)”。它本质上是数学归纳法在状态机上的一种应用。从抽象角度看,这个思想非常简单。

Definition 保持谓词(preserved predicate)是一个定义在状态上的谓词P(⋅), 满足在某个状态 s 中若P(s) 为真, 且 s -> t 是一次合法转移, 则P(t)也为真
Definition 不变量(invariant):对所有可达状态均为真的性质
Theorem 不变量原理(invariant

P() 对初始状态为真,且 P() 是保持谓词,则 P() 是不变量。

Proof.Q(n):执行序列 s0,s1,,snP(si) 对所有 i 成立。用归纳法:

  • Base caseP(s0) 由假设成立。
  • Inductive steps0,,sn 满足 Q(n),故 P(sn) 成立;由保持性,P(sn+1) 也成立。
Corollary推论 ** 若 P 是不变量且 P(s) 为假,则 s 不可达

证明:假设状态 s 是可达的,那么根据不变式定义, P(s) 必须为真。 但我们已知 P(s) 为假,矛盾,因此s不可达

四、8拼图的不可解性证明

4.1 计数逆序对

Definition. 序列 a1,a2,,an 中,逆序对是满足 i<jai>aj 的下标对 (i,j)。逆序对的数目称为逆序对数目number of inversions)。

例如:

  • 序列 1 2 3 4:没有逆序对
  • 序列 1 3 2 4:有 1 个逆序对(2,3)
  • 序列 4 1 3 2:有 4 个逆序对

现在考虑 8-puzzle 的棋盘配置。我们可以把棋盘映射为一个 1 到 8 的数字序列, 将棋盘排列删去 * 后得到序列。 那么现在问题是:

当我们在滑动拼图时,这个序列中的逆序对数量会发生什么变化?

  • 水平移动:不改变序列,逆序对数目不变。
  • 垂直移动* 跳过同行的两格,序列中某三个相邻元素 ai,ai+1,ai+2 循环移位为 ai+2,ai,ai+1。该操作恰好改变两对下标的逆序状态,逆序对数目变化量为偶数(Δ{2,0,+2})。

关键结论: 任何合法移动不改变逆序对数目的奇偶性

4.2 应用不变量

定义谓词 P(s):状态 s 对应序列的逆序对数目为奇数

  • P 是保持谓词(上述分析)。
  • 初始状态 12345687 的逆序对数目为 1(奇数),故 P(s0) 为真。
  • 由不变量原理,P 是不变量:所有可达状态的逆序对数目均为奇数。

目标状态 12345678 的逆序对数目为 0(偶数),P 为假,故目标状态不可达

五、终止性

到目前为止,我们已经看到如何使用状态机和不变式来讨论“可达性”。

状态机的另一个重要性质是:终止性(termination

Definition 状态机的终态(final state)是指没有任何可进行的转移的状态。
Definition 状态机是终止(terminates)的,是指不存在无限长的执行序列,即无论如何选择转移,最终必然到达终态。

直观来说,这意味着:

如果你不断运行这个状态机,无论每一步如何选择转移,最终都会到达一个终态。

5.1 导出变量法 / 势函数法

Definition 导出变量法(derived variable)又称势函数法(potential function) 是将状态映射到实数的函数 f
  • f 严格递减strictly decreasing):每次转移 st 均有 f(t)<f(s)

  • f 弱递减weakly decreasing):每次转移 f(t)f(s)

Theorem 若存在取值为自然数的严格递减 导出变量,则状态机是终止的

Proof idea. 若不终止则存在无限执行,对应自然数的无限严格递减序列,矛盾,因为自然数中不存在无限严格递减序列。

5.2 应用:简单排序算法的终止性

算法(Simple Sort): 对序列 a1,,an,反复找相邻逆序对 (ai,ai+1)ai>ai+1)并交换,直到不存在逆序对为止。

状态机模型:

  • 状态:输入序列的所有排列(permutations
  • 初始状态:给定的序列
  • 转移:根据算法描述的相邻交换
  • 终态:完全有序的序列

Claim. 所有终态均已排好序。(习题:用归纳法证明)。终态恰好是:

对所有 i,都满足 aiai+1

Theorem Simple Sort 必然终止

Proof. 取势函数 f(s)= 当前序列的逆序对数目(自然数值)。
每次交换一对相邻逆序对 (ai,ai+1),该对从逆序变为顺序,逆序对数目恰好减少 1(其余对不受影响)。故 f 严格递减,由定理知算法终止。

额外结论: 算法步数恰好等于初始序列的逆序对数目,至多为 n(n1)2

7. 关键术语速查

英文中文
State machine状态机
Deterministic / Non-deterministic确定性 / 非确定性
Execution执行(序列)
Reachable state可达状态
Preserved predicate保持谓词
Invariant不变量
Invariant Principle不变量原理
Inversion逆序对
Final state终态
Termination终止性
Derived variable / Potential function导出变量 / 势函数
Strictly / Weakly decreasing严格 / 弱递减