📜  从正则表达式设计有限自动机

📅  最后修改于: 2021-09-28 11:01:00             🧑  作者: Mango

先决条件——有限自动机正则表达式、语法和语言

在本文中,我们将看到一些流行的正则表达式以及如何将它们转换为有限自动机(NFA 和 DFA) 。让我们一一讨论。

概述 :
设 a 和 b 是输入符号,r 是正则表达式。现在我们必须为每个正则表达式设计 NFA 和 DFA。

从正则表达式设计有限自动机:
在这里,我们将讨论从正则表达式设计有限自动机如下。

情况1 :
当 r = Φ 时,则 FA 如下。

案例2:
r = ε 时,则 FA 如下。

案例 3:
r = a 时,FA 将如下所示。

案例 4:
r = a+b 时,则 FA 如下。

案例 5:
r = r = a * 时,FA 将如下所示。

案例 6:
r = a* + b* 时,FA 将如下所示。

案例 7:
r = (ab)* 时,则 FA 如下。

案例 8:
r = (ab)*b 时,则 FA 如下。

案例 9:
r = (ab)*a 时,则 FA 如下。

案例 10:
r = a*b* 时,FA 将如下所示。

案例 11:
r = (a+b)* 时,则 FA 如下。

一元设计:
设 a 是输入符号,r 是正则表达式。对于每个正则表达式,我们将设计有限自动机。

案例 1:r = a*

案例 2:r = (aa)*

案例 3:r = (aa)*a

案例 4:r = aaaa*

案例 5 : r= (aa + aaa)*

案例 6 : r=( aaa+aaaaa)*

案例 7:r=(aa + aaaaaa)*
它是 1 项的倍数,即 aa,因此可以简化为 r=(aa)*。

L= {an | n = 7x+12, x €  Z, x >=0 }

一般方法:
在这里,我们将讨论以下一些通用方法

方法一:

L = { aK1n+K2  ; n>=0 }

如果 K 1 > K 2 ,状态数 = 1
如果 K 1 2 ,状态数 = K 2 +1
如果 K 1 =K 2 ,状态数 = K 1 +1 = K 2 +1

方法2:

L = { aKn  ; n>0 , K is a fixed integer }

= { a Kn   ; n>=1。 K 是一个整数}
         状态数 = +1

方法 3 :

L = { aKn  ; n>=0 , K is a fixed integer }

这里,残基即K 2 =0,K 1 > K 2。 因此状态数 =