∈-NFA 是有限自动机的一部分。 ∈ 是代表空输入的符号。 ∈-NFA 是允许自动机在没有输入的情况下改变其状态的表示,即即使输入为空,自动机也可以改变其状态。 ∈-非确定性有限自动机具有与常规 NFA 不同的转换函数。这是 ∈-NFA 的正式定义。
∈-NFA is defined in 5 tuple representation {Q, q0, Σ, δ, F} where
Q is the set of all states,
q0 is the initial state,
Σ is the set of input symbols,
δ is the transition function which is δ:Q × (Σ∪∈)->2Q and
F is the set of final states.
ε-NFA 的简单构造规则:
∈-NFA for a+ :
这里,“a+”意味着输入表达式中必须至少有一个“a”才能被接受。它在 epsilon 之前和之后,因为表达式可能包含也可能根本不包含任何其他内容。从状态 q2 到 q1 有 epsilon 反馈,因此表达式中可以有多个“a”。
∈-NFA for a* :
这里,’a*’表示表达式中可以有任意数量的’a’,包括0。前面的结构只是稍微修改了一下,这样即使没有输入符号,即如果输入符号为空,那么表达式也是有效的。
∈-NFA for a+b :
此结构接受 a 或 b 作为输入。所以有两条路径,都通向最终状态。
∈-NFA for ab :
对于串联,a 后面必须跟 b。只有这样才能达到最终状态。这里允许使用两种结构,但由于它是 ∈-NFA,所以推荐使用第二种结构。
∈-NFA 对于 L = (a+b)*bc+ :
按照上述规则,要构造正则语言的∈-NFA L = (a+b)*bc+。
L = (a+b)*bc+ 可以分为 3 个部分 – (a+b)* , b 和 c+。第一部分可以应用第三条规则绘制,然后应用第二条规则将 a+b 视为一个单位。第三部分是应用第一条规则绘制的,它们之间只是用’b’连接。
最终 ∈-NFA 将是: