1. Expresiones regulares para la estructura básica de NFA.
1. Primero revisemos las tres operaciones básicas de RE:
- Alternativa: para dos expresiones regulares M y N dadas, el operador de selección (|) forma una nueva expresión regular M|N. Si una cadena pertenece a M o N, pertenece a M|N.
- Concatenación: para dos expresiones regulares M y N dadas, el operador de concatenación (·) forma una nueva expresión regular M·N. El símbolo de concatenación generalmente se puede omitir, como (a|b) ·a define dos cadenas: aa, ab .
- Cierre de Kleene: El cierre de Kleene de la expresión regular M, denotada como M*, se define como la unión de todos los conjuntos formados al conectar M consigo mismo 0 o más veces.
2. RE a la NFA
Dado que NFA es la forma de implementación de RE y es equivalente en sí mismo, primero veamos el NFA correspondiente a las tres operaciones básicas. Aquí presentamos el método de construcción de Thompson:
Este método de construcción contiene tres operaciones básicas y el NFA correspondiente a un solo carácter:
-
una NFA correspondiente
-
b NFA correspondiente
-
NFA correspondiente a ab
-
a|b NFA correspondiente
-
a* NFA correspondiente
Nota: El estado con anillos dobles es un estado de aceptación.
Esta construcción comienza construyendo un NFA simple para cada carácter del RE de entrada y luego lo convierte de acuerdo con las operaciones básicas en el orden especificado por la prioridad.
Este método de construcción es relativamente simple de implementar. Cada NFA tiene un S(0) y un S(A). No hay transferencia desde S(A). Al conectar otros NFA, siempre use la transferencia ϵ para vincular el anterior. S (A) de NFA y el estado inicial de la siguiente NFA. Finalmente, cada estado tiene como máximo dos ϵ transiciones dentro o fuera de ese estado. Para cada símbolo del alfabeto, hay como máximo una transición hacia y desde ese estado. Estas propiedades simplifican la representación y operación de NFA.
3. Da ejemplos
Según el método de construcción de Thompson, construimos el proceso de transformación de la expresión regular a(b|c)* paso a paso.
-
Construya un NFA correspondiente a un solo carácter para a, b y c en el alfabeto.
-
Construya el NFA correspondiente a b|c
-
Construya el NFA correspondiente a (b|c)* y realice las operaciones básicas del cierre de Kleene en el NFA *1:
-
Realice la operación básica de conectar a frente a la Ecuación 2 para completar la transformación final. La Ecuación 2 representa el NFA de (b | c)
-
De hecho, en el ejemplo anterior se puede ver que NFA tiene una gran cantidad de estados innecesarios y transiciones ϵ, que se pueden convertir en DFA mediante algunos métodos de construcción de NFA, como el método de construcción de subconjuntos, para eliminar estas transferencias de estado no válidas y finalmente formar El DFA es el siguiente: