Un autmata finito determinista es una quntupla que denotaremos de manera genrica por M=(Q,,q0,,F) donde: Q es un conjunto finito cuyos elementos llamaremos estados. es un alfabeto que llamamos alfabeto de entrada. q0Q es un estado sealado que llamamos estado inicial. F es un subconjunto de Q no vaco, cuyos elementos llamamos estados finales. es una aplicacin de QQ , que llamamos funcin de transicin. La funcin de transicin es la verdadera clave de la mquina. Obsrvese que es una aplicacin, as cada pareja posible formada por un estado y un smbolo del alfabeto debe tener una imagen y slo una, es decir (q,a)Q, cualquiera que sean qQ y a. Ejemplos: 19
Inmaculada Luengo
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 (q,a)=p (r,a)=r (p,b)=r (q,b)=q (r,b)=r
Segn nuestra definicin M1 es un AFD. Para visualizarlo de alguna forma imaginemos una especie de circuito electrico con tantas bombillas como estados, las correspondientes a los estados finales de color verde, las dems amarillas. Sobre una cinta de entrada escribimos una palabra con smbolos del alfabeto de entrada. Al poner a funcionar la mquina se enciende la bombilla correspondiente al estado inicial. A partir de ese momento se procesa el smbolo actual en la cinta de entrada transitando al estado definido en cada momento por la funcin de transicin hasta que la palabra de la entrada haya sido leido completa. Si la palabra a procesar fuese aabbab, se enciende el estado p inicial y a continuacin qprrrr. El estado que queda encendido es r que es final. Si la palabra a procesar fuese abbb la secuencia de estados sera pqqqq.
2.1.2
REPRESENTACIN DE UN AFD.
Tenemos dos maneras de representar un AFD Con una tabla: Se ponen tantas filas como estados, y tantas columnas como smbolos forman el alfabeto. Marcamos el estado inicial con una flecha de entrada y cada uno de los estados finales con un asterisco. En el cruce de la fila marcada con el estado q y la columna marcada con el smbolo a del alfabeto ponemos el estado (q,a). 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 q *r a b p q r r
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
Si observamos con un poco de atencin vemos que la transicin (p,1) no est representada, lo que contradice la definicin de AFD puesto que hemos afirmado que es una aplicacin. Lo que ocurre en realidad es que la mquina no ha sido completamente dibujada, por comodidad y claridad. Debemos entender que todas las transiciones que falten en el diagrama de un AFD van a un nico estado no final, que llamamos genricamente estado de absorcin. As el diagrama completo de M2 es:
El estado s es el estado de absorcin y con frecuencia desaparece del grfico del autmata, pero no debemos olvidar que est ah aunque no lo dibujemos.
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 *.
: Q * Q por recurrencia sobre la longitud de la palabra . Definimos (q , ) = q (si no hay entrada no Si || = 0 entonces = y definimos q Q ,
hay cambio de estado).
(q , ) = (q , xa ) = (q , x ), a . Ahora definimos q Q ,
2. Autmatas Finitos
2.1.5
Decimos que es una palabra aceptada por el autmata finito determinista M si desde el estado inicial entrando consecutivamente de izquierda a derecha los smbolos de la palabra en cuestin, se alcanza un estado final. Expresado con smbolos si
(q , ) F . 0
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
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.
Sean M y M dos AFDs, decimos que son equivalentes si L(M)=L(M`). Segn lo que hemos dicho hasta el momento los AFDs se caracterizan por las palabras que aceptan y es menos importante la estructura interna de la mquina, el nmero de 23
Inmaculada Luengo
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.
Sea M=(Q,,,q0,F) un AFD. Un estado qQ decimos que es inaccesible, si no existe ninguna palabra sobre el alfabeto de entrada que partiendo desde q0 llegue a q. Con smbolos ser
(q , ) q q inaccesible si * , 0
Los estados que no son inaccesibles decimos que son accesibles. Si eliminamos los estados inaccesibles y todas sus transiciones el AFD obtenido es equivalente al dado. 24
Inmaculada Luengo
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.
Un AFD decimos que es conexo si no tiene estados inaccesibles. Si un AFD no es conexo basta eliminar los estados inaccesibles y todas sus transiciones (las de entrada y las de salida) para obtener un nuevo AFD conexo equivalente al de partida. Ejemplo: El AFD M4 obtenido quitando a M3 el estado r y sus transiciones, es conexo
25
Inmaculada Luengo
2. Autmatas Finitos
2.1.10 CONSTRUCCIN DE UN ANALIZADOR LXICO A PARTIR DE UN AFD. Daremos a continuacin un mtodo genrico de construccin de un trozo de programa que nos vale como analizador de las palabras del lenguaje de un AFD dado, M=(Q, , q0, , F). Como datos de entrada se introducen el alfabeto de entrada de la mquina y una tabla M=(mij) de orden rc siendo r=|Q| y c=|| +1 donde la filas se rotulan con el nombre de los estados del autmata, las c primeras columnas se rotulan con los smbolos del alfabeto de entrada y la ltima con fdc (fin de cadena); en la posicin (i,j) se escribe mij = (qi , a j ) para i=1,,r y j=1,,(c-1), es decir las (c-1) primeras
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
Ejemplo:
en la rutina anterior basta sustituir la inicializacin de la variable ESTADO en la primera lnea del algoritmo por ESTADO:=p, puesto que en nuestro autmata el estado inicial es p. Si nuestro AFD est incompleto en la matriz de entrada del analizador podemos suprimir la fila correspondiente al estado de absorcin y en las casillas correspondientes a transiciones que lleguen a dicho estado escribimos una "e".
Ejemplo:
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
existan j y k tales que (Ci1,a) Cj y (Ci2, a) Ck e incluimos Ci1 y Ci2 en Q/Er+1 eliminando Ci.
Ejemplo:
Vamos a minimizarlo. Primero observamos que no es conexo y que 'u' es un estado inaccesible. Eliminamos dicho estado y sus transiciones y nos queda a p r q *r *s t r s r t b q q t t q
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
El AFDmn equivalente tiene slo tres estados y su tabla es a b [p,q O bien *[r,s] [t] a [r,s] [r,s] [t] b [p,q] [t] [p,q]
*C1 C1 C3 C2 C1 C2 C3 C3 C2
El tipo de autmata que vamos a definir a continuacin es esencialmente muy parecido al que definimos como AFD. La diferencia fundamental es que ahora permitiremos que desde un estado, con un smbolo del alfabeto se alcance no un nico estado, sino un 31
Inmaculada Luengo
2. Autmatas Finitos
subconjunto de estados (incluido el vaco). Formalmente un autmata finito no determinista M es una quntupla (Q, , q0 ,, F) donde Q es un conjunto finito a cuyos elementos llamamos estados es un alfabeto que llamamos alfabeto de entrada q0 es un estado sealado que llamamos estado inicial F es un subconjunto de Q, no vaco, cuyos elementos llamamos estados finales es una aplicacin de QP(Q), que llamamos funcin de transicin Obsrvese que ahora, desde un estado, con un smbolo de entrada se alcanza un conjunto de estados. Con smbolos (q,a) = AQ.
Ejemplo:
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} (r,0)= (s,0)={p} Segn nuestra definicin M5 es un AFND. (q,1)={q,s} (r,1)={s} (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 r *s 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 * P(Q ) , por recurrencia sobre la longitud de la palabra .
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
Sea M = (Q, , q0, , F) un AFND que supondremos conocido. Queremos construir un AFD, M, tal que L(M)=L(M). Antes de continuar debemos recordar que los autmatas se caracterizan por su lenguaje asociado y que la tcnica que vamos a presentar garantiza la existencia de un AFD equivalente, pero en ningn caso se da la unicidad, es decir hay muchos AFDs equivalentes a M. Nosotros construiremos uno de ellos. La idea para la construccin de la nueva mquina es que al ser Q un conjunto finito, el nmero de sus subconjuntos tambin lo es. Si tenemos que para cierto estado qQ y para cierto smbolo del alfabeto a, (q,a) = AP(Q), a fin de cuentas ese subconjunto podra ser representado por un nico estado en la nueva mquina que queremos construir. De modo que como conjunto de estados para M tomamos Q = P(Q), como alfabeto de entrada tomamos por supuesto el mismo , como estado inicial tomamos {q0}, como conjunto de estados finales tomamos todos los subconjuntos de Q que contengan algn estado final, formalmente F = {BP(Q) : BF } y definimos la nueva funcin de transicin :QQ como sigue: (A,a)=(A,a)=qA(q,a)
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 p *q r *s 0 q,r q 1 p *q,r 0 q,r q 1
q,s
q,s s
q *q,s *p,q
q p,q q,r
36
Inmaculada Luengo
2. Autmatas Finitos
Debemos hacer un par de observaciones. El estado marcado refleja la situacin de todos los estados inactivos en la mquina original -todas las bombillas apagadas- y es el estado de absorcin, por tanto si queremos dibujar el diagrama correspondiente no hace falta que lo incluyamos. Por otra parte es un estado en s mismo y debemos recordar que si ahora queremos minimizar el AFD obtenido es uno de los estados no finales y no debemos olvidarnos de incluirlo. Lo ms cmodo es renombrar en este punto los estados.
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-.
Un autmata finito no determinista con -transiciones es una quntupla M=(Q,,q0,,F) donde todos los elementos estn definidos como en los autmatas ya vistos, salvo la funcin de transicin :Q({})P(Q). Es decir ahora no slo hay transiciones del tipo (q,a) donde qQ y a, sino que tambin se definen transiciones del tipo (q,)=AQ.
Ejemplo:
2.3.2
REPRESENTACIN DE UN AFND-
La forma de representacin es similar a lo visto hasta ahora 1. Con una tabla: Se ponen tantas filas como estados rotuladas con los nombres de los estados; tantas columnas como smbolos tenga el alfabeto de entrada rotuladas con los nombres de los smbolos y se aade una columna rotulada . En el cruce de fila y columna se escribe el conjunto (q,a), como es habitual. 2. Mediante un diagrama: Se dibuja un crculo por cada estado no final y un doble crculo por cada estado final; se marca el estado inicial con una flecha que entra sin etiquetar; si r(q,a) se dibuja una flecha con origen en q y final en r, rotulada a (donde a es un smbolo del alfabeto o ).
Ejemplo:
p q,r *q 38 q
q,s p
Inmaculada Luengo
2. Autmatas Finitos
r *s
Y el diagrama
2.3.3
-CLAUSURA DE UN ESTADO
La -clausura de un estado p es el conjunto de estados a los que se puede llegar desde p slo por caminos etiquetados . Se debe observar que siempre p-cl(p) y por tanto -cl(p).
Ejemplo:
Vamos a escribir las -clausuras de cada uno de los estados de M6. -cl(p)={p,r} escribimos (A,a)=rA(r,a) Es sencillo demostrar que -cl(-cl(A))=-cl(A). -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 *.
:Q*P(Q) y definimos como siempre (q,) por recurrencia sobre la Ser ahora
longitud de .
Si ||=0 entonces =, definimos qQ, (q,)=-cl(q) (desde q, sin entrada de ningn smbolo, se alcanzan todos los estados de la -cl(q)).
(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
Los AFND son un caso particular de AFND- en que todos las imgenes (q,) son el conjunto vaco. 40
Inmaculada Luengo
2. Autmatas Finitos
Sea M=(Q,,q0,,F) un AFND- que supondremos conocido. Queremos construir un AFND M tal que L(M) = L(M). Antes de continuar debemos de nuevo recordar que esta construccin garantiza la existencia de un AFND equivalente, pero en ningn caso se garantiza la unicidad, es decir hay muchos AFNDs equivalentes a M; nosotros construiremos uno de ellos. La idea para la construccin de la nueva mquina es que desde cualquier estado q de la mquina original, cuando se lee en cinta un smbolo a del alfabeto, se alcanzan los nuevos estados en tres tiempos: los que se alcanzan desde q por transiciones (la clausura de q); los que se alcanzan por la lectura del smbolo ledo, que son
(-cl(q),a) y los que se alcanzan a partir de stos por las transiciones , que son
(q , a ) = cl ( ( cl (q ), a )) ' (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
p q,r *q r *s q p s
q,s p
{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
Sea M =(Q,,q0,,F) un autmata conocido (debe ser un autmata sin -transiciones). Queremos construir una gramtica G = (T,N,S,P) tal que L(M) = L(G). Tomamos como alfabeto de terminales el alfabeto de entrada del autmata, ; como conjunto de smbolos no terminales tomamos Q; como axioma para la gramtica tomamos q0, el estado inicial del autmata; por ltimo traducimos las transiciones del autmata en reglas para la gramtica de la forma siguiente: si (p,a) = q y qF aadimos la regla p:=aq si (p,a) = q y qF aadimos las reglas p:=aq y p:=a si q0F aadimos la regla q0:=.
Ejemplo:
p q,r *q r *s q q,s s
Una gramtica equivalente es G ={{0,1},{p,q,r,s},p,P}, siendo P las reglas p:= 0q / 0 / 0r q:= 0q / 0 /1q / 1 / 1s r:= 1s / 1 s:= 1p Por la transicin (p,0) = q, introducimos las reglas p:= 0q / 0, por ser q estado final. Por la transicin (p,0)=r, introducimos la regla p:= 0r, por ser r un estado no final. Y as sucesivamente.
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:
Sea la gramtica G1={{0,1},{A,B,C,D},A,P}, siendo P las reglas A:= 0B / 0 / 0C B:= 0B / 0 /1B / 1 / 1D C:= 1D / 1 D:= 1A Para construir un AF equivalente tomamos Q={A,B,C,D,f}, ={0,1}, estado inicial A, estado final f y la tabla 0
A
B C D *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
operadores definidos (concatenacin, unin, clausura positiva y cierre de Kleene) es una expresin regular.
Ejemplos:
r1 = (01)* = {(01)k: k0} r2 = (01)*+0+10 = {(01)k: k0}{0,10} r3 = (ab*+b*a)ab+ = {aab, aabb, aabbb...., baab, bbab....}
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
Supongamos, por hiptesis de recurrencia, que si la expresin regular contiene un nmero menor o igual a k de operadores, existe un AF con un solo estado final para el lenguaje denotado por la expresin regular.
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.
b) Si el ltimo operador de r es una unin r = r1+r2, un autmata que acepta L(r) ser
c) Si el ltimo operador de r es un cierre de Kleene r = (r1)* un autmata que acepta L(r) ser:
47
Inmaculada Luengo
2. Autmatas Finitos
d) Si el ltimo operador de r es una clausura positiva r=(r1)+ un autmata que acepta L(r) ser:
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
Como puede verse el autmata construido aplicando directamente el mtodo estudiado tiene muchos estados y muchas -transiciones, an cuando la expresin regular sea relativamente simple. Normalmente se puede construir otro autmata equivalente ms simple, por ejemplo
Fig. 2.19. Otro AF con menos estados cuyo lenguaje es tambin r = 0*+1+0
Suponemos que M es un autmata finito dado, sin transiciones . Buscamos una expresin regular r tal que L(M) = r. Para cada estado qQ definimos
(q ,) F x q = * :
}
49
es decir el conjunto de todas las palabras que desde q alcanzan algn estado final.
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 Si qF escribimos
xq = xq =
a r ( q ,a )
ax ax
a r ( q ,a )
donde las sumas representan uniones como en las expresiones regulares. Cuando tengamos una ecuacin del tipo
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 r *s q q,s s
las ecuaciones lineales M3 de son xp = 0xq +0 xr xq = 0 xq +1 xq+1 xs+ xr =1 xs xs = 0xp+ Para resolver el sistema tenemos que proceder aplicando las propiedades de las operaciones con lenguajes y lo que se acaba de explicar xr = 1(0 xp +)=10 xp +1 xq = (0+1) xq +1(0 xp +)+= (0+1) xq +10 xp +1+= = (0+1)*(10 xp +1+) xp = 0(0+1)*(10 xp +1+)+0(10 xp +1) = [0(0+1)*10+010] xp +0(0+1)*(1+)+01 = [0(0+1)*10+010]*[0(0+1)*(1+)+01] sta ltima es una expresin regular para el lenguaje del autmata dado. Hemos demostrado que las clases de las gramticas regulares, los autmatas finitos y las expresiones regulares son equivalentes y hemos explicado tcnicas para construir objetos de cada una de las clases equivalentes entre s. Queremos volver a sealar que los objetos se caracterizan por los lenguajes que llevan asociados y que en ninguna de las tres clases se da la unicidad. Presentamos un grfico que nos muestra estas relaciones
51
Inmaculada Luengo
2. Autmatas Finitos
Fig. 2.20. Relacin entre Gramticas regulares, Autmatas Finitos y Expresiones regulares.
52
Inmaculada Luengo