📅  最后修改于: 2020-11-26 10:14:34             🧑  作者: Mango
我们可以使用汤普森的构造从正则表达式中找出有限自动机。我们将把正则表达式简化为最小的正则表达式,并将其转换为NFA,最后转换为DFA。
一些基本的RA表达式如下-
情况1-对于正则表达式’a’,我们可以构造以下FA-
情况2-对于正则表达式’ab’,我们可以构造以下FA-
情况3-对于正则表达式(a + b),我们可以构造以下FA-
情况4-对于正则表达式(a + b)*,我们可以构造以下FA-
第1步从给定的正则表达式构造一个Null的NFA。
步骤2从NFA中删除Null转换,并将其转换为等效的DFA。
问题
将以下RA转换为其等效的DFA − 1(0 + 1)* 0
解
我们将连接三个表达式“ 1”,“(0 + 1)*”和“ 0”
现在我们将删除ε过渡。从NDFA中删除ε过渡之后,我们得到以下结果-
它是对应于RE − 1(0 + 1)* 0的NDFA。如果要将其转换为DFA,只需应用第1章中讨论的将NDFA转换为DFA的方法。
具有零位移动的有限自动机(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之间存在ϵ移动,我们可以使用以下步骤将其删除-
问题
将以下NFA-ε转换为NFA,且不移空。
解
步骤1-
此处ε跃迁在q 1和q 2之间,因此让q 1为X且q f为Y。
在这里,对于输入0和输入1,从q f到q f的输出边缘。
步骤2-
现在我们将复制q 1的所有这些边,而不会更改q f的边,并得到以下FA-
步骤3-
这里q 1是初始状态,因此我们使q f也是初始状态。
所以FA变成-
步骤4-
这里q f是最终状态,因此我们使q 1也是最终状态。
所以FA变成-