You are on page 1of 10

UNIDAD II: LENGUAJES REGULARES 5.

1 Concepto de AFD
Capítulo 4. Gramáticas regulares.
 Un AFD es una máquina de estados que tiene acceso a una
secuencia de símbolos de entrada (mediante una cabeza
Capítulo 5. Autómatas finitos deterministas lectora).
 Un AFD se encuentra en cada momento en un estado
5.1. Concepto de AFD determinado y puede transitar a otro estado. Para ello se
realizan los siguientes pasos:
Definición. Lenguaje reconocido por un AFD.  Se lee la cinta y se avanza la cabeza lectora.
 En función del símbolo leído y del estado actual el
5.2. Equivalencia y Minimización de AFD autómata transita a otro estado
Accesibilidad. Equivalencia de estados. AFD  Un AFD para el procesamiento cuando no le quedan más
símbolos en la entrada
mínimo. Equivalencia de autómatas.  La parada puede ocurrir en un estado marcado como “final”
o uno que no este marcado como final
Capítulo 6. Autómatas finitos no deterministas  “salida binaria”
Capítulo 7. Expresiones regulares 5.1.1 Definición
Capítulo 8. Propiedades de lenguajes regulares Un autómata finito determinista (AFD) es una quíntupla
A=(Q,,f,q0,F), donde:
Capítulo 9. Otros tipos de autómatas  Q es un conjunto de estados
  es el alfabeto de entrada
 f:QQ es la función (total) de transición
 q0  Q es el estado inicial
 FQ es el conjunto de estados finales

1 2
Definición:
Ejemplo: (sencillo: Autómata que acepta las cadenas (01)n1):
Sea un autómata A=(Q,,f,q0,F). El diagrama de transición de
estados de dicho autómata es el grafo que cumple las siguientes
A=({q0,q1,q2,q3},{0,1},f,q0,{q2}), donde la función de
propiedades:
transición f está definida como sigue a continuación:
 El conjunto de nodos del grafo es Q
f(q0,0)=q1 f(q0,1)=q2
f(q1,0)=q3 f(q1,1)=q0  El nodo correspondiente al estado inicial (y sólo él) está
f(q2,0)=q3 f(q2,1)=q3 marcado con una flecha
f(q3,0)=q3 f(q3,1)=q3  Los |F| nodos correspondientes a los estados finales (y
sólo ellos) están marcados mediante “*” o mediante un
Alternativamente, también podemos representar el autómata doble círculo
(no sólo la función de transición) mediante una tabla de  Existe un arco desde el nodo qi al qj etiquetado mediante
transiciones: el símbolo a si y sólo si f(qi,a)=qj.
A 0 1
 q0 q1 q2 Ejemplos:
q1 q3 q0 1. Grafo de transición para el mismo autómata del ejemplo
* q2 q3 q3 anterior:
q3 q3 q3 1
0 0,1
q0 q1 q2* q3
El hecho de que f sea una función total significa que está definida
1 0 0,1
para todo par (q,a) Q.
El determinismo del autómata proviene del hecho de que la 2. Grafos sencillos que no corresponden a autómatas finitos
imagen de la función de transición sea Q. Es decir, en cada deterministas:
momento (para cada símbolo de entrada y cada estado) sólo tiene  carecen de transiciones para determinados estados y
definido una posible transición. símbolos del alfabeto
 algunas transiciones no están etiquetadas
El nombre de finito proviene del hecho de que el autómata sólo
 no tiene estado inicial (un AFD si puede carecer de
tiene un conjunto finito de estado distintos para recordar lo
estados finales)
procesado (no tiene ningún sistema de almacenamiento de
información adicional).

3 4
5.1.2 Lenguaje reconocido por un AFD El complemento del lenguaje aceptado por un autómata está
formado por el conjunto de palabras que hacen terminar al
Definición: autómata en un estado que no es final:
La función de transición extendida f*: Q*Q, se define L(A) ={x|x* y f*(q0,x)  F}.
recursivamente de la siguiente manera:
 f*(q,)=q, para todo q  Q El lenguaje reconocido por un autómata incluye  si y sólo si el
estado inicial es un estado final:
 f*(q,ax)=f*(f(q,a),x), para todo q  Q, a   y x *
q0 F    L(A)
Nota: la segunda parte también se puede definir como
f*(q,xa)=f(f*(q,x),a) Ejemplos:
1. Si Q=F, entonces L(A)=*=W()
Ejemplo: 2. El autómata más pequeño tal que L(A)={a,b}*:
Teniendo en cuenta el autómata del ejemplo anterior:
¿Qué valores tienen f*(q0,0101), f*(q0,(01)31)? A a b
¿Qué valor tienen f*(q0,(01)n1) para todo n0? * 0
q q0 q0
3. Si F=, entonces L(A)=.
Si x (01)n1, entonces f*(q0,x) q2 4. El autómata más pequeño tal que L(A)= (con ={a,b}):
Definición (palabra aceptada): A a b
Sea un autómata A=(Q,,f,q0,F). Se dice que el autómata A  q0 q0 q0
acepta una palabra x* si y sólo si: f*(q0,x)  F.
5. Para el autómata del primer ejemplo: L(A)={(01)n1|n0}
Definición (lenguaje reconocido): 6. Encontrar un AFD que acepte el lenguaje siguiente:
Sea un autómata A=(Q,,f,q0,F). El lenguaje reconocido (o L={x| x=aby e y{a,b}*}
aceptado) por dicho autómata está formado por el conjunto de Los cuatro estados del autómata se pueden denominar: “”,
palabras que acepta: “a”, “ab...” y “...”.
L(A)={x |x* y f*(q0,x)  F}. 7. Encontrar un AFD que acepte el lenguaje siguiente:
L={x | x{0,1}* y x no contiene el substring 001}
Definición (AFDs equivalentes): El autómata tiene 4 estados, que podemos denominar “”,
Dos autómatas A1 y A2 se dicen equivalentes (A1A2), si “0”, “00” y “001”.
reconocen el mismo lenguaje: 8. Encontrar un AFD que acepte el lenguaje siguiente:
L(A1)=L(A2). L={x | x{a,b}* y el número de a’s es múltiplo de 3}

5 6
Ejemplos:
5.2 Equivalencia y minimización de AFD 1. (autómata inconexo, con vértices aislados en el diagrama de
transiciones)
 Se puede construir diferentes autómatas que aceptan el mismo A1=({p,q,r},{a},f,p,{q,r}), con la siguiente tabla de
lenguaje. transiciones:
A1 a
→ Resulta interesante encontrar el autómata más sencillo que
reconozca un determinado lenguaje.  p r
→ Minimización de AFD * q q
* r r
La minimización de un autómata pasa, normalmente, por la
minimización del conjunto de estados. Hay dos formas de reducir 2. (autómata inconexo, sin vértices aislados)
los estados: A2=({p,q,r},{a},f,p,{r}), con la siguiente tabla de transiciones:
 eliminando estados inaccesibles,
 combinando estados equivalentes. A2 a
 p r
5.2.1 Accesibilidad q p
* r r
Definición (estado accesible):
Sea un AFD A=(Q,,f,q0,F). Se dice que un estado qi  Q es Si eliminamos de un autómata todos aquellos estados que no sean
accesible desde otro estado qj Q si:  x * tal que f*(qi,x)=qj. accesibles desde el estado inicial (es decir, si hacemos conexo un
autómata que no lo era), el lenguaje aceptado por el nuevo
Todo estado es accesible desde sí mismo ya que f*(q,)=q. autómata no cambiará.

Si ninguno de los estados finales es accesible desde el inicial, Ejemplos (anteriores):


entonces L(A)=. 1. A1’=({p,r},{a},f,p,{r}) 2. A2’=({p,r},{a},f,p,{r})
A1’ a A2’ a
Definición (autómata conexo):
Sea un AFD A=(Q,,f,q0,F). Se dice que el autómata A es  p r  p r
conexo si:  qQ: q es accesible desde q0. * r r * r r

Se puede ver que los dos autómatas en realidad son equivalentes:


L(A1)=L(A1’)  L(A2)=L(A2’)  A1’=A2’ → L(A1)= L(A2)

7 8
Algoritmo (encontrar autómata conexo): 5.2.2 Equivalencia de estados
Trivial: considera el siguiente ejemplo
Definición (estados equivalentes):
A a b  Dos estados p y q se dicen equivalentes (o indistinguibles),
 p r q pEq, si: x*: f*(p,x)F  f*(q,x)F.
