Transformación de autómata finito no determinista a autómata finito determinista

(Redirigido desde «Transformación de AFND a AFD»)
Transformación de AFND a AFD
Información sobre la plantilla
AFND2AFD.png
Concepto:Algoritmo que permite encontrar a partir de un AFND un AFD equivalente.

Transformación de autómata finito no determinista a autómata finito determinista. Todo AFND estricto, o sea un AFND que no es AFND-V, puede ser transformado a AFD utilizando un algoritmo que transforma los estados del AFND en nuevos estados que son subconjuntos de los estados originales y aplica a los mismos la clausura para confirmar la conexidad entre cada uno de los componentes y así eliminar el indeterminismo.

Este algoritmo aunque siempre obtiene un AFD equivalente no puede decirse que sea la versión minimal del mismo, para ello deben aplicarse otras transformaciones.

Algoritmo

Sea un autómata finito estrictamente no determinista (AFND) definido por la 5-tupla A=<Q, T, g, F, q0>, donde Q es el conjunto de estados, T el alfabeto de símbolos terminales, la relación de transiciones Definicion relacion transiciones afnd basica.gif ó Definicion relacion transiciones afnd extendida.gif (léase: del estado qi mediante el terminal x se va a qj), F son los estados finales o de llegada dentro de Q, q0 es el estado inicial o de partida

  1. A se transforma en AAFD=<QA,T, gA,FA,q0A>', tal que:
    1. VA=P(V)-{{}}, con P(V) que es el conjunto potencia de los vértices de A.
    2. FA={x | AFND2AFD Existe f en F tal que f en x.gif}.
    3. gA={<r,x,q> | AFND2AFD g sub a Definicion Intermedia.gif}.
    4. q0A={q0}.
  2. Luego se eliminan de AAFD todos los estados y sus correspondientes transiciones inalcanzables desde el estado inicial q0A.

Ejemplo

Véase el proceso de transformación de AFND a AFD del autómata A=<{q0,q1,f},{a,b},{<q0,a,q0>,<q0,b,q0>,<q0,a,q1>,<q1,b,f>},{f},q0>, que reconoce a las cadenas de as y bs que comienzan con cualquiera cantidad de estas letras y terminan forzosamente en ab. El siguiente puede ser su diagrama de estados:

AFND2AFD Ejemplo 1 DE.gif

Primero se obtiene autómata derivado AAFD=<VAFD,TAFD,gAFD,FAFD,{q0}> a partir del conjunto potencia de los estados de A donde:

  • VAFD={{q0},{q1},{f},{q0,q1},{q0,f},{q1,f}, {q0,q1,f}}.
  • TAFD={a,b}.
  • FAFD={{f},{q0,f},{q1,f}, {q0,q1,f}}.

Cuyo diagrama sería:

AFND2AFD Ejemplo 1 DE Intermedio.gif

Luego se retiran los estados inaccesibles {q1}, {f}, {q1,f}, {q0,q1,f}, determinados mediante la clausura de {q0}, y queda:

  • AAFD={{q0,{q0,q1},{q0,f}},{a,b},{<{q0},b,{q0}>,<{q0},a,{q0,q1}>,<{q0,q1},a,{q0,q1}>,<{q0,q1},b,{q0,f}>,<{q0,f},a,{q0,q1}>,<{q0,f},b,{q0}>},{ {q0,f} },{q0}}.

AFND2AFD Ejemplo 1 DE Final.gif

Consecuencias

La existencia de este método permite la conversión de cualquier AFND a un AFD equivalente, es decir la eliminación del indeterminismo estricto (el mismo símbolo terminal conduce a más de un estado desde un origen común), aunque no garantiza que sea el AFD equivalente minimal. Para ello deben seguirse otros pasos de reducción del AF.

Otra situación pudiera darse en el caso que se desee, por ejemplo, a partir de una expresión regular se desee obtener su autómata finito determinista, mediante el algoritmo de Thompson se obtiene el AFND-V, luego se procede por el método de la clausura-xi a su conversión a AFND y entonces puede aplicársele al autómata la transformación a AFD.

Vease también

Fuentes

  1. Tanembaum, A. Compilers: Principles, Tecniques, and Tools. Tomo 1. ACM Press. 5ta Edición.
  2. Conferencias de la Asignatura "Compilación 1" del Departamento de Ciencias de la Computación de la Universidad de Oriente. Santiago de Cuba, 2000.
  3. Autómata finito en Wikipedia. Consultado el 25 de noviembre de 2013.
  4. Acevedo Martínez, Liesner; Osorio Ramírez, Karel. Manual de apoyo a la docencia. Técnicas de Compilación: Manual Práctico para estudiantes de Informática. Libro electrónico en PDF. UCI. La Habana, 2011.