De expresiones regulares a NFA

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
    Insertar descripción de la imagen aquí

  • b NFA correspondiente
    Insertar descripción de la imagen aquí

  • NFA correspondiente a ab
    Insertar descripción de la imagen aquí

  • a|b NFA correspondiente
    Insertar descripción de la imagen aquí

  • a* NFA correspondiente
    Insertar descripción de la imagen aquí

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.

  1. Construya un NFA correspondiente a un solo carácter para a, b y c en el alfabeto.
    Insertar descripción de la imagen aquí

  2. Construya el NFA correspondiente a b|c
    Insertar descripción de la imagen aquí

  3. Construya el NFA correspondiente a (b|c)* y realice las operaciones básicas del cierre de Kleene en el NFA *1:
    Insertar descripción de la imagen aquí

  4. 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)
    Insertar descripción de la imagen aquí

  5. 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:

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ID314846818/article/details/128489363
Recomendado
Clasificación