* r r p  Dos estados p y q se dicen equivalentes (o indistinguibles)
q r q respecto a palabras de longitud n o menor, pEnq, si:
s r t x* con |x|n: f*(p,x)F  f*(q,x)F.
t s P Definición (estados distinguibles):
Dos estados p y q se dicen distinguibles si no son equivalentes.
El resultado del algoritmo es un autómata conexo que es igual
que A, con la única diferencia de que en el se han eliminado los Ejemplos:
estados inaccesibles desde el estado q0. 1. Ningún estado equivalente, todos distinguibles:
Lema 1: A a
El autómata A’ que se obtiene como resultado del algoritmo  q0 q1
anterior es equivalente al autómata A y tiene un número de q1 q2
estados menor o igual a A. q2 q3
* q3 q0
Demostración:
 Para cualquier palabra xL(A) y cualquier prefijo z de x 2. Estados equivalentes:
(x=zy) se cumple que f*(q0,z) es un estado accesible desde q0. A=({p,r,q,s,t},{0,1},f,p,{s,t}) con f definido por el siguiente
 Luego la aceptación de x sólo pasa por estados accesibles grafo de transición:
desde q0. r 1
s
 Por tanto, la eliminación de los estados inaccesibles no influye 0 0,1
en la aceptación de palabras, por lo que L(A’)=L(A).
p 0
 Es obvio que la eliminación de estados inaccesibles no
incrementa el número de estados del autómata. 1
1
q t
0 0,1

9 10
Lema 2: Lema 4:
Las relaciones de indistinguibilidad de estados E (y En) son Sea un autómata A=(Q,,f,q0,F), y dos estados p y q  Q.
relaciones de equivalencia. a  : f(p,a)Enf(q,a)  pEn+1q.

Definición: [Matemática Discreta, Cap. 3, p.21] Demostración:


Sea A un conjunto y R una relación de equivalencia en A. Para a  : f(p,a)Enf(q,a)
cada elemento a  A se define la clase de equivalencia de a, y se = a y x* con |x|n: f*(f(p,a),x)F f*(f(q,a),x)F
denota por C(a) o por a , como el conjunto de todos aquellos = a y x* con |x|n: f*(p,ax)F f*(q,ax)F
elementos de A que se relacionan con a: = y* con |y|n+1: f*(p,y)F f*(q,y)F
C(a)={b | b A y aRb}. = pEn+1q

Definición: [Matemática Discreta, Cap. 3, p.22] Lema 5:


Sean A un conjunto y R una relación de equivalencia en A. Se Si Q/En= Q/En+1, entonces Q/En = Q/En+i para i=0,1,2... (=Q/E).
define el conjunto cociente de A por la relación de equivalencia
R, como el conjunto de las clases de equivalencia: Demostración: (por inducción)
A/R = {C(a) | a A }. Base: evidente para i=0 y i=1
Paso inductivo:
Suposición: Q/En= Q/En+1=...= Q/En+j
El conjunto cociente de Q por la relación E (En), representado por Queda demostrar que: Q/En= Q/En+1=...= Q/En+j+1
Q/E (Q/En), es una partición de Q en clases de estados
equivalentes (equivalentes para palabras de longitud n). Sean p y q cualesquiera dos estados con pEn+jq.
 Del lema 4 se sigue: a  : f(p,a)En+j-1f(q,a), es decir para
Lema 3: todo a, f(p,a) y f(q,a) pertenecen a la misma clase en Q/En+j-1
Dado un autómata A=(Q,,f,q0,F) se cumple Q/E0={F,Q-F}.  Dado que Q/En+j= Q/En+j-1, también pertenecen a la misma
clase en Q/En+j, es decir, a  : f(p,a)En+jf(q,a).
Demostración:  Luego, aplicando el lema 4 otra vez: pEn+j+1q
Sea |x|0 (x=). Por definición f*(q,)=q para cualquier estado q.  Por tanto se verifica Q/En+j = Q/En+j+1.
Obviamente, para todo qF y sólo para ellos: f*(q,)F.
Por otro lado, para todo pF, y sólo para ellos: f*(p,)Q-F.

