Está en la página 1de 17

Continuación Autómatas

Finitos
Clase 4

Elaboró: Dr. José Raymundo Marcial Romero


Diagrama principal

AFN

Expresiones AFD
Regulares

Manejador de
Tabla
Especificación Implementación de
léxica AFD

Elaboró: Dr. José Raymundo Marcial Romero


De AFN a AFD. Truco
• Simular el AFN
• Cada estado del AFD resultante
= a un subconjunto no vacío de estados del AFN.
• Estado de inicio
= el conjunto de estados del AFN alcanzables a través de
movimientos  desde el estado inicial del AFN.
• Agregar una transición S a S’ al AFD si y sólo si:
– S’ es el conjunto de estados alcanzables en el AFN
desde S leyendo el símbolo a.
• Considerando movimientos  también.

Elaboró: Dr. José Raymundo Marcial Romero


De AFN a AFD
• Pasos:

– Calcular la cerradura  de cada estado

– Construir los subconjuntos del Autómata


Cerradura 
• La cerradura de un estado se calcula
agregando todos los estados alcanzables por
una secuencia de transiciones 

• Definición inductiva de la cerradura(q)


– Base: q  cerradura(q)
– Inducción: p  cerradura(q) y r  (p,)  r 
cerradura(q)
Ejemplo de cerradura

cerradura(1) = {1,2,3,6,4}
Subconjuntos del Autómata
• Dado un AFN-
N=(QN, ∑, N, q0, FN)
Construimos un AFD
D=(QD, ∑, D, qD , FD)
Tal que L(D)=L(N)

Detalles de la construcción
QD={S | S  QN, y S  cerradura(S)}
Subconjuntos del Autómata
qD = cerradura(q0)

FD = {S | S  QD y SFN}

D = {S,a}
= {cerradura(p)|p  N(t,a) para algún tS}
Ejemplo: AFN a AFD

Elaboró: Dr. José Raymundo Marcial Romero


Solución

Elaboró: Dr. José Raymundo Marcial Romero


NFA a DFA. Notas
• Un AFN puede estar en más de un
estado al mismo tiempo.
• ¿Cuántos estados?
• Si hay N estados, el AFN debe estar en
algún subconjunto de estos estados.
• ¿Cuántos subconjuntos no vacíos
existen?
– 2N-1 = un número finito pero exponencial

Elaboró: Dr. José Raymundo Marcial Romero


Implementación
• Un AFD se puede implementar mediante una tabla
de 2 dimensiones T
– Una dimensión para los estados
– Otra dimensión para los símbolos de entrada
– Para cada transición (si,a)  sk definir T[i,a] = k
• Ejecución del AFD
– Para cada estado si y entrada a, leer T[i,a]=k y saltar al
estado sk.
– Muy eficiente.

Elaboró: Dr. José Raymundo Marcial Romero


Implementación de la Tabla

0 1
s t u
t t u
u t u
Elaboró: Dr. José Raymundo Marcial Romero
Implementación (Cont.)
• La conversión AFN -> AFD es parte de las
herramientas flex o jlex.

• Pero, Los AFDs pueden ser enormes.

• En la práctica, herramientas como flex


intercambian velocidad por espacio en la
elección de las representaciones de AFNs y
AFDs.

Elaboró: Dr. José Raymundo Marcial Romero


Análisis léxico
• La correctitud de los token en el lenguaje es
el primer trabajo ha realizar.

• Tips para construir sistemas grandes:


– Mantener el sistema simple
– Diseñar sistemas que puedan verificarse
– No optimizar de forma prematura
– Es más fácil modificar un sistema funcionando
que hacer que un sistema funcione.

Elaboró: Dr. José Raymundo Marcial Romero


Reglas de precedencia de
las Expresiones Regulares
• El operador * tiene la precedencia más alta .

• El siguiente en precedencia es el operador de


concatenación.

• Finalmente, se aplican los operadores de unión


con sus operandos.

– Ejemplo: la expresión 01* + 1 se aplica así: (0(1*))+1


Tarea
• Ejercicios 3.4.1 y 3.4.2 del libro de Aho
versión 2007.

• Investigar y estudiar un método para


minimizar un AFD.

También podría gustarte