Autómatas Finitos Deterministas. Lenguaje asociado a un autómata finito determinista. LEMA del estado accesible. Autómatas conexos. Autómatas Finitos No Deterministas.
Autómatas Finitos
Autómatas Finitos Deterministas
Se
llama Autómata Finito Determinista (AFD) a la quíntupla:
(å , Q, f, q0, F)
- å es un alfabeto,
llamado "alfabeto de entrada".
- Q es un conjunto
finito, no vacío llamado "conjunto de estados".
- f es una función f:
Qxå ® Q que se llama "función de transición".
- q0Î Q es
el "estado inicial".
- FÌ Q es el conjunto
de "estados finales", o "estados de aceptación", no
vacío.
Un AFD puede considerarse como
una máquina secuencial de Moore, cuyo alfabeto de entrada sea å , su alfabeto
de salida å S={ 0,1} , y donde F será el conjunto de los estados
tales que g(q)=1.
Tabla de Transición
Será una tabla cuyas filas están
encabezadas por los estados (elemen-tos de Q). Los encabezamientos de las
columnas son los símbolos del alfabeto de entrada (los elementos de å ).
Cumpliéndose que el elemento i, j de la tabla de transición corresponde al
valor de f(qi, ej), donde qi es el elemento
i-ésimo de Q, y ej es el elemento j-ésimo de å . Tanto el estado
inicial como el final estarán marcados por ® y por * respectivamente. Nota:
el estado final puede ser indicado también rodeando el estado por un círculo.
|
|
(å ): a1...an
|
|
® q0
.....
qi
......
*qf
|
|
Ejemplo:
AF=({ 0,1} ,{ q0,q1,q2}
, f, q0, { q1} )
|
f
|
0
|
1
|
|
® q0
|
q1
|
q0
|
|
*q1
|
q0
|
q2
|
|
q2
|
q1
|
-
|
Diagrama de Transición
Es un grafo dirigido que se
forma de la siguiente manera:
- El grafo tendrá
tantos nodos como | Q| , cada nodo estará etiquetado por un elemento de Q.
- Si f(qi,
ej) = qk, dibujaremos una rama dirigida desde el
nodo de etiqueta qi hasta el nodo de etiqueta qk. La
etqueta de la rma será ej.
- El estado inicial
estará señalado mediante el símbolo ® .
- Los estados finales
estarán señalados mediante el simbolo *, o doble círculo alrededor de la
etiqueta del estado final.
Representamos los estados como:

Ejemplo:
(partiendo del autómata anterior)

Lenguaje asociado a un autómata
finito determinista L(AFD)
Sea un AFD (å , Q, f, q0,
F). Decimos qie una palabra x Î å * es "aceptada" o
"reconocida" por el autómata si f(q0,x) Î F. Se llama
lenguaje asociado al autómata finito, o conducta del autómata finito al
conjunto de todas las palabras aceptadas por éste. Es decir: L = { x | xÎ å *
& f(q0,x)Î F}
Ejemplo:

0 Î L(AF), ya que f(q0, 0) = q1 Î F
10 Î L(AF)
1*0 Î L(AF)
1*010 Î L(AF)
Luego L(AF) = 1*0(10)*
Ejemplo 2 :

