Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 2-Autómatas Finitos
Tema 2-Autómatas Finitos
DEFINICIN DE AFD.
2. Autmatas Finitos
Sea M1 = (Q, , , q0,F) donde Q={p,q,r}, ={a,b}, Sea p el estado inicial, F={r} y
definida como sigue:
(p,a)=q
(p,b)=r
(q,a)=p
(q,b)=q
(r,a)=r
(r,b)=r
2.1.2
REPRESENTACIN DE UN AFD.
Con un diagrama:
Cada estado no final se representa con un crculo; cada estado final se representa
con un doble crculo; se seala el estado inicial con una flecha entrando, sin
20
Inmaculada Luengo
2. Autmatas Finitos
etiqueta; por cada transicin (q,a)=t se dibuja una flecha dirigida del estado de
partida q al de llegada llegada t etiquetada a
Ejemplos:
La mquina M1 del ejemplo se representa con una tabla
a b
p q r
q
p q
*r
Observemos que cada una de ambas representaciones contiene toda la informacin del
autmata.
2.1.3
21
Inmaculada Luengo
2. Autmatas Finitos
2.1.4
Se trata de definir una funcin que describa qu estado se alcanza desde un estado q si a
continuacin en vez de entrar un slo smbolo (en cuyo caso se alcanzara el estado
descrito por (q,a)), entrara una palabra *.
Definimos : Q * Q por recurrencia sobre la longitud de la palabra .
Si || = 0 entonces = y definimos q Q , (q , ) = q (si no hay entrada no
hay cambio de estado).
Supongamos definido (q , x ) para cada x , tal que |x| n.
Sea * tal que ||=n+1, entonces se puede escribir = xa con |x|=n y a.
Ahora definimos q Q , (q , ) = (q , xa ) = (q , x ), a .
Ejemplo:
En nuestra mquina M1 sera
22
Inmaculada Luengo
2. Autmatas Finitos
(q ,ba ) = (q ,b ), a = (q , a ) = p
2.1.5
Ejemplos:
Las cadenas abb, baa, b, abbaaa son palabras aceptadas por M1. Las cadenas 01, 0001,
001001 son palabras aceptadas por M2.
2.1.6
L(M ) = * : (q 0 , ) F
Ejemplos:
El lenguaje de M2 son todas las cadenas de ceros y unos que empiezan por cero y tiene
al menos un uno
L(M ) = {x1y : x , y * }
2.1.7
EQUIVALENCIA DE AFDS.
2. Autmatas Finitos
estados, cuntos estados finales tenga, etc Digamos que un AFD es principalmente
una especie de filtro de todas las cadenas posibles sobre el alfabeto de entrada. Los
AFDs tienen muchas utilidades, en particular a nosotros nos interesa especialmente su
utilidad como analizadores lxicos. Cuando, por ejemplo, en un programa necesitamos
una expresin algebraica del tipo (a+b)*c/(d+e) debe estar correctamente escrita y de
comprobarlo se encarga precisamente un analizador construido a partir de un autmata.
Lo ms normal es que tengamos un lenguaje de inters L sobre un alfabeto y
construyamos un AFD cuyo lenguaje sea precisamente L.
Ejemplo:
Construir un AFD sobre el alfabeto ={0,1} cuyo lenguaje sea
L={cadenas que terminan en 00}
Un AFD para este lenguaje es
2.1.8
ESTADOS INACCESIBLES.
2. Autmatas Finitos
Ejemplo:
En el AFD M3 de la figura, el estado r es inaccesible por que no se puede alcanzar a
partir del estado inicial
2.1.9
AUTMATA CONEXO.
25
Inmaculada Luengo
2. Autmatas Finitos
columnas son exactamente la tabla del autmata, sin marcar el estado inicial ni los
finales, y la ltima columna se rellena de la siguiente manera: si la fila corresponde a un
estado final qiF, entonces mic="aceptar", pero si qiF, entonces mic="e".
Un algoritmo genrico, debe tratar de emular el funcionamiento del AFD, para
ello se inicializa una variable 'estado' con el estado inicial de la mquina concreta que
tengamos y a partir de ah se manda leer de la entrada, clasificar el smbolo ledo, y en
caso de que sea vlido cambiar de estado segn lo que diga la matriz introducida. Si
cuando se ha acabado de leer la palabra completa, es decir cuando el smbolo actual en
la cinta de entrada es la marca de 'fin de cadena', no se ha alcanzado un estado final, la
palabra leda no es del lenguaje del AFD y en la tabla se lee 'e' (recurdese como se
construy la columna de la matriz de entrada rotulada con 'fdc') y debe dar un mensaje
de error; si la palabra ha logrado llegar a un estado final el estado que se alcance ser
'Aceptar'. Este modelo es vlido para cualquier AFD. Pasamos estas ideas a un
algoritmo genrico:
ESTADO:=q0
REPETIR
LEER siguiente smbolo
CASO smbolo DE
SI smbolo, ENTRADA:=smbolo
SI smbolo es la marca de fin de cadena, ENTRADA:="fdc"
SI smbolo no es ninguno de los anteriores, salir a la rutina de ERROR
FIN CASO
ESTADO:= Tabla(ESTADO, ENTRADA)
SI ESTADO:="e" ENTONCES salir a la rutina de ERROR
26
Inmaculada Luengo
2. Autmatas Finitos
FIN SI
HASTA ESTADO:="aceptar"
Ejemplo:
fdc
aceptar
La matriz asociada a M3 es
0 1 fdc
p q s
q r
q e
aceptar
o bien
0 1 fdc
p
q e e
e e aceptar
q e
27
Inmaculada Luengo
2. Autmatas Finitos
Tabla 2.3. Tabla del analizador lxico del autmata M3 sin el estado de absorcin.
Dado un AFD se trata de construir otro equivalente pero que sea mnimo en cuanto al
nmero de estados.
Sea (Q, , q0, , F) un AFD. Definimos una relacin de equivalencia en Q: Dos estados
p,qQ son equivalentes,
pEq, si *, se tiene ((p,)F(q,)F)
El conjunto de estados del AFD mnimo es el conjunto cociente de esta relacin de
equivalencia de estados Q/E.
Para el clculo de este conjunto cociente definimos:
Dos estados p,qQ son equivalentes de orden r (r0),
pErq, si * tal que ||r se tiene ((p,)F(q,)F)
Para cada r la relacin Er es de equivalencia. De las definiciones anteriores se tiene
pEqpErq, r0.
Para obtener Q/E se va calculando Q/E0, Q/E1,... hasta que Q/Er=Q/Er+1=Q/E.
Lo hacemos por recurrencia sobre r.
Para r=0, como (p,)=p, dos estados p y q pueden ser equivalentes de orden 0
slo si ambos son estados finales (p,qF) o si ambos son estados no finales
(p,qF) as el conjunto cociente de la relacin de equivalencia E0 ser
Q/E0 = {F, F }.
Supongamos que hemos calculado el conjunto cociente para la relacin de
Para cada CiQ/Er ocurre uno de los dos casos excluyentes siguientes:
i) Para todo a, existe un j tal que (Ci, a)Cj , entonces incluimos Ci en
Q/Er+1.
ii) Existe a tal que para todo j=1,,k, (Ci,a) Cj, entonces hacemos
Ci=Ci1Ci2 de manera que para cada uno de los dos subconjuntos creados
28
Inmaculada Luengo
2. Autmatas Finitos
p r
*r
*s
p r
*r
*s
Cuidamos de que estn todas las transiciones (el AFD debe estar completo antes de
minimizarlo).
Consideramos ahora el cociente
2. Autmatas Finitos
vemos que se ajusta al punto i) anterior, luego esa clase entera pasa a ser una clase
tambin en Q/E1.
Veamos ahora lo que ocurre con la clase C02 de Q/E0. Consideramos
C13 = {t} (con el primer subndice indicamos siempre a que cociente pertenece, en
este caso a Q/E1).
Estudiamos ahora el conjunto Q/E2. La clase C11 pasa tal cual (comprobarlo), la
clase C13 tambin porque es una clase unitaria y no se puede subdividir ms. En
cuanto a la clase C12 = {p,q} ser
(C12,a) = {r}C1
(C12,b) = {q}C2
luego el conjunto cociente es Q/E1=Q/E2 y hemos terminado.
Este proceso se suele escribir ordenadamente en una tabla cuyas filas son clases y cuyas
columnas van rotuladas con los smbolos del alfabeto de entrada. En el cruce de fila y
columna se pone el conjunto imagen de la clase completa con el smbolo
correspondiente. Si est contenido en alguna de las clases actuales se mantiene y si no
est contenido en ninguna se subdivide y se vuelve a empezar. En nuestro caso quedara
algo as
30
Inmaculada Luengo
2. Autmatas Finitos
{r,s}C1
[r,s]
qC2
[p,q,t] {r,t}C1,C2
[p,q]
{r}C1
{q}C21
[t]
{t}C22
{q}C21
*C1 C1 C3
C2 C1 C2
C3
O bien
C3 C2
[p,q
[r,s]
[p,q]
*[r,s]
[r,s]
[t]
[t]
[p,q]
[t]
DEFINICIN DE AFND.
2. Autmatas Finitos
Sea M5= (Q,,q0,,F) siendo Q={p,q,r,s}, ={0,1,2}, sea p el estado inicial, F={q,s} y
la funcin de transicin dada por
(p,0)={q,r} (p,1)=
(q,0)={q}
(q,1)={q,s}
(r,0)=
(r,1)={s}
(s,0)={p}
(s,1)=
2.2.2
REPRESENTACIN DE UN AFND.
smbolos forman el alfabeto. Marcamos el estado inicial con una flecha de entrada
y cada uno de los estados finales con un asterisco. En cruce de la fila marcada con
el estado q y la columna marcada con el smbolo a del alfabeto ponemos el
conjunto de estados dado por (q,a).
Con un diagrama: Cada estado no final se representa con un circulo; cada estado
final se representa con un doble circulo; se seala el estado inicial con una flecha
32
Inmaculada Luengo
2. Autmatas Finitos
entrando, sin etiqueta; si (q,a)=A, por cada estado rA se dibuja una flecha
dirigida del estado de partida q al de llegada r etiquetada a.
Ejemplo:
p q,r
*q
q,s
*s
Y con un diagrama
Observemos que este AFND presenta dos puntos de no determinismo: uno en 'p' con 0
que pasa a 'q' y a 'r', y otro en 'q' con uno que pasa a 'q' y a 's'. Observemos tambin que
tanto la tabla como el diagrama contienen toda la informacin del autmata.
Podemos visualizarlo casi como un AFD: bombillas que se vern encendidas cuando el
estado en cuestin est activo, las bombillas de estado final de un color diferentedigamos, verde- y una palabra que ser procesada smbolo a smbolo en la cinta de
entrada. Al comenzar se enciende slo el estado inicial; a partir de ese momento y a
diferencia de lo que sucede en los AFDs, en cada momento podra verse encedido un
solo estado, varios o incluso apagarse todos, precisamente debido a que las transiciones
33
Inmaculada Luengo
2. Autmatas Finitos
ahora son conjuntos de estados. (En los AFDs en todo momento se encuentra
exactamente un estado activo).
2.2.3
Se trata, como ya hicimos con los AFD, de definir una funcin que describa qu estados
se alcanzan desde un estado q si a continuacin en vez de entrar un slo smbolo (en
cuyo caso se alcanzaran los estados descritos por (q,a)), entrara una palabra *.
Antes de continuar convenimos que para AQ escribiremos
( A, a ) = (r , a )
r A
Definimos Q *
Ahora definimos qQ ,
(q , xa ) = (q , x ), a = (r , a )
r ( q ,x )
(q , a ) = (q , a ) = (q , ), a = (q , a )
es decir la funcin de extensin a palabras y la funcin de transicin original coinciden
para palabras de longitud 1.
2.2.4
Sea * decimos que es una palabra aceptada por el AFND si partiendo del estado
inicial logra alcanzar alguno de los estados finales, es decir si
(q0 , ) F
Ejemplo:
34
Inmaculada Luengo
2. Autmatas Finitos
2.2.5
L(M)={* : (q0,) F }
Los autmatas finitos deterministas son un caso particular de los no deterministas en
que la imagen de cada par (q,a) es un conjunto unitario.
2.2.6
35
Inmaculada Luengo
2. Autmatas Finitos
es decir la unin de todos los estados que se alcanzan en la mquina dada desde los
estados que estn en A, con el smbolo a. Ahora M=(Q, , {q0}, , F) es un AFD y
afirmamos que L(M)=L(M).
Con esta construccin queda demostrado que el no determinismo no aporta nada
nuevo al conjunto de los lenguajes que son abarcables por medio de los AFDs, es decir
{L* : M=AFD, L=L(M)}={ L* : M =AFND, L=L(M)}.
Ejemplo:
Vamos a construir un AFD equivalente a M5. Aunque hemos dicho de forma genrica
que el conjunto de estados para la mquina nueva es P(Q), la mayora de las veces
muchos de estos nuevos estados van a ser inaccesibles por lo que podremos eliminarlos.
Lo que se hace es ir aadiendo estados a partir del estado inicial que en este caso es {p},
segn vayan apareciendo al definir la nueva tabla de transiciones. As, al comenzar, es
una tabla abierta, no sabemos cuntos de los nuevos estados sern accesibles. (Por
comodidad no escribimos las llaves de conjunto).
Las tablas de M5 y M5 son respectivamente
q,r
q,r
*q,r
q,s
*q
q,s
q,s
*s
*q,s
p,q
q,s
*p,q
q,r
q,s
36
Inmaculada Luengo
2. Autmatas Finitos
2.3 AUTMATA
FINITO
NO
DETERMINISTA
CON
TRANSICIONES (AFND-)
Una de las caractersticas de los autmatas vistos hasta ahora es que sin lectura de un
smbolo del alfabeto no hay transicin. El tipo de mquina que vamos a definir a
continuacin elimina esta restriccin permitiendo cambios de estado sin lectura.
37
Inmaculada Luengo
2. Autmatas Finitos
2.3.1
DEFINICIN DE AFND-.
Ejemplo:
(q,)={p}
(r,)=
(s,)={q}
2.3.2
REPRESENTACIN DE UN AFND-
Ejemplo:
p q,r
*q
q,s p
38
Inmaculada Luengo
2. Autmatas Finitos
*s
Y el diagrama
2.3.3
-CLAUSURA DE UN ESTADO
Ejemplo:
-cl(q)={p,q,r}
-cl(r)={r}
-cl(s)={q,s}
39
Inmaculada Luengo
2. Autmatas Finitos
2.3.4
Se trata de nuevo de definir una funcin que describa qu estados se alcanzan desde un
estado q si en vez de entrar un slo smbolo, entrara una palabra *.
Ser ahora :Q*P(Q) y definimos como siempre (q,) por recurrencia sobre la
longitud de .
Sea * tal que ||=n+1, entonces se puede escribir =xa con |x|=n. Ahora
definimos qQ
(q,xa)=-cl(( (q,x),a)).
((
))
(q , a ) = (q , a ) = cl (q , ), a = cl ( ( cl (q ), a ))
es decir la funcin de extensin a palabras y la funcin de transicin original no tienen
por qu coincidir para palabras de longitud 1, es decir los smbolos del alfabeto.
2.3.5
Sea * decimos que es una palabra aceptada por el AFND- si desde el estado
inicial y leyendo la palabra completa alguno de los estados que se alcanzan es final, es
decir si
(q0 , ) F
2.3.6
L(M ) = * : (q0 , ) F
Los AFND son un caso particular de AFND- en que todos las imgenes (q,) son el
conjunto vaco.
40
Inmaculada Luengo
2. Autmatas Finitos
(-cl(q),a) y los que se alcanzan a partir de stos por las transiciones , que son
' (q , a ) = (q , a ) = cl ( ( cl (q ), a ))
Ahora M es un AFND y afirmamos que L(M)=L(M).
Con esta construccin queda demostrado que las transiciones no aportan nada nuevo
al conjunto de los lenguajes que son abarcables por medio de los AFNDs-, es decir
41
Inmaculada Luengo
2. Autmatas Finitos
{L * : M = AFND , L = L(M )}
= {L * : M = AFND , L = L(M )}
= {L * : M = AFD , L = L(M )}
Los tres tipos de Autmatas vistos, a los que a partir de ahora llamaremos simplemente
Autmatas Finitos, son equivalentes en cuanto a los lenguajes que pueden abarcar.
Ejemplo:
p q,r
-clausura
p, r
*q
q,s p
*s
p p,q,r s
p, q, r
*q
p,q,r p,q,r,s
*s
p,r
{L * : AF , L = L( AF )}= {L * : G3 , L = L(G3 )}
Se demuestra por separado cada uno de los trminos de la doble inclusin.
42
Inmaculada Luengo
2. Autmatas Finitos
2.4.1
p q,r
*q
q,s
*s
43
Inmaculada Luengo
2. Autmatas Finitos
2.4.2
Suponemos que la gramtica G=(T,N,S,P) es conocida (debe ser una gramtica regular
a la derecha). Queremos construir un autmata M = (Q,,q0,,F) tal que L(G)= L(M).
Como conjunto de estados tomamos N {f} donde f es un smbolo que no pertenece al
alfabeto de no terminales; como alfabeto de entrada se toma el alfabeto de terminales de
la gramtica, T; como estado inicial se toma el estado representado por el axioma S de
la gramtica; como conjunto de estados finales tomamos F={f}; por ltimo definimos
las transiciones traduciendo las reglas de la gramtica de la forma siguiente:
Si A:=aB es una regla, definimos la transicin (A,a)=B.
Si A:=a es una regla, definimos la transicin (A,a)=f.
Si S:= es una regla, definimos la transicin (S,)=f.
Ejemplo:
B,C,f
B,f
B,D,f
D,f
*f
Por la regla A:=0B hemos puesto la transicin (A,0)=B. Por la regla A:=0 hemos
puesto la transicin (A,0)=f. Y as sucesivamente.
44
Inmaculada Luengo
2. Autmatas Finitos
L()L().
Si es una expresin regular, * es una expresin regular y representa a L()*.
Si es una expresin regular, + es una expresin regular y representa a L()+.
Si es una expresin regular, () es una expresin regular y representa a L().
Cualquier combinacin finita de expresiones regulares unidas mediante los
45
Inmaculada Luengo
2. Autmatas Finitos
2.6
EQUIVALENCIA
DE
EXPRESIONES
REGULARES
AUTMATAS FINITOS.
Lo que vamos a demostrar a continuacin es que los Lenguajes que pueden ser
expresados mediante una expresin regular, son todos y los nicos lenguajes que son
abarcables por los Autmatas Finitos.
Lo que se quiere comprobar principalmente es que dada una expresin regular existe
siempre un autmata cuyo lenguaje es el denotado por la expresin regular, es decir que
L(ER)L(AF). La demostracin es constructiva, el autmata obtenido es con transiciones y normalmente tiene muchos estados. Es conveniente combinar la intuicin
con el mtodo que se explica a continuacin.
La construccin se hace por recurrencia sobre el nmero k de operadores de la expresin
regular y demostrando que dada una expresin regular cualquiera siempre existe un AF,
con slo un estado final, cuyo lenguaje es el dado por la expresin regular.
Si k=0 la expresin regular slo puede ser de uno de los tres siguientes tipos:
i) r = , un AF cuyo lenguaje sea r es
ii) r = un AF cuyo lenguaje sea r es
46
Inmaculada Luengo
2. Autmatas Finitos
Sea r una expresin regular con k+1 operadores. La construccin del AF la haremos
segn cual sea el ltimo operador que interviene en r.
a) Si el ltimo operador es la concatenacin entonces podemos escribir r = r1r2
donde r1 y r2 tienen menos de k+1 operadores. Entonces, por hiptesis de
induccin, existen dos AF, M1y M2 tales que L(M1) = r1 y L(M2) = r2.
47
Inmaculada Luengo
2. Autmatas Finitos
Ejemplo:
Sea ={0,1} y sea r = 0*+1+0 y queremos construir un autmata cuyo lenguaje sea
exactamente el definido por la expresin regular r. El ltimo operador que interviene es
la suma
48
Inmaculada Luengo
2. Autmatas Finitos
Fig. 2.19. Otro AF con menos estados cuyo lenguaje es tambin r = 0*+1+0
x q = * : (q ,) F
es decir el conjunto de todas las palabras que desde q alcanzan algn estado final.
49
Inmaculada Luengo
2. Autmatas Finitos
Queremos escribir de manera ms explicita xq, para cada estado del autmata dado.
Observemos que
i) xq si y slo si qF
ii) Si r(q,a) y wxr entonces awxq o lo que es lo mismo si r(q,a) entonces axr
xq.
Con estas dos propiedades en mente escribimos lo que llamamos la ecuacin lineal del
estado q
Si qF escribimos
xq =
ax
Si qF escribimos
xq =
ax
a r ( q ,a )
a r ( q ,a )
xq =Axq+B
donde A es el conjunto de todas las palabras que partiendo de q llegan de nuevo a q y B
es el conjunto de todas las palabras que van de q a un estado final sin volver a pasar por
q. Entonces podemos escribir
xq = A*B
Debemos resolver el sistema usando las propiedades de las operaciones con lenguajes
hasta despejar x q0 = L(M ) .
Ejemplo:
2. Autmatas Finitos
p q,r
*q
q,s
*s
51
Inmaculada Luengo
2. Autmatas Finitos
Fig. 2.20. Relacin entre Gramticas regulares, Autmatas Finitos y Expresiones regulares.
52
Inmaculada Luengo