Método Thompson
Método Thompson
Método Thompson
El Algoritmo de Thompson es el algoritmo que permite a partir de una expresión regular obtener un autómata
finito no determinista con transiciones vacías (AFND-V) equivalente.
Las expresiones regulares y los autómatas finitos no deterministas son dos representaciones de lenguajes
formales. Por ejemplo, las utilidades de procesamiento de texto utilizan expresiones regulares para describir
patrones de búsqueda avanzada, pero las NFA son más adecuadas para su ejecución en una computadora. Por lo
tanto, este algoritmo es de interés práctico, ya que puede compilar expresiones regulares en NFA. Desde un punto
de vista teórico, este algoritmo es parte de la prueba de que ambos aceptan exactamente los mismos lenguajes,
es decir, los lenguajes regulares.
Un NFA puede hacerse determinista mediante la construcción del conjunto de potencias y luego minimizarse para
obtener un autómata óptimo correspondiente a la expresión regular dada. Sin embargo, una NFA también se
puede interpretar directamente.
Para decidir si dos expresiones regulares dadas describen el mismo lenguaje, cada una se puede convertir en un
autómata finito determinista mínimo equivalente mediante la construcción de Thompson, la construcción del
conjunto de potencias y la minimización de DFA. Si, y solo si, los autómatas resultantes aceptan el cambio de
nombre de los estados, los lenguajes de las expresiones regulares están de acuerdo.
Ejemplo
Ahora se dan dos ejemplos, uno pequeño informal con el resultado y otro más grande con una aplicación paso a
paso del algoritmo.
Pequeño ejemplo
{ε, "0", "00", "11", "000", "011", "110", "0000", "0011", "0110", "1001", "1100", "1111" , "00000", ...}.
La parte superior derecha muestra la estructura lógica (árbol de sintaxis) de la expresión, con "." que
denota concatenación (se supone que tiene aridad variable); las subexpresiones se denominan a - q
para fines de referencia.
La parte izquierda muestra el autómata finito no determinista resultante del algoritmo de Thompson,
con el estado de entrada y salida de cada subexpresión coloreada en magenta y cian, respectivamente.
Se omite una etiqueta de transición ε como para mayor claridad; las transiciones sin etiquetar son, de
hecho, transiciones ε. El estado de entrada y salida correspondiente a la expresión raíz q es el estado
de inicio y aceptación del autómata, respectivamente.
Los pasos del algoritmo son los siguientes:
a: convertir símbolo 0
c: convertir símbolo 1
g: convertir símbolo 1
yo : convertir símbolo 0
k: convertir símbolo 0
m: convertir símbolo 0
o: convertir símbolo 1