11 12
Los lemas anteriores permiten construir un algoritmo para Como ayuda, en cada paso de Q/Ei a Q/Ei+1, se puede escribir otra
encontrar el conjunto cociente a partir de Q/E0. tabla en la que se sustituyen los estados por las clases de Q/E i en
las columnas 2 y seguidas. Entonces, dos estados que pertenecen
Algoritmo: a la misma clase en Q/Ei, pertenecen también a la misma clase en
Dado un autómata A=(Q,,f,q0,F), obtener el conjunto cociente Q/Ei+1, sii para todo símbolo a se las transiciones llevan a la
Q/E: misma clase de Q/Ei.
1. Q/E0={F,Q-F}.
2. Generar Q/Ei+1 a partir de Q/Ei: Para el ejemplo anterior:
p y q pertenecen a la misma clase en Q/Ei+1 sii:
 p y q pertenecen a la misma clase en Q/Ei, y - Q/E0={{p,r,q},{s,t}}
 para todo a, f(p,a) y f(q,a) pertenecen a la - Paso de Q/E0 a Q/E1: se define {p,q,r}=C y {s,t}=D:
misma clase en Q/Ei A 0 1
3. Si Q/Ei+1=Q/Ei , entonces Q/E= Q/Ei. En otro caso, volver al  p C C
paso 2. r C D
q C D  Q/E1 = {{p},{r,q},{s,t}}
Ejemplo: * s D D
(ejemplo de antes) A=({p,r,q,s,t},{0,1},f,p,{s,t}) con la tabla * t D D
de transición:
- Paso de Q/E1 a Q/E2: se define {p}=B; {q,r}=C y {s,t}=D:
A 0 1
 p r q A 0 1
r q s  p C C
q q t r C D
* s s s q C D  Q/E2 = {{p},{r,q},{s,t}}
* t t t * s D D
* t D D
- Q/E0={{p,r,q},{s,t}}
- estados que irán juntos en Q/E1:
pEr-no(x=1); pEq-no(x=1); rEq-¿?; sEt-¿?
- Q/E1={{p},{r,q},{s,t}}
- estados que irán juntos en Q/E2:
rEq-¿?; sEt-¿?
- Q/E2={{p},{r,q},{s,t}}= Q/E1=Q/E
NOTA:

13 14
Ejemplos: Lema 6:
1. Calcula el conjunto cociente para el siguiente AFD. Sea A=(Q,,f,q0,F) un AFD. El autómata A’=(Q/E,,f’,q0’,F’),
AFD 0 1 donde: 1. q0’ es el elemento de Q/E, tal que q0q0’
 A B F 2. F’={s | sQ/E y  ps: pF}
B G C 3. f’(si,a)=sj sii  p si y q sj tal que f(p,a)=q
* C A C es equivalente a A.
D C G
E H F Idea de demostración:
F C G
G G E
H G C  El autómata A’ tiene estados que corresponden a las
clases de equivalencias del autómata A.
2. Calcula el conjunto cociente para el AFD definido por el  Se demuestra que cualquier transición en el autómata A
siguiente grafo: de un estado p a otro q tiene una transición equivalente en
1
r s el autómata A’ de la clase de equivalencias que contiene p
0
0 0 0,1 a la clase de equivalencias que contiene q.
p t 1  Por tanto, dada cualquier palabra x*, si A para con x
0 en un estado p, A’ para con x en la clase de equivalencias
1
1 que contiene p. Estos dos estado o ambos son finales o
q ambos no son finales.

Para simplificar un autómata se pueden “unificar” los estados


equivalentes. ¿Cómo sería el AFD con estados “unificados”
correspondiente al ejemplo 2?

