
El proceso de conversión de un Autómata Finito No Determinista (AFND) a un Autómata Finito Determinista (AFD) es fundamental en la teoría de autómatas. Permite simplificar el análisis y la implementación de lenguajes regulares. Entender este proceso es clave para comprender cómo funcionan los compiladores y otros sistemas de procesamiento de texto.
Definiciones Clave
Un AFND puede tener múltiples transiciones para el mismo símbolo de entrada desde un estado dado. También puede tener transiciones ε (transiciones que no consumen ningún símbolo de entrada). En contraste, un AFD tiene exactamente una transición para cada símbolo de entrada desde cada estado. No existen transiciones ε en un AFD.
La conversión se basa en la idea de que un estado en el AFD representa un conjunto de estados en el AFND. Este conjunto representa todos los posibles estados en los que el AFND podría estar después de procesar una secuencia de entrada dada. Este proceso elimina la ambigüedad inherente al no determinismo.
Must Read
El Algoritmo de Conversión
El algoritmo se basa en la construcción de un nuevo autómata determinista cuyo conjunto de estados es el conjunto potencia de los estados del autómata no determinista original. Esto quiere decir, que cada estado en el autómata determinista representa un subconjunto de estados del autómata no determinista.
Paso 1: Calcular la Clausura ε (E-Closure). Para cada estado en el AFND, calcula su clausura ε. La clausura ε de un estado es el conjunto de todos los estados que se pueden alcanzar desde ese estado siguiendo transiciones ε solamente. Este conjunto incluye al estado original.

Paso 2: Estado Inicial del AFD. El estado inicial del AFD es la clausura ε del estado inicial del AFND. Este es el primer estado del AFD que se crea.
Paso 3: Construir la Tabla de Transiciones del AFD. Para cada estado (conjunto de estados del AFND) en el AFD y para cada símbolo de entrada del alfabeto:
- Calcula el conjunto de estados del AFND que se alcanzan desde el conjunto de estados actual del AFD al consumir el símbolo de entrada. Esto se hace uniendo las transiciones de cada estado en el conjunto por ese símbolo.
- Calcula la clausura ε del conjunto resultante. Este será el estado siguiente en el AFD para ese símbolo de entrada.
- Si este nuevo estado no existe ya en el AFD, agrégalo.
Paso 4: Estados Finales del AFD. Un estado en el AFD es un estado final si contiene al menos un estado final del AFND. Es decir, si alguno de los estados que conforman el conjunto que representa el estado en el AFD es un estado final en el AFND original, entonces ese estado en el AFD es final.

Ejemplo
Consideremos un AFND con estados {q0, q1, q2}, estado inicial q0, estado final q2, y las siguientes transiciones:
- δ(q0, a) = {q0, q1}
- δ(q1, b) = {q2}
La clausura ε de cada estado es:
- ε-clausura(q0) = {q0}
- ε-clausura(q1) = {q1}
- ε-clausura(q2) = {q2}

El estado inicial del AFD es {q0}. La tabla de transiciones se construye de la siguiente manera:
- Desde {q0} con 'a' vamos a {q0, q1}.
- Desde {q0} con 'b' vamos a {}.
- Desde {q0, q1} con 'a' vamos a {q0, q1}.
- Desde {q0, q1} con 'b' vamos a {q2}.
- Desde {q2} con 'a' vamos a {}.
- Desde {q2} con 'b' vamos a {}.
- Desde {} con 'a' vamos a {}.
- Desde {} con 'b' vamos a {}.
Los estados finales del AFD son {q0, q1} y {q2} porque contienen el estado final q2 del AFND.
Aplicaciones Prácticas
La conversión AFND a AFD tiene varias aplicaciones. Se utiliza en compiladores para el análisis léxico. También se usa en herramientas de búsqueda de patrones y en la verificación de modelos. La conversión permite implementar autómatas de forma más eficiente, ya que los AFD son más fáciles de simular y optimizar. La optimización de compiladores y la seguridad informática son campos que se benefician de esta técnica.