Calculo posibles caminos desde q0 a q0
(por ser el estado inicial): (1*+(10)*0)*
Caminos desde el estado inicial hasta el estado final (el
mas corto): 0
Caminos desde el estado final al estado final sin pasar
por el inicial: (10)*
Luego L(AF)= (1*+(10)*0)* 0 (10)*
Estado Accesible
Un estado de un AF es accesible
si existe una palabra x que permite que el autómata se pare en ese estado
partiendo del estado inicial. Es decir, un estado q es accesible desde
otro estado p del autómata si existe una cadena x que permite que el
autómata transitando desde p con x se pare en el estado q:
qÎ Q es accesible si $ x | x Î å * | q = f(q0,
x)
Por definición de función de transición, todo estado es
accesible desde sí mismo, y es accesible mediante la palabra vacía.
LEMA del estado accesible
Dado un AF que tiene n estados,
|Q|= n, un estado qÎ Q es accesible desde otro estado p si y sólo si $ xÎ å * |
|x|<n (siendo n el nº de estados de autómata) | f(p,x)=q.
Supongamos |x|>=n | f(p,x=q Þ
siempre es posible escontrar otra cadena x’Î å * | |x|<n | f(p,x’)=q.
Es decir, que si yo tengo un
autómata con n estados, si transito por todos los estados, pasando una vez por
cada estado, habré realizado n-1 transiciones, que es menos que n estados.
Si |x|>=n para la transición
se repetirá al menos un estado.
Ejemplo :

q2 es accesible desde
q0, por ejemplo con la palabra: x=110001, |x|=6, como |Q|=3, decimos
que siempre podremos encontrar una palabra x’ tal que |x’|<|x| (puesto que
|x|>|Q|)
y ademá cumple que |x’|<|Q|.
Esta x’ sería: x’=01
Autómatas conexos
Sea (å , Q, f, qo, F)
un autómata finito determinista. Diremos que el autómata es "conexo"
si todos los estados de Q son accesibles desde el estado inicial qo.
Dado un autómata no conexo,
podemos obtener a partir de él otro autómata que sea conexo eliminando todos
los estados que no sean accesibles desde qo. Es evidente que los dos autómatas
aceptarán el mismo lenguaje.
Ejemplo: sea el autómata definido por el diagrama de
transición siguiente:

Es evidente que los estados q y
s son inaccesibles desde el estado inicial p. Por lo tanto, el autómata
siguiente aceptará el mismo lenguaje:

Minimización de AF
Equivalencia de estados en AF
Sea el autómata finito
determinista (å , Q, f, q0, F). Decimos que dos estados p,qÎ Q son
equivalentes (se representa por pEq) si para toda palabra xÎ å *, se verifica
que f(p,x)Î FÛ f(q,x)Î F.
Nota: Si pEq
entonces pEnq, para todo n.
Propiedades de la equivalencia
de estados
Dado AF=(å , Q, f, q0,
F), con p,qÎ Q
- , pEq si " xÎ å * ® f(p,x)Î FÛ f(q,x)Î F
- pEkq (p y
q son k-equivalentes) si: " xÎ å * |
|x|<=k ® f(p,x)Î FÛ f(q,x)Î F
- Ambas relaciones de
equivalencia E y Ek inducen una partición de equivalencia sobre
el autómata finito. Es decir: E induce PE, y Ek
induce Pk.
- La primera partición
que se establece es P0, se hace con: p
E0q Û ( pÎ FÛ qÎ F). Nota: Entonces P0={
(Q-F),F}
- Ek,si pEkq Þ pEvq " v<k;
si pEq Þ " k pEkq.
LEMA1(propiedad
de estados)
Si pEk+1q
Þ pEkq y f(p,a)Ekf(q,a) " aÎ å
LEMA2
Pk=Pk+1
Þ Pk= PE
LEMA3 (Se va
a establecer cuando se estabiliza el valor de la partición)
Si |Q| =
n >1 Þ pEnq Û pEn-2q
Es decir, n-2 es el grado de
equivalencia menor al que habría que llegar para conseguir confirmar la
equivalencia de dos estados en un autómata con n estados.
TEOREMA
Si |Q|=n>1
Þ $ j<=n-2 | Pj= Pj+1
Algoritmo para construir PE
- P0={ { qiÏ
F} ,{ qiÎ F} }
- Pn+1={ pEn+1q
Û pEnq y f(p,a)Enf(q,a) " aÎ å }
- Pn =Pn+1
=PE
Ejemplo :

Para hallar las partes de equivalencia del autómata
primero debemos partir de un autómata finito conexo. Para ello vamos a eliminar
q4, ya que no es posible acceder a él desde el estado inicial (q1).
Ahora vamos a establecer las partes de equivalencia:
® P0={ Q-F, F} ={ { q1} , { q2,
q3} }
Ahora hacemos P1, para ello sabemos que { q1}
va a seguir igual, es decir, va a ser equivalente con sigo mismo, puesto
que accede a los mismo estados(finales o no finales).
Miramos { q2, q3} y comprobamos si
acceden al mismo tipo de estado para las mismas entradas, es decir, sabiendo
que q2 E0 q3 vamos a ver si q2 E1
q3:
f(q2,a)=q3Î
F f(q2,b)=q1Ï F
f(q3,a)=q2Î
F f(q3,b)=q1Ï F
luego q2 E1 q3.
P1={ { q1} , { q2, q3}
} = P0= PE
Algoritmo para hallar el
autómata mínimo de uno dado
- Calcular el autómata
conexo
- Construir Q/E del
autómata conexo obtenido en el punto anterior.
- Calcular A’=(å
,Q/E,f’,C0,F’), donde:
a. C0 es la clase donde se
encuentra q0 ;
b. F’={ c | c contiene al menos un estado de F(es
decir, existe un qÎ F, tal que qÎ c)} ;
c. f’: Q/E x å ® Q/E, donde
f’(ci, a)= cj Û $ qi Î ci
y $ qj Î cj | f(qi,a)=qj
Ejemplo:

Es un autómata conexo, pues todos sus estados son
accesibles, vamos a hallar las partes de equivalencia:
P0={ { s,t,u,v} ,{ p,q,r} } (={ Q-F,F} )
miramos la equivalencia de las clases de equivalencia
establecidas en P0.
f(p,a) = pÎ F; f(p,b)= qÎ
F;
f(q,a)= rÎ F; f(q,b)=pÎ F;
f(r,a)= rÎ F; f(r,b)=rÎ F;
aqui vemos que { p,q,r} se conserva pues tienen iguales
transiciones a estados finales a partir de las entradas.
f(s,a)=tÏ F; f(s,b)=pÎ F
f(t,a)=tÏ F; f(t,b)=uÏ F
f(u,a)=tÏ F; f(u,b)=vÏ F
f(v,a)=vÏ F; f(v,b)=uÏ F
ahora vemos que mientras t,u,v tienen iguales transiciones
a estados no finales para las mismas entradas, siguen siendo equivalentes,
mientras que s para b transita a un estado final, ya será equivalente a los
tres estados anteriores:
P1={ { p,q,r} ,{ s} ,{ t,u,v} }
Ahora hallamos P2:
f(p,a) = pÎ F; f(p,b)= qÎ
F;
f(q,a)= rÎ F; f(q,b)=pÎ F;
f(r,a)= rÎ F; f(r,b)=rÎ F;
f(t,a)=tÏ F; f(t,b)=uÏ F
f(u,a)=tÏ F; f(u,b)=vÏ F
f(v,a)=vÏ F; f(v,b)=uÏ F
P2= { { p,q,r} ,{
s} ,{ t,u,v} } = P1
luego PE= { { p,q,r} ,{ s} ,{ t,u,v} }
El autómata mínimo nos va a quedar:

Si nos pidieran el lenguaje del
autómata: L(A)=L(A’)={ b(a+b)*} , (donde A es el autómata inicial, y A’ es el
autómata mínimo).
Autómatas Equivalentes
Suma directa de autómatas
finitos deterministas
Sean los AFD A1=(å ,
Q1, f1, q01, F1) y A2=(å
, Q2, f2, q02, F2), tales que Q1
y Q2 no tienen elementos comunes. Llamamos suma directa de A1
y A2 al autómata A=A1+A2=(å , Q1UQ2,
f, q0, F1U F2), dinde q0 es uno
cualquiera de los dos estados q01 o q02, y f se define
así:
f(q,a)=f1(q,a) si qÎ Q1
f(q,a)=f2(q,a) si qÎ Q2
Equivalencia de autómatas
Sean los AFD A1=(å ,
Q1, f1, q01, F1) y A2=(å
, Q2, f2, q02, F2). Decimos que dos
estados pÎ Q1 y qÎ Q2 son equivalentes si f(p,x)Î F1Û
f(q,x)Î F2, para todo xÎ å *.
Decimos que los dos autómatas
son equivalentes si reconocen el mismo lenguaje. Es decir: si f(q01,x)Î
F1Û f(q02,x)Î F2, para todo xÎ å *. Dicho de
otro modo, decimos que dos autómatas son equivalentes si sus estados iniciales
los son: q01Eq02.
Teorema.- Sean dos
autómatas finitos deterministas A1=(å , Q1, f1,
q01, F1) y A2=(å , Q2, f2,
q02, F2), tales que Q1 y Q2 no
tienen estados comunes y |Q1|=n1 y |Q2|=n2.
Entonces, A1 y A2 son equivalentes si q01 yq02
son equivalentes en el autómata A=A1+A2, es decir, si ambos
autómatas aceptan las mismas palabras de longitud menor que n1+n2-1.
Además, en general, n1+n2-2 es el valor más pequeño que
cumple siempre este teorema.
ALGORITMO PARA VER SI DOS
AUTÓMATAS SON EQUIVALENTES
- Calcular la suma
directa de autómatas
- Construir PE
del autómata suma obtenido
- Comprobar que los
estados iniciales son equivalentes, es decir, están en la misma clase de
equivalencia. Cuando se da la condición: p01, p02 Î
C0 Þ A1 y A2 son equivalentes
Ejemplo:


El autómata suma me dará:
|
fÅ
|
a
|
b
|
|
® q1
|
q2
|
q1
|
|
*q2
|
q3
|
q1
|
|
*q3
|
q2
|
q1
|
|
q4
|
q1
|
q1
|
|
p1
|
p2
|
p1
|
|
*p2
|
p2
|
p1
|
|
p3
|
p2
|
p1
|
P0={ { q1,
q4, p1, p3} , { q2, q3,
p2} }
P1={ { q1,
p1, p3} , { q4} ,{ q2, q3,
p2} }
P2={ { q1,
p1, p3} , { q4} ,{ q2, q3,
p2} }
luego P1= P2
=PE
Isomorfismo entre Autómatas
Se dice que A1 es
isomorfo a A2, es decir, A1» A2 si $ i :Q1®
Q2, (i : imagen). Por lo tanto :
- i(p01) =
p02 (la imagen del estado inicial de A1 es el estado
inicial de A2.
- Dados pÎ F1,
qÎ F2 : i(p)Î F2, y i(q)Î F1.(es
decir, la imagen de los estados finales de uno de los autómatas, es un
estado final del otro autómata).
- i(f1(p1,e))
= f2(i(p1),e) = f2(i(p2),e).La
imagen de la transición es la transición de la imagen.
Por lo tanto A1 y A2
son iguales renombrando estados.
Entonces si dos autómatas son
isomorfos van a ser equivalentes, es decir, los lenguajes que van a generar
ambos autómatas van a ser el mismo : L(A1) = L(A2).
Con esto comprobamos que la isomorfía implica la equivalencia.
Teorema : Si dos
autómatas son equivalentes, entonces sus autómatas mínimos son isomorfos, es
decir : A1EA2 Þ Â1» Â2 (siendo
 i º autómata
mínimo de Ai).
Autómatas
Finitos No Deterministas
Llamaremos "autómata finito
no determinista" (AFND) a la séxtupla:
A = ( å
, Q, f, q0, F, T ), donde:
- å , Q,q0,
F significan lo mismo que en un autómata finito determinista.
- f es una aplicación
de Q x å en el conjunto de las partes de Q
- T es una relación
definida sobre pares de elementos de Q, donde p, q Î Q están en relación
T( se representará por pTq, o (p,q)Î T) si existe una transición del
estado p al estado q por medio de la palabra vacía l (l -transición).
Ejemplo: Sea
el autómata finito no determinista:
({ a, b} , { p, q, r, s} , f, p,
{ p, s} , { (q,s), (r,r), (r,s), (s,r)} ), donde f se define asi:
f(p,a)={ q} f(p,b)=Æ
f(q,a)={ p,r,s} f(q,b)={ p,r}
f(r,a)=Æ f(r,b)={ p,s}
f(s,a)=Æ f(s,b)=Æ
Representación
En Diagrama: Con
tantos nodos como estados.
Pueden sobrar o faltar arcos de un estado a otro
Si f(p,a)=Q1, trazaremos una rama dirigida
desde p hasta cada uno de los estados del conjunto de estados Q1,
con la etiqueta a.
Pueden existir arcos de un estado a otro por medio de l ,
en el caso de pTq, que trazaremos una rama desde p hasta q con la etiqueta l .
Ejemplo (continuación):

Tabla: Tendrá
tantas filas como estados, y tantas columnas como elementos de å ,
más una columna adicional encabezada por la palabra vacía l
, esta será la clumna reservada a las l -transiciones.
Ejemplo (continuación) :
|
|
a
|
b
|
l
|
|
® p
|
{ q}
|
|
|
|
q
|
{ p,r,s}
|
{ p,r}
|
{ s}
|
|
r
|
|
{ p,s}
|
{ r,s}
|
|
*s
|
|
|
{ r}
|
Relación T
Sabemos que: (p,q) Î T*, donde
T* = T0 È T1 È T2 È ....
Utilizaremos las matrices
booleanas de representación T, para representar si un estado q es accesible
desde un estado p mediante una l -transición.
Primero se representará la
matriz booleana de representación de T, o, lo que es lo mismo, la matriz
booleana que representa la posibilidad de transitar a otro estado a partir de
una l -transición:
|
T
|
p
|
q
|
r
|
s
|
|
p
|
0
|
0
|
0
|
0
|
|
q
|
0
|
0
|
0
|
1
|
|
r
|
0
|
0
|
1
|
1
|
|
s
|
0
|
0
|
1
|
0
|
|
T*
|
p
|
q
|
r
|
s
|
|
p
|
0
|
0
|
0
|
0
|
|
q
|
0
|
0
|
1
|
1
|
|
r
|
0
|
0
|
1
|
1
|
|
s
|
0
|
0
|
1
|
1
|
Ahora se hace la clausura
transitiva de la relación T, es decir, la relación T*, que no es más que
calcular la accesibilidad de unos estados a otros mediante un número de l
-transiciones mayor.
Lo que se ha hecho en esta
clausura no es más que calcular aquellos estados q, que a partir de un estado
p, es posible acceder mediante l -transiciones. Esto se puede ver tanto en el
diagrama de estados, como en la matriz booleana de la relación T. Se puede
observar que el estado r no accesible desde q mediante una l -transición, sin
embargo si será accesible mediante dos l -transiciones. Este también será el
caso del estado s y su acceso a sí mismo mediante l -transiciones.
Extensión de f a palabras
Ahora vamos a definir f’ como
una nueva función de transición que, en lugar de actuar sobre letras del
alfabeto de entrada, actúe sobre palabras (que incluyan la palabra vacía l ).
Es decir: f’: Q x å * ® P(Q) (P(Q), partes de Q)
a) f’(q,l ) = { p | q T* p} , para todo qÎ Q
b) Sea x = a1a2...an , n
> 0 . Entonces, f’(q,x) = { p | p es accesible desde q mediante la cadena de
entrada l i0a1l i1a2... anl in}
para todo qÎ Q (la sucesión anterior es idéntica a x).
Ejemplo (en el
autómata anterior):
f’(p,l ) = { p} f’(q,l ) = { q,r,s}
f’(r,l ) = { r,s} f’(s,l ) = { r,s}
f’(p,a) = { q,r,s} f’(p,b) = Æ