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

原文:https://www . geesforgeks . org/design-有限自动机-from-正则表达式/

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

在本文中,我们将看到一些流行的正则表达式,以及如何将它们转换为 有限自动机(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 = ab 时,那么 FA 会如下。

情况-11 :r = (a+b)* 时,那么 FA 会如下。

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

案例-1 : r = a*

Case-2 : r = (aa)*

案例-3 : r = (aa)*a

病例-4 : r = aaaa*

Case-5:r =(aa+AAA)*

Case-6:r =(AAA+AAAA)*

Case-7:r =(aa+AAA) 它是 1 项的倍数即 aa,所以可以化简为 r=(aa)

L= {a<sup>n</sup> | n = 7x+12, x €  Z, x >=0 }

通用方法: 在这里,我们将讨论一些通用的方法如下。

法-1 :

**L = { a<sup>K</sup><sub><sup>1</sup></sub><sup>n+K</sup><sub><sup>2</sup></sub> ; n>=0 }**

If K1T34】K2状态数=T6】K1T9 T11】If K1T35】K2状态数=T17】K2+1T21If K1= K【T25

法-2 :

**L = { a<sup>Kn</sup>; n>0 , K is a fixed integer }**

= { aKn;n > =1。K 为整数} 状态数= K +1

法-3 :

**L = { a<sup>Kn</sup>; n>=0 , K is a fixed integer }**

此处,残数即 K 2 =0,K1T14【K2。因此状态数= K