📜  普通语言的∈-NFAL = bc(ab + c)* a +

📅  最后修改于: 2021-07-02 16:50:32             🧑  作者: Mango

有限自动机可分为三种类型:

  1. DFA
  2. NFA
  3. ∈-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将为–