Método Thompson

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

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.

En informática, el algoritmo de construcción de Thompson, también llamado algoritmo de McNaughton-Yamada-


Thompson, es un método para transformar una expresión regular en un autómata finito no determinista
equivalente (NFA). Este NFA se puede utilizar para hacer coincidir cadenas con la expresión regular. Este algoritmo
se le atribuye a Ken Thompson.

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

La siguiente imagen muestra el resultado de la construcción de Thompson en (ε|a*b). El óvalo púrpura


corresponde a a, el óvalo verde azulado corresponde a a *, el óvalo verde corresponde a b , el óvalo naranja
corresponde a a * b , y el óvalo azul corresponde a ε .

Ejemplo de (ε|a*b) uso de la construcción de Thompson, paso a paso


Aplicación del algoritmo
Como ejemplo, la imagen muestra el resultado del algoritmo de construcción de Thompson en la expresión
regular (0|(1(01*(00)*0)*1)*)*que denota el conjunto de números binarios que son múltiplos de 3:

{ε, "0", "00", "11", "000", "011", "110", "0000", "0011", "0110", "1001", "1100", "1111" , "00000", ...}.

NFA obtenido de expresión regular (0|(1(01*(00)*0)*1)*)*

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:

q: empezar a convertir la expresión de la estrella de Kleene (0|(1(01*(00)*0)*1)*)*

b: comenzar a convertir la expresión de unión 0|(1(01*(00)*0)*1)*

a: convertir símbolo 0

p: empezar a convertir la expresión de la estrella de Kleene (1(01*(00)*0)*1)*

d: comenzar a convertir la expresión de concatenación 1(01*(00)*0)*1

c: convertir símbolo 1

n: empezar a convertir la expresión de la estrella de Kleene (01*(00)*0)*

f: comenzar a convertir la expresión de concatenación 01*(00)*0


e: convertir símbolo 0

h: empezar a convertir la expresión de la estrella de Kleene 1*

g: convertir símbolo 1

h: terminó de convertir la expresión de la estrella de Kleene 1*

l: empezar a convertir la expresión de la estrella de Kleene (00)*

j: comenzar a convertir la expresión de concatenación 00

yo : convertir símbolo 0

k: convertir símbolo 0

j: terminó de convertir la expresión de concatenación 00

l: terminó de convertir la expresión de la estrella de Kleene (00)*

m: convertir símbolo 0

f: terminó de convertir la expresión de concatenación 01*(00)*0

n: terminó de convertir la expresión de la estrella de Kleene (01*(00)*0)*

o: convertir símbolo 1

d: terminó de convertir la expresión de concatenación 1(01*(00)*0)*1

p: terminó de convertir la expresión de la estrella de Kleene (1(01*(00)*0)*1)*

b: terminó de convertir la expresión de unión 0|(1(01*(00)*0)*1)*

q: terminó de convertir la expresión de la estrella de Kleene (0|(1(01*(00)*0)*1)*)*

A continuación, se muestra un autómata determinista mínimo equivalente.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy