形式陈述 $\varepsilon$ ε -NFA 是五元组 $N=(Q,\Sigma,\delta,q_0,F)$ N = ( Q , Σ , δ , q 0 , F ) :$Q$ Q 是有限状态集,$\Sigma$ Σ 是有限输入字母表,$q_0\in Q$ q 0 ∈ Q ,$F\subseteq Q$ F ⊆ Q ,并约定空字记号 $\varepsilon\notin\Sigma$ ε ∉ Σ ;转移函数为
$$ \delta:Q\times(\Sigma\cup\{\varepsilon\})\to\mathcal P(Q). $$ δ : Q × ( Σ ∪ { ε } ) → P ( Q ) . 标记 $\varepsilon$ ε 的转移不消耗输入。状态集 $S$ S 的 $\varepsilon$ ε -闭包 $E(S)$ E ( S ) 是从 $S$ S 出发只走零条或多条 $\varepsilon$ ε 边可达的全部状态。读字 $w=a_1\cdots a_n$ w = a 1 ⋯ a n 时,从 $E(\{q_0\})$ E ( { q 0 } ) 开始,反复执行
$$ S_i=E\!\left(\bigcup_{q\in S_{i-1}}\delta(q,a_i)\right), $$ S i = E ( ⋃ q ∈ S i − 1 δ ( q , a i ) ) , 若 $S_n\cap F\ne\varnothing$ S n ∩ F ≠ ∅ 则接受。每个 $\varepsilon$ ε -NFA 都可消去 $\varepsilon$ ε 转移得到等价 NFA,也可直接用带闭包的子集构造确定化。
直觉 $\varepsilon$ ε 边允许自动机在读入下一个符号前自由重排控制状态,便于把多个小自动机像电路模块一样拼接。
例子与边界 Thompson 构造用 $\varepsilon$ ε 边实现正则表达式的并、连接和星号。$\varepsilon$ ε 是空字的记号,不是输入字母;走一条 $\varepsilon$ ε 边与读取某个“空字符”不同。闭包必须允许零步,所以 $S\subseteq E(S)$ S ⊆ E ( S ) ,并需反复传递直到不再新增状态。允许 $\varepsilon$ ε 转移不会增加可识别语言类,只提高构造便利性;但若遗漏每次读符号后的闭包,确定化会得到错误语言。
推论与应用 $\varepsilon$ ε -NFA 是正则表达式编译、自动机组合和模型检查中的中间表示;将其与不含 $\varepsilon$ ε 边的 NFA 分开,可使每种子集构造的初态和转移公式保持清晰。
参考资料 John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,§2.5, finite automata with epsilon-transitions。 Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,§1.2, nondeterminism and epsilon transitions。