1869 words
9 minutes
Automata and Theory of Computation Learning Notes

Automata and Theory of Computation Learning Notes: Long-term Accumulation#

NOTE

本笔记旨在长期记录计算理论的学习过程,结构按照 Chomsky 谱系及计算复杂性逐步扩展。参考资源:哈工大形式语言与自动机

1. 有限自动机与正规语言 (Finite Automata & Regular Languages)#

1.1 形式定义与转移逻辑#

有限自动机通常由五元组 M=(Q,Σ,δ,q0,F)M = (Q, \Sigma, \delta, q_0, F) 定义:

  • QQ:状态的有限集合 (Finite set of states)
  • Σ\Sigma:输入字母表 (Input alphabet)
  • δ\delta:转移函数 (Transition function)
  • q0Qq_0 \in Q:初始状态 (Start state)
  • FQF \subseteq Q:接受状态集合 (Set of accept states)

转移函数 δ\delta 的核心差异:#

类型映射方式数学描述物理比喻
DFA状态 ×\times 字符 \rightarrow 状态δ:Q×ΣQ\delta: Q \times \Sigma \rightarrow Q单行道:每个输入必有且只有一个去向
NFA状态 ×\times 字符 \rightarrow 状态集δ:Q×ΣP(Q)\delta: Q \times \Sigma \rightarrow \mathcal{P}(Q)分身术:可并行探索多个路径或走向死胡同
  • ϵ\epsilon-闭包 (Epsilon-Closure):状态 qqϵ\epsilon-闭包 E(q)E(q) 是指从 qq 开始,仅通过空串 ϵ\epsilon 可达到状态集合。

1.2 正规表达式 (Regular Expressions, RE)#

正规表达式是描述正规语言的代数方法。

  • 设计逻辑:约束条件的表达 在设计 RE 时,需重点考虑如何通过局部结构的限制来表达全局约束。
    • 案例:不含连续 00 的 01 串 一个非常“精彩”且简洁的等价形式是:(1+01)(0+ϵ)(1+01)^*(0+\epsilon)
      • 「护卫者」逻辑 (Bodyguard Logic):在这个表达式中,每一个 0 的后面都紧跟着一个 1 作为它的“护卫”,从而杜绝了 00 出现的可能。末尾的 (0+\epsilon) 则允许字符串以一个孤立的 0 结尾。
      • 另一种形式1(011)(0+ϵ)1^*(011^*)^*(0+\epsilon)。这种形式则强调了以 1 开头,后续跟随着“0 + 至少一个 1”的组合。
  • Kleene 定理与状态消除法
    • 任何 FA 都有等价的 RE。
    • 状态消除法:通过递归公式 Rij(k)=Rij(k1)Rik(k1)(Rkk(k1))Rkj(k1)R_{ij}^{(k)} = R_{ij}^{(k-1)} \cup R_{ik}^{(k-1)}(R_{kk}^{(k-1)})^*R_{kj}^{(k-1)} 将自动机转换为 RE。这代表从 iijj 且中间状态编号不超过 kk 的路径集合。

1.3 证明方法:数学归纳法 (Mathematical Induction)#

在自动机理论中,常对字符串长度 n=wn = |w| 使用归纳法:

  1. 基础步骤:验证 n=0n=0(即 w=ϵw = \epsilon)时命题成立。
  2. 归纳假设:假设对于长度为 kk 的字符串 ww 命题成立。
  3. 递推步骤:考虑字符串 wawawa=k+1|wa| = k+1),利用转移函数 δ^(q,wa)=δ(δ^(q,w),a)\hat{\delta}(q, wa) = \delta(\hat{\delta}(q, w), a) 进行证明。

1.4 NFA 到 DFA 的转换:子集构造法 (Subset Construction)#

  • 核心思想:将 NFA 的所有可能状态组合看作 DFA 的一个新状态。
  • 状态爆炸:若 NFA 有 NN 个状态,转换后的 DFA 最多可能有 2N2^N 个状态。

1.5 构造方法:Thompson 构造法 (RE to NFA)#

Thompson 构造法是一种将正规表达式映射为等效 NFA 的系统方法。其核心在于递归地将子表达式通过 ϵ\epsilon 转移连接:

  • 并集 (Union, R+SR+S):创建一个新的开始和接受状态,通过 ϵ\epsilon 转移连接到 RRSS 的 NFA,形成“并行”结构。
  • 连接 (Concatenation, RSRS):将 RR 的接受状态与 SS 的起始状态直接相连或通过 ϵ\epsilon 转移相连,形成“串行”结构。
  • 闭包 (Kleene Star, RR^*)
    1. RR 的接受状态连回其起始状态(重复执行)。
    2. 增加一个新的起始状态和接受状态,通过 ϵ\epsilon 转移直接相连(匹配空串 ϵ\epsilon)。

1.6 泵引理 (Pumping Lemma) —— 正规性的试金石#

  • 核心直觉:鸽巢原理 (Pigeonhole Principle) 若一个 DFA 有 nn 个状态,而读取的字符串长度 wn|w| \geq n,则根据鸽巢原理,路径中必然存在重复的状态,即形成了一个“环”。
  • 形式化条件:若 LL 是正规语言,则存在常数 nn(泵长度),使得任何 wLw \in Lwn|w| \geq n 均可拆分为 w=xyzw = xyz,满足:
    1. xyn|xy| \leq n(环出现在前 nn 个状态内)
    2. yϵy \neq \epsilon(环不能为空)
    3. k0,xykzL\forall k \geq 0, xy^k z \in L(环可以被任意次“泵入”)

2. 课程体系参考 (Curriculum Overview)#

参考哈工大《形式语言与自动机》课程体系,目前已覆盖 2.1 - 2.5 章节:

HIT Curriculum Reference


3. 实战练习 (Practice Problems)#

3.1 证明语言非正规性 (Using Pumping Lemma)#

题目 1:证明 L={0i1ii0}L = \{0^i 1^i \mid i \geq 0\} 不是正规语言。

  • 反证法步骤
    1. 假设 LL 是正规语言,其泵长度为 nn
    2. 选定字符串 w=0n1nw = 0^n 1^n。显然 wLw \in Lw=2nn|w| = 2n \geq n
    3. 拆分 w=xyzw = xyz。由条件 xyn|xy| \leq n 可知,yy 必然全由 0 组成。
    4. k=0k=0(抽去环)或 k=2k=2(增加环)。此时 xy2z=0n+y1nxy^2z = 0^{n+|y|} 1^n
    5. 由于 y>0|y| > 0,故 n+ynn+|y| \neq n,导致 xykzLxy^k z \notin L,产生矛盾。
    6. 结论LL 不是正规语言。

题目 2:证明 L={0i1ji>j}L = \{0^i 1^j \mid i > j\} 不是正规语言。

  • 关键策略:Pumping Down (k=0k=0)
    1. w=0n+11nLw = 0^{n+1} 1^n \in L
    2. 根据 xyn|xy| \leq nyy 仍在 00 的区域内。
    3. 抽出 yy(即 k=0k=0),得到 xz=0n+1y1nxz = 0^{n+1-|y|} 1^n
    4. 由于 y1|y| \geq 1,则 n+1ynn+1-|y| \leq n,即 00 的数量不再大于 11
    5. 矛盾xzLxz \notin L

题目 3:证明 L={a3bncn3n3}L = \{a^3 b^n c^{n-3} \mid n \geq 3\} 不是正规语言。

  • 多维约束分析
    1. w=a3bncn3w = a^3 b^n c^{n-3}
    2. 由于 xyn|xy| \leq nyy 可能全由 aa 组成,或全是 bb,或两者的混合。
    3. Case 1 (y=amy = a^m):Pump yy 会改变起始 aa 的固定数量(必须为 3)。
    4. Case 2 (y=bmy = b^m):Pump yy 会打破 nc=nb3n_c = n_b - 3 的数量平衡。
    5. Case 3 (yy 为混合, y=arbsy = a^r b^s):Pump yy(例如 k=2k=2)会导致 aabb 交错出现(形成诸如 a3barbsa^3 b \dots a^r b^s \dots 的模式),直接破坏了语言要求的“全 aa 在前,全 bb 在后,全 cc 在末尾”的固定字符顺序。
    6. 结论:无论 yy 落在哪里,通过 Pump (k=0k=0k2k \geq 2) 均可推导出矛盾。

3.2 映射分类应用 (Set Theory)#

类型日本语形象类比 (旅馆房间)定义特征
Injective単射 (たんしゃ)每个客人都有独立房间,不拼房一对一,无重叠映射
Surjective全射 (ぜんしゃ)旅馆所有房间都住满了人陪域 = 值域
Bijective全单射每个房间刚好住一个人,且住满既是单射也是全射
  • 单射 (Injection):客房服务。每个客人对应一个不同房间,但不一定住满。
  • 满射 (Surjection):所有房间都住满了人,但可能有房间住了多个人。
  • 全单射 (Bijection):完美的匹配,每个人都有独立房间且刚好住满。

4. 后续学习路线 (Upcoming Topics)#

根据目前的对话进度,下一步将深入以下核心模块:

  • Myhill-Nerode 定理:通过等价关系(L\equiv_L)对字符串进行分类,是判定正规性与进行最小化的理论基石。
  • DFA 状态数最小化 (Minimization):将冗余状态合并,得到处理特定语言的最简机。
  • 上下文无关语法 (Context-Free Grammars, CFG):由 Chomsky 谱系的第 3 类转向第 2 类,研究比正规语言表达能力更强的语言。

5. 备考建议 (Japanese Exam Tips)#

  • 鸽巢原理:日本考研面试或笔试常考 Pumping Lemma 的本质,请记住其关键词 「鳩の巣原理」 (はとのすげんり)
  • 写像的严谨性:描述 δ\delta 时,注意区分 QQ 还是 P(Q)\mathcal{P}(Q),这决定了 DFA 还是 NFA。

整理自:Gemini 自动机学习规划对话 (针对日本大学院考试)

Automata and Theory of Computation Learning Notes
https://blog.yirong.site/posts/0047/
Author
Kuchina
Published at
2026-04-01
License
CC BY-NC-SA 4.0
ページ閲覧数: 読み込み中…
サイト閲覧数: 読み込み中…