跳转至

Lec 13-15: 语言分析、有限状态自动机、图灵机

1. 形式语言 (Formal Language)

1.1 基本概念

  • 字母表 (alphabet) \(A\):非空有穷符号集
  • 字符串/字 (string/word):字母表中符号组成的有穷序列
  • 空串 (empty string) \(\varepsilon\):长度为 0 的字符串
  • 语言 (language) \(L\)\(A^*\) 的子集(\(A^*\)\(A\) 上所有字符串的集合)

1.2 乔姆斯基谱系 (Chomsky Hierarchy)

类型 名称 产生式形式
0 型 无限制文法 \(\alpha \to \beta\)
1 型 上下文有关文法 \(\alpha A \beta \to \alpha \gamma \beta\)
2 型 上下文无关文法 \(A \to \gamma\)
3 型 正则文法 \(A \to aB\)\(A \to a\)

2. 有限状态自动机 (Finite State Automaton)

2.1 定义

有限状态机 \(M(A,S,Y,s_0,F)\): - \(A\):输入字母表 - \(S\):有穷状态集 - \(Y \subseteq S\):接受状态集 - \(s_0 \in S\):初始状态 - \(F: S \times A \to S\):状态转移函数

2.2 状态转移图

用有向图表示自动机: - 顶点 = 状态 - 边 = 状态转移,标注输入符号 - 双圈 = 接受状态 - 箭头指向初始状态

2.3 正则语言 (Regular Language)

  • Kleene 定理:语言 \(L\) 是正则的 \(\leftrightarrow\) 存在有限状态机 \(M\) 使得 \(L = L(M)\)
  • 泵引理 (Pumping Lemma):所有长度超过状态数目的接受串 \(w\) 都可以表示为 \(w = xyz\),且 \(xy^mz\) 都会被 \(M\) 接受

2.4 机器化简

机器同余 (machine congruence):状态集上的等价关系 \(R\),满足 \(\forall s,t \in S\),若 \(sRt\),则对于所有输入 \(x\),有 \(F(x,s)RF(x,t)\)

商机器 (quotient machine) \(M/R\):将等价的状态合并后得到的简化机器

3. 图灵机 (Turing Machine)

3.1 基本构造

  • 一条无限长的纸带,每格可容纳一个字符
  • 一个读写头,可以在纸带上移动
  • 一系列关于读写头动作的规则

3.2 形式化定义

状态转移函数\(\delta: Q \times \Gamma \to Q \times \Gamma \times \{L,R,N\}\)

每条规则为五元组 \(q = \langle s_i, a_k, s_j, a_l, d \rangle\): - \(s_i, s_j \in S\):内部状态 - \(a_k, a_l \in A\):纸带字符 - \(d \in \{L,R,N\}\):左移、右移、不动

3.3 识别、枚举与判定

概念 说明
识别 属于语言的串在有限步被接受;否则被拒绝或永不停机
枚举 生成所有属于语言的串(可能永不停止)
判定 属于语言的串被接受;否则被拒绝(必停机)

定理:可识别 = 可枚举

3.4 停机问题 (Halting Problem)

  • 停机问题是不可计算
  • 不存在一个通用算法能判断任意程序是否会停止

4. 哥德尔不完备定理

4.1 哥德尔编码

\(p(n)\) 为第 \(n\) 个素数,\(L \subseteq A^*\)\(A = \{a_1,a_2,\ldots,a_n\}\),任意 \(w = a_{m_1}a_{m_2}\ldots a_{m_k} \in L\)

\[G(w) = \prod_{i=1}^{k} p(i)^{m_i}\]

4.2 通用图灵机

存在通用图灵机 \(U\),接受两个输入 \(a,k\)(其中 \(a\) 是图灵机的哥德尔数,\(k\) 是输入的哥德尔数),模拟 \(M(a)\) 在输入 \(I(k)\) 下的计算。

4.3 不完备定理

任何包含自然数定义的形式系统都是不完全的——存在既不能证明为真、也不能证明为假的命题。


← 抽象代数 | 返回首页