📜  从RE构造FA

📅  最后修改于: 2020-11-26 10:14:34             🧑  作者: Mango


我们可以使用汤普森的构造从正则表达式中找出有限自动机。我们将把正则表达式简化为最小的正则表达式,并将其转换为NFA,最后转换为DFA。

一些基本的RA表达式如下-

情况1-对于正则表达式’a’,我们可以构造以下FA-

有限自动机

情况2-对于正则表达式’ab’,我们可以构造以下FA-

RE1的有限自动机

情况3-对于正则表达式(a + b),我们可以构造以下FA-

RE2的有限自动机

情况4-对于正则表达式(a + b)*,我们可以构造以下FA-

RE3的有限自动机

方法

第1步从给定的正则表达式构造一个Null的NFA。

步骤2从NFA中删除Null转换,并将其转换为等效的DFA。

问题

将以下RA转换为其等效的DFA − 1(0 + 1)* 0

我们将连接三个表达式“ 1”,“(0 + 1)*”和“ 0”

NDFA具有用于RA的空过渡

现在我们将删除ε过渡。从NDFA中删除ε过渡之后,我们得到以下结果-

带有RA1的零过渡的NDFA

它是对应于RE − 1(0 + 1)* 0的NDFA。如果要将其转换为DFA,只需应用第1章中讨论的将NDFA转换为DFA的方法。

零运动的有限自动机(NFA-ε)

具有零位移动的有限自动机(FA-ε)不仅会在从字母表集中输入后转移,而且没有任何输入符号。没有输入的这种过渡称为空移

NFA-ε的形式为5元组(Q,∑,δ,q 0 ,F),由

  • Q-有限的一组状态

  • ∑-一组有限的输入符号

  • δ−过渡函数δ:Q×(∑∪{ε})→2 Q

  • Q 0 -初始状态q 0∈Q

  • F-一组Q的最终状态(F)Q)。

零空间的有限自动机

上面的(FA-ε)接受字符串集-{0,1,01}

从有限自动机中删除零位移动

如果在NDFA中,顶点X与顶点Y之间存在ϵ移动,我们可以使用以下步骤将其删除-

  • 找到所有从Y传出的边。
  • 从X开始复制所有这些边缘,而不更改边缘标签。
  • 如果X是初始状态,则使Y也是初始状态。
  • 如果Y是最终状态,则使X也是最终状态。

问题

将以下NFA-ε转换为NFA,且不移空。

零移动的有限自动机1

步骤1-

此处ε跃迁在q 1q 2之间,因此让q 1Xq fY。

在这里,对于输入0和输入1,从q f到q f的输出边缘。

步骤2-

现在我们将复制q 1的所有这些边,而不会更改q f的边,并得到以下FA-

步骤2之后的NDFA

步骤3-

这里q 1是初始状态,因此我们使q f也是初始状态。

所以FA变成-

步骤3之后的NDFA

步骤4-

这里q f是最终状态,因此我们使q 1也是最终状态。

所以FA变成-

最终的NDFA,没有零举动