📜  正则语言的∈-NFA L = (a+b)*bc+

📅  最后修改于: 2021-09-27 15:13:23             🧑  作者: Mango

∈-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 将是: