有限自动机可分为三种类型:
- DFA
- NFA
- ∈-NFA。
∈-NFA和NFA之间的唯一区别是∈-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的简单规则–
1. a +的∈-NFA:
第一条规则指出,表达式中至少有一个“ a”,当它具有“ a +”时才是可以接受的。 ∈表示表达式中缺少其他符号,这不会使其无效。但是,从状态q2到q1有反馈,表明存在多个“ a”。
2. a *的∈-NFA:
第二条规则指出,“ a *”表示表达式中可以有0或n个数字。通过添加一个从q0到最终状态的循环,对a +的结构进行了一些修改,这意味着表达式可以完全没有任何内容并且仍然可以接受。
3. a + b的∈-NFA:
第三个规则a + b的作用类似于“或”逻辑。这意味着表达式可以具有a或b,并且可以接受。因此,有两条路径都通向最终状态。
4. ab的∈-NFA:
第四个规则是连接规则,该规则规定a必须紧跟b。只有这样,它才能达到最终状态。这里允许使用两种结构,但是因为它是∈-NFA,所以建议使用第二种结构。
5.对于L = bc(ab + c)* a +的∈-NFA:
遵循上述规则,将构造正规语言L = bc(ab + c)* a +的ε -NFA。
L = bc(ab + c)* a +可分为3部分-
- 第一部分是“ bc”,可以使用级联规则绘制,即第四条规则,即在原始规则中将a和b与b和c交换,我们在这里考虑额外的ε,因为它是epsilon NFA。
- 第二部分是’(ab + c)*’,它本身是三个规则的组合。如果我们将ab + c视为一个单位,则可以借助第二个规则a *来绘制(ab + c)*。现在,ab + c通过“ +”连接,因此我们可以借助第三条规则来绘制它。由于它是OR连接,因此将有两条路径,一条路径具有ab,另一条路径具有c。可以在串联规则的帮助下绘制“ ab”。下面是它的ε-NFA。
- 第三部分是“ a +”,这是第一个规则本身。现在,所有三个部分都使用串联规则相互连接。
最终的∈-NFA将为–