前置知识: 计算机基础

形式语言与自动机

00:00
10 min Advanced 2026/6/14

形式语言与自动机:正则语言、上下文无关文法、下推自动机与图灵机

1. 形式语言基础

1.1 基本概念

  • 字母表 :有限符号集合,如
  • 字符串:字母表中符号的有限序列
  • 空串 :长度为0的字符串
  • 语言 的子集,即字符串的集合

1.2 语言运算

  • 连接
  • 闭包
  • 正闭包

1.3 Chomsky 文法层次

| 类型 | 文法 | 自动机 | 产生式形式 | | ---- | -------------- | -------------- | ----------------------- | ------ | ---- | ----- | --- | | 0型 | 无限制文法 | 图灵机 | | | 1型 | 上下文有关文法 | 线性有界自动机 | | | 2型 | 上下文无关文法 | 下推自动机 | | | 3型 | 正则文法 | 有限自动机 | |

2. 有限自动机

2.1 确定性有限自动机(DFA)

DFA 是五元组

  • :有限状态集
  • :输入字母表
  • :转移函数
  • :初始状态
  • :接受状态集

示例:识别以 “01” 结尾的字符串的 DFA:

q0 --0--> q1
q0 --1--> q0
q1 --0--> q1
q1 --1--> q2 (接受)
q2 --0--> q1
q2 --1--> q0

2.2 非确定性有限自动机(NFA)

NFA 允许:

  • 同一状态同一输入有多个转移
  • 转移(不消耗输入)

2.3 DFA 与 NFA 等价

子集构造法:将 NFA 转换为 DFA。

最坏情况下, 状态 NFA 可能产生 状态 DFA。

2.4 DFA 最小化

Hopcroft 算法

  1. 初始划分:接受状态 / 非接受状态
  2. 对每个划分块,检查是否可进一步分割
  3. 重复直到不可分割

时间复杂度:

3. 正则语言

3.1 正则表达式

| 操作 | 语法 | 含义 | | ---- | --------- | --------------------- | -------------------- | | 并 | | | | 连接 | | | | 闭包 | | |

正则表达式 → NFA:Thompson 构造法。

DFA → 正则表达式:状态消除法。

3.2 正则语言的性质

封闭性:正则语言对并、连接、闭包、补、交、差运算封闭。

泵引理(Pumping Lemma)

是正则语言,则存在泵长度 ,使得 中任何长度 的字符串 可分解为 ,满足:

用途:证明某语言不是正则语言。

示例 不是正则语言。

3.3 Myhill-Nerode 定理

是正则语言 的等价类数有限。

等价关系:

4. 上下文无关文法(CFG)

4.1 CFG 定义

四元组

  • :非终结符集合
  • :终结符集合
  • :产生式规则
  • :起始符号

示例:匹配括号的语言

4.2 推导与语法树

最左推导:每次替换最左边的非终结符。

最右推导:每次替换最右边的非终结符。

歧义性:如果一个字符串有多棵不同的语法树,则文法是歧义的。

示例:算术表达式文法:

字符串 id + id × id 有两棵语法树(歧义)。

消除歧义:引入优先级和结合性。

4.3 Chomsky 范式(CNF)

每个产生式形如

任何 CFG 都可转换为 CNF。

4.4 CYK 算法

判断字符串 是否属于 CNF 文法的语言:

时间复杂度:

5. 下推自动机(PDA)

5.1 PDA 定义

七元组

  • 字母
  • 初始符号

5.2 PDA 与 CFG 等价

CFG → PDA每个非终结符,猜测产生式并匹配终结符。

PDA → CFG:将 PDA 的状态编码为 CFG 的非终结符。

5.3 确定性 PDA(DPDA)

DPDA 每个输入顶最有一个转移

DPDA 识别语言是 CFL 的真子集,称为确定性上下文无关语言(DCFL)

6. 上下文无关语言的性质

6.1 CFL 泵引理

是 CFL,则存在泵长 ,使得 中任何长 字符串 可分解为 ,满足:

示例 不是 CFL。

6.2 CFL 的封闭性

运算封闭性
封闭
连接封闭
闭包封闭
不封闭
不封闭
正则语言封闭

7. 图灵机

7.1 图灵机定义

元组

  • :带含空白符

7.2 图灵机的变体

变体与标准TM等价
带TM
非确定性TM
枚举
维带TM

7.3 不可判定性

停机问题:给定程序 输入 是否停机?

证明角化论证):

假设存在判定器 构造

产生矛盾。

7.4 可判定性层次

语言可判定性
正则语言成员问题可判定
CFL成员问题可判定,等价问题不可判定
递归语言成员问题可判定
递归枚举语言成员问题可判定

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式