先决条件——有限自动机介绍
非确定性有限自动机和 ε-非确定性有限自动机几乎相同,只是它们的转换函数,并且有一些特殊的 ε-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 开头,也以 1 结尾。从状态 q 2到 q 1存在 epsilon 反馈,因此表达式中可以有多个 a”。
∈-NFA for a* :
这个结构是针对 a* 的,这意味着表达式中可以有任意数量的 ‘a’,甚至是 0。前面的结构只是稍微修改了一下,这样即使没有输入符号,即如果输入符号为空,那么表达式也是有效的。
∈-NFA for a+b :
此结构接受 a 或 b 作为输入。所以有两条路径,都通向最终状态。
∈-NFA for ab :
对于串联,a 后面必须跟 b。只有这样才能达到最终状态。这里允许使用两种结构,但由于它是 ∈-NFA,所以推荐使用第二种结构。 ∈-NFA 对于 L = {ab, ba} :
按照上述规则,要构造正则语言 L ={ab, ba} 的 ∈-NFA。
语言由ab或ba组成,也可以写成(ab + ba)。按照构造加法或(a+b)的规则,我们必须构造主结构。然而,在这里,a+b 中的 ‘a’ 实际上是表达式 ‘ab’,而 a+b 中的 ‘b’ 实际上是表达式 ‘ba’。所以,我们只是分别替换它们的结构来代替 a 和 b。所以最终的 ∈-NFA 将有两条路径,一条为 ab,另一条为 ba,两者都通向最终状态。
按照构造串联或ab的规则,我们可以单独构造ab和ba的结构。对于串联,可以选择上述两种结构中的任何一种,即带有 epsilon 或不带 epsilon,但我们选择带有 epsilon 的一种,因为它是一个 ε-NFA。
最终 ∈-NFA 将是: