Skip to content

DFA–NFA 等价定理

DFA–NFA equivalence · Subset construction

每个 NFA 都可由识别同一语言的 DFA 模拟。

形式陈述

对 NFA N=(Q,Σ,δ,q0,F),构造 DFA

D=(P(Q),Σ,Δ,{q0},FD),

其中

Δ(S,a)=qSδ(q,a),FD={SQ:SF}.

对每个字 w,DFA 读完 w 后的状态恰为 NFA 从 q0 读完 w 后可达状态的集合,因此 L(D)=L(N)。若输入是 ε-NFA,则先消去空转移,或把初态与每次转移分别改为相应的 ε-闭包。

直觉

DFA 的一个状态记录 NFA 在读完当前前缀后“所有可能所在状态”的集合。确定性机器不选择分支,而是把全部分支压缩成一个幂集状态同步更新。

例子与边界

若 NFA 有 n 个状态,完整构造至多有 2n 个子集状态,实际只需保留从 {q0} 可达的部分。存在语言族使等价最小 DFA 确实需要指数多状态,所以表达能力相同不表示描述长度相同。空集是合法 DFA 状态,表示所有 NFA 分支均已死亡;不能因其不接受就从转移系统中随意删除。对 ε-NFA 若忘记闭包,会漏掉不消耗输入即可到达的分支。

推论与应用

该定理说明非确定性不会扩大有限自动机可识别的语言类,却可显著提高表示简洁性。子集构造用于词法分析器、正则表达式引擎、模型检查和 DFA 最小化前处理。

参考资料
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,§2.3。
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,§1.2。