15 16
5.2.3 AFD mínimo Lema 7:
El autómata A’ que es obtiene con el algoritmo anterior es
Es obvio que tanto la eliminación de estados inaccesibles como la equivalente al autómata A y no tiene ni estados inaccesibles ni
unificación de estados equivalentes pueden reducir el número de estados equivalentes.
estados de un autómata (como mucho lo mantienen).
Este lema sigue de forma directa de los lemas 1 y 6 y del propio
Algoritmo: algoritmo.
Dado A=(Q,,f,q0,F), obtener el AFD mínimo equivalente:
Teorema 1:
1. Eliminar todos los estados que no sean accesibles desde q0 Cualquier autómata A que no tiene estados inaccesibles desde el
2. Construir el conjunto cociente Q/E estado inicial ni estados equivalentes es mínimo (no existe
3. El autómata mínimo es A’=(Q/E,,f’,q0’,F’), donde: ningún autómata con un número de estados menor que reconoce
a. q0’ es el elemento de Q/E, tal que q0q0’ el lenguaje L(A)).
b. F’={s | sQ/E y  p s tal que pF}
c. f’(si,a)=sj sii  p si y q sj tal que f(p,a)=q Idea de demostración:
Sea el autómata A=(Q,,f,q0,F) con n estados.
Ejemplo: Supongamos que existiese un autómata A’=(Q’,,f’,q0’,F’)
1. Obtener el autómata mínimo equivalente al siguiente AFD: equivalente con menos estados (|Q’|<n).
AFD 0 1 2  Tiene que haber palabras x e y que llevan a diferentes
 p r t q estados (p y q) en A y a un mismo estado en A’.
q q v p  En A, p y q no son equivalentes, por tanto existe una palabra
r p u r w tal que f*(w,p) es final y f*(w,q) no es final (o vice versa).
* s q t u  Por tanto, A acepta la palabra x.w y rechaza y.w.
* t t v u
 Por otro lado considerando A’, las palabras x e y llevan al
* u t t v
* v u u t mismo estado, por tanto también las palabras x.w e y.w
llevan a un mismo estado. Es decir, A’ o rechaza ambas o
acepta ambas.
 Eso contradice la hipótesis de que A’ y A son equivalentes,
por lo que A’ no puede existir.

5.2.4 Equivalencia de AFDs

Definición (autómata suma):

17 18
Sean dos autómata A1=(Q1,,f1,q0_1,F1) y A2=(Q2,,f2,q0_2,F2) Ejemplo:
tales que Q1Q2=. Se llama suma de A1 y A2 al autómata 1. Decide si los dos autómatas siguientes son equivalentes.
A=A1+A2=(Q1Q2,,f,q0,F1F2), donde: A1 a b A2 a b
 q0 es uno cualquiera de los estados q0_1 y q0_2 y  p q s * z y x
{f1 (q, a), si q  Q1 * q r q * y z y
f(q, a)  {

⎝ f 2 (q, a), si q  Q 2
* r q s x x x
 s s s

Teorema 2: Teorema 3:
Sean A1 y A2 dos autómatas. A1A2, si sus respectivos estados Sean A1 y A2 dos autómatas. A1A2, sii sus autómatas mínimos
iniciales son equivalentes en el autómata A=A1+A2. son iguales salvo renombramiento de estados (son isomorfos).

Idea de demostración Idea de demostración:


 Por construcción, el autómata suma no es conexo. En él Sean A1’ y A2’ los dos autómatas mínimos, respectivamente. Por
existen dos partes claramente separados y entre los que no los resultados de antes se sabe que L(A1’)=L(A1) y L(A2’)=L(A2).
existen conexiones (los dos autómatas A1 y A2). SOLO SI: Si A1’ y A2’ son iguales (salvo renombramiento de
 Si los dos estados iniciales de A1 y A2, q0_1 y q0_2, son estados) se cumple L(A1’)=L(A2’), y entonces L(A1)= L(A2).
equivalentes en A, se verifica que: SI: Si A1A2, entonces A1’ y A2’ son iguales salvo
 x*: desde q0_1 con x se llega a un estado final sii renombramiento de estados.
desde q0_2 con x se llega a un estado final Vale demostrar que para todo estado en A1’ existe uno y sólo
 Dado que ambos autómatas, A1 y A2, “existen por separado” un estado equivalente en A2’ (y viceversa).
en A, eso implica que  x* ambos aceptan x o bien
ambos rechazan x. Por tanto son equivalentes. Ejemplo:
1. Usa los mismos autómatas del ejemplo anterior con el único
Nota: Este teorema nos facilita un algoritmo para comprobar la cambio de que tanto r en A1 como z en A2 no sean estados
equivalencia de autómatas. finales. Obtén los autómatas mínimo para A1 y A2 y
compáralos.

19 20