320 字
2 分钟
非确定的有穷自动机
2026-05-08
无标签

非确定的有穷自动机#

之前讨论了确定的有穷自动机(DFA),所谓确定,就是 δ(q,a)\delta(q, a) 对于每个状态 qq 和输入符号 aa 都有且仅有一个结果状态。对于非确定的有穷自动机(NFA),我们放宽这个限制,允许 δ(q,a)\delta(q, a) 可以有多个结果状态

(01)(00)(11)(01)(0|1)^*(00)(11)(0|1)^*

NFA 的定义:一个非确定的有穷自动机(NFA)是一个五元组 A=(Q,Σ,δ,q0,F)A = (Q, \Sigma, \delta, q_0, F),其中:

  • QQ 是状态的有限集合;
  • Σ\Sigma 是输入字母表;
  • δ:Q×(Σ{ε})P(Q)=2Q\delta: Q \times (\Sigma \cup \{\varepsilon\}) \to \mathcal{P}(Q)=2^{|Q|} 是转移函数,其中 P(Q)\mathcal{P}(Q) 表示 QQ 的幂集;
  • q0Qq_0 \in Q 是初始状态;
  • FQF \subseteq Q 是接受状态的集合。
TIP

与DFA的区别:

  1. 转移函数 δ=2Q\delta=2^{|Q|}
  2. 同一个输入符号可以有多个转移结果

带有空转移的非确定有穷自动机 (NFA-ε)#

可能不读字符就转移状态

定义:一个带有空转移的非确定的有穷自动机(NFA-ε)是一个五元组 A=(Q,Σ,δ,q0,F)A = (Q, \Sigma, \delta, q_0, F),其中:

  • QQ 是状态的有限集合;
  • Σ\Sigma 是输入字母表;
  • δ:Q×(Σ{ε})P(Q)=2Q\delta: Q \times (\Sigma \cup \{\varepsilon\}) \to \mathcal{P}(Q)=2^{|Q|} 是转移函数,其中 P(Q)\mathcal{P}(Q) 表示 QQ 的幂集;
  • q0Qq_0 \in Q 是初始状态;
  • FQF \subseteq Q 是接受状态的集合。
非确定的有穷自动机
https://biscuit0613.github.io/posts/formal_languages_and_automata/automationnfa/
作者
Biscuit
发布于
2026-05-08
许可协议
CC BY-NC-SA 4.0