Anda di halaman 1dari 32

Autmatas Finitos

Programacin II
Margarita lvarez
q
0
q
1
q
2
0,1
0 0
1
0,1
q
3
1
Autmatas
Dispositivo mecnico capaz de procesar cadenas de
smbolos.
Dado un lenguaje L definido sobre un alfabeto A y una
cadena x arbitraria, determina si x e L o x e L.
Un autmata tiene dos posibles reacciones:
Las hileras son
reconocidas o
aceptadas
Las hileras son
rechazadas por
el autmata
Autmatas
Gramticas no
restringidas
Gramticas sensibles
al contexto
Gramticas libres
de contexto
Gramticas
regulares
Lenguajes Irrestrictos o
recursivamente
enumerables (Tipo 0)
Lenguajes sensibles al
contexto (Tipo 1)
Lenguajes libres de
contexto (Tipo 2)
Lenguajes regulares
(Tipo 3)
Mquinas de
Turing
Autmatas
ligados
linealmente
Autmatas de
pila
Autmatas
finitos
GRAMTICAS LENGUAJES AUTMATAS
Las gramticas proporcionan un mtodo para generar cadenas de un lenguaje y para reconocer cadenas de un
lenguaje se han descripto autmatas de varios tipos.
Autmata Finito
Un autmata finito (AF) es un modelo de computacin muy
restringido, sin embargo tiene una gran aplicacin en
reconocimiento de patrones.
Es un dispositivo abstracto que posee un nmero finito de
estados. Un AF puede leer smbolos de una cinta, y puede
estar en un nmero finito de estados.
Autmata Finito
Cuenta con una cinta de entrada, una cabeza lectora
y una unidad de control (puede estar en un estado
en un instante dado).
Estados del AF:
Cantidad finita.
Representan la memoria del autmata.
Un estado inicial.
Al menos un estado final o de aceptacin.
Funcionamiento o
movimientos atmicos:
1) Comienza en el estado
inicial.
2) Lee un smbolo de la cinta de
entrada y realiza un
movimiento atmico, o sea,
realiza (si es posible) una
transicin a otro estado y
avanza el puntero de entrada.
3) El AF para si no existe
entrada.
Si termina en un estado
final cadena aceptada
Si termina en un estado
no final cadena
rechazada.
Autmata Finito Determinstico (AFD)
Un AFD es una quntupla
A =(Q, E, o, q
0
, F)
Q es un conjunto finito y no vaco de estados
E es un alfabeto finito (smbolos de entrada)
o es una funcin de transicin
o: Q x E Q
q
0
eQ es el smbolo de inicio
F_ Q es el conjunto de estados finales
Representaciones de un
Autmata finito
Diagrama de transicin
Un estado
Estado de inicio
Estado de aceptacin
Una transicin
a
Tabla de transicin
En cada fila se coloca un estado y se
usan las columnas para los smbolos de
entrada. En la interseccin de fila y
columna se coloca el conjunto de
estados que pueden ser alcanzados por
una transicin del estado con la
entrada. A veces, se utiliza un vector
auxiliar cuyos elementos son los
distintos estados finales.
A = ({q
0
, q
1
), {a, b}, o , q
0
, {q
0 ,
q
1
}) con:
o(q
0
,a) = q
0
o(q
0
, b) = q
1
o(q
1
,b) = q
1
b
L(A) = {a
n
b
m
/ n,m 0}
b
q
1
a
q
0
a b
q
0
q
0
q
1
q
1
--- q
1
EJEMPLO
q
0
q
1
Estados Finales
Tabla de Transicin
Funcin de Transicin
Extendida
La transicin directa o define transiciones de estados debido al
procesamiento de un smbolo de entrada, por ejemplo, o(q
0
,a) = q
1
.
La funcin de transicin o se puede extender a o
e
que define transiciones
de estados (mltiples) debido al procesamiento de una hilera de
smbolos de entrada.
Caso base: o(q,)=q
Induccin: oe(q,xa)= o(oe(q,x),a)
La funcin de transicin extendida es una proyeccin:
o
e
: Q x E
*
Q
Ejemplo
b
q
1
b a
q
0
o(q
0
,abb)=o(o(q
0
,ab),b)= o(o(o(q
0
,a),b),b)=
o(o(q
0
,b),b)=o(q
1
,b)= q
1
Autmata finito como
reconocedor de lenguajes
Un autmata finito A =(Q,E,o,q
0
,F) acepta una hilera xeE
*
si A, lee todos los smbolos de x, comenzando en el estado
q
0
, leyendo primero el smbolo de la izquierda hasta que se
pare en un estado final.
Un lenguaje reconocido por un autmata se define:
L(A)= { x e E
*
/ o
e
(q
0
,x) e F}
Los lenguajes aceptados por AF son los regulares.
AF determinstico y no
deteministco
AF determinstico (AFD): si para todo (q,a) e Q x E, |o(q,a)| 1.
Un AFD tiene a lo sumo una transicin desde cada estado.
AF No determinstico (AFND):
A = (Q, E, o, q
0
, F)
conjunto de estados
alfabeto
funcin de transicin
o: Q E 2
Q
estado inicial, q
0
e Q
conjunto de estados finales F _ Q
Extensin de o a cadenas (o: Q E* 2
Q
)
Es decir, una proyeccin de parejas (estado, smbolo de entrada) a
subconjuntos de Q en vez de a elementos individuales de Q.
|o(q,a)| > 1. Ms de una funcin de transicin para el smbolo a desde el
estado q.
Ejemplo de AFND
q
1
q
2
0,1
0 0
1
q
0
0,1
q
3
1
L = {xyz / x,ze{0,1}*, ye{00,11}}
ER= (0/1)* (00/11) (0/1)*
A = ({q
0
, q
1
, q
2,
q
3
), {0,1}, o , q
0
, {q
2
}) con:
o(q
0
,0) = {q
0
, q
1
}
o(q
0
, 1) = {q
0
, q
3
}
o(q
1
,0) = {q
2
}
o(q
1
,1) = C
o(q
2
, 0) = {q
2
}
o(q
2
,1) = {q
2
}
o(q
3
,0) = C
o(q
3
, 1) = {q
2
}
Equivalencia entre AFND y AFD
TEOREMA:
Sea L un lenguaje aceptado por un AFND. Entonces existe
un AFD que acepta el mismo lenguaje L.
L(AFND) = L(AFD).
PROCEDIMIENTO DE CONVERSIN DE AFND A AFD:
1)Se especifican las funciones de transicin.
2)Si o(q
0
,a) = q
0
,q
1
,,q
n
o'(q
0
,a) = q
01 ... n
, con oeA'
3)Se obtienen las funciones de transicin para los nuevos
estados donde:
o'(q
01 ... n
,a) = o(q
0
,a) o(q
1
,a) ... o(q
n
,a)
4) Se determina el conjunto F' de estados finales
q
01 ... n
e F' q
0
e F v q
1
e F v ... v q
n
e F
con F y F' conjunto de estados finales de A y A' .
A = ({q
0
,q
1
,q
2
}, {a,b}, o ,q
0
, {q
2
})
o(q
0
,a) = {q
0
, q
1
} o'(q
0
,a) = q
01
o(q
1
,b) = {q
0
, q
1
, q
2
} o'(q
1
,b)= q
012
o(q
0
,b) = (q
1
,a) = (q
2
,a) = (q
2
,b) = C
Se obtienen las funciones de transicin para los nuevos estados:
o'(q
01
,a) = o(q
0
,a) o(q
1
,a) = q
01
C= q
01
o'(q
01
,b) = o(q
0
,b) o(q
1
,b) = C q
012
= q
012
o'(q
012
,a) = o(q
0
,a) o(q
1
,a) o(q
2
,a) = q
01
C C= q
01
o'(q
012
,b) = o(q
0
,b) o(q
1
,b) o(q
2
,b) = C q
012
C =q
012
b
q
0
q
1
q
2
b
a b
a
a
q
0
q
01
q
012
b
a b
a
A = ({q
0
,q
01
,q
012
}, {a,b}, o , q
0
, {q
012
})
Autmata de Estados Mnimos
Procedimiento para encontrar un AFD de estados mnimos:
1) Se crea un estado trampa para aquellas funciones de transicin no definidas. Las funciones
de transicin del estado trampa tambin se definen.
2) Se construye una matriz triangular superior. Se marca con una X los estados no equivalentes.
Inicialmente se marcan las entradas correspondientes a un estado final y a un estado no final, que
son no equivalentes.
3) Para cada par de estados p y q an no marcados se prueba si por transitividad son tambin
no equivalentes. Para cada smbolo de entrada a, se consideran los pares de estados:
r = (p,a)
s = (q,a)
Si la entrada (r,s) en la tabla tiene una X tambin se coloca una X en la entrada (p,q). Si la
entrada (r,s) no est an marcada entonces el par (p,q) se ubica en la lista de espera. Ms
adelante, si (r,s) recibe una X entonces cada par en la lista de espera asociada con (r,s) tambin
recibe una X.
4) Todos los estados no marcados son equivalentes. Se construye el autmata finito
determinstico de estados mnimos equivalente al dado.
Autmata de Estados Mnimos
A = ({1,2,3,4,5,}, {a,b}, o, 1, {2,3,5})
o(3,b) = 3
o(4,a) = 5
o(4,b) = C
o(5,a) = C
o(5,b) = 5
o(1,a) = 1
o(1,b) = 2
o(2,a) = 4
o(2,b) = 3
o(3,a) = 4
a
1 2 3
b
b b
a
4
5 b
a
a
1) Se crea un estado trampa para las transiciones no
especificadas:
o(4,b) = T
o(5,a) = T
o(T,a) = T
o(T,b) = T
a
1 2 3
b
b b
a
4
5 b
a
a
T
a/b
b
a
Autmata de Estados Mnimos -
Ejemplo
2) Se construye la matriz triangular superior y se marcan los estados no equivalentes.
a
1 2 3
b
b b
a
4
5 b
a
a
T
a/b
b
a
2 3 4 5 T
1 X X X
2 X X
3 X X
4 X
5 X
Se intenta marcar (1,4)
o(1,a) = 1
o(4,a) = 5
Se marca (1,4)
(1,5) con X
Se intenta marcar (1,T)
o(1,a) = 1 o(1,b) = 2
o(T,a) = T o(T,b) = T
Se marca (1,T)
(2,T) con X
Se intenta marcar (2,3)
o(2,a) = 4 o(2,b) = 3
o(3,a) = 4 o(3,b) = 3
Se intenta marcar (3,5)
o(3,a) = 4 o(3,b) = 3
o(5,a) = T o(5,b) = 5
Lista
de
espera
Se intenta marcar (2,5)
o(2,a) = 4 o(2,b) = 3
o(5,a) = T o(5,b) = 5
Se intenta marcar (4,T)
o(4,a) = 5
o(T,a) = T
Se marcan
(4,T), (3,5),(2,5)
(5,T) con X
X X
X
X
X
Son
equivalentes
Autmata de Estados Mnimos -
Ejemplo
a
1 23 4
b
b a
a
5
b
Los estados 2 y 3 que no estn marcados significan que son equivalentes.
a
1 2 3
b
b b
a
4
5 b
a
a
T
a/b
b
a
Autmata inicial
Autmata de Estados Mnimos
Autmata finito como traductor
de lenguajes
Permiten realizar clculos a partir de una cadena de entrada, o sea, traducen una cadena
de entrada en una cadena de salida.
Un AFD es una 7-upla
A =(Q, E, o, q
0
, F,O,q)
Q, E, o, q
0
, F coinciden con la definicin de autmatas finitos.
O es un conjunto finito de smbolos de salida.
q es la funcin (posiblemente parcial) de salida
q: Q x E O*
En la representacin grfica de un traductor finito, el valor de q se agrega como un
nuevo rtulo sobre los arcos.
Sea o(q, a) = q' y q(q, a) = y e O*; entonces a || y rotulan el arco que
conecta q y q'.
Autmata finito como traductor
de lenguajes
La diferencia entre q y q* es que g se define desde un estado y un smbolo del
alfabeto, y q* se define desde un estado y una cadena de smbolos.
La extensin natural de q, q* : Q x E* O* se define:
q*(q, ) =
q*(q, xa) = q*(q, x). q( o
e
* (q, x), a)
Funcin de traduccin para cadenas
EJEMPLO: Autmata finito traductor que calcula f(x) = 2x + 3 para x e N, x > 0, x
representado en unario.
q
0 q
1
1|| 11111
1||11
x=1 traduce 11111
x=2 traduce1111111
A = ({q
0
, q
1
), {1}, o , q
0
, {q
1
}, {1}, q) con:
o(q
0
,1) = q
1
o(q
1
,1) = q
1
q(q
0
,1)=11111
q(q
1
,1)=11
Autmata finito y gramticas
regulares
S aS / bA /
A bA /
1 2
b
b
a
DE AUTMATA FINITO
A GRAMTICA
REGULAR
DE GRAMTICA
REGULAR A
AUTMATA FINITO
Autmata finito y gramticas
regulares
DE AUTMATA FINITO A GRAMTICA REGULAR
Sea A un autmata finito, se puede encontrar constructivamente una gramtica regular G
equivalente, es decir, G genera exactamente el mismo lenguaje que A reconoce.
Sea A = ( Q, , o, q
0
, F). Se define G = (Q, , P, q
0
) donde los elementos de P tienen la forma
siguiente:
B bC si o(B,b) = C
B si B e F
EJEMPLO
A = ( {q
0
, q
1
, q
2
} , {a,b}, o, q
0
, {q
2
} )
o( q
0
,a) = q
1
o( q
1
,a) = q
1
o( q
1
,b) = q
2
o( q
2
,b) = q
2
G = ({a,b}, {q
0
, q
1
, q
2
} , P, q
0
} con P:
q
0
a q
1
q
1
a q
1
/ b q
2
q
2
b q
2
/
q
0
q
1
q
2
b
a b
a
Para x = aabbb el proceso de derivacin es:
q
0
aq
1
aaq
1
aabq
2
aabbq
2
aabbbq
2
aabbb
Autmata finito y gramticas
regulares
DE GRAMTICA REGULAR A AUTMATA FINITO
Para cada gramtica regular G, un autmata finito A se puede construir tal que L(G) = L(A).
Sea G = (V
N
, V
T
, P , S) se construye un AFND equivalente a G. A se define (V
N
{q
F
},V
T
, o,S,F)
donde:
q
F
e V
N
es un estado final.
o (A, a) contiene B si y slo si A aB est en P.
o (A, a) contiene q
F
si y slo si A a est en P.
F = { q
F
} {A / A eP}
EJEMPLO
G = ({S, A}, {a,b}, P, S) donde P es:
S aS / bA/
A bA/
A = ({S, A}, {a,b}, o, S, {S, A}) con o:
o( S ,a) = S
o( S ,b) = A
o( A ,b) = A
S y A son estados finales porque S y A .
S A
b
b
a
Autmatas finitos y expresiones
regulares
AUTMATA FINITO
NO DETERMINSTICO
EXPRESIONES
REGULARES
AUTMATA
FINITO
DETERMINSTICO
AUTMATA FINITO
NO DETERMINSTICO
CON TRANSICIONES
Mtodo de ecuaciones
Ecuaciones caractersticas
Sea el autmata finito M= (Q, E, o, q
0
, F), para todo estado q
i
sea
A
i
= { w e E
*
/ o(q
i
,w) F = C }
Es decir A es el conjunto de todas las cadenas sobre E que hacen que M pase desde q
i
hasta un estado de aceptacin. Se dice que A
i
es el conjunto de las cadenas aceptadas
por el estado q
i
. Se observa que A
0
= L(M) y que es posible que A
i
= C. Si q
i
e F,
entonces e A
i
.
EJEMPLO
Si q
j
e o(q
i
,w), entonces A
i
contiene a wA
j
. Es decir: A
i
= { w A
j
/ q
j
e o(q
i
,w) }
Esto proporciona la tcnicas recursivas bsicas para obtener una expresin regular a
partir de un autmata finito.
q
0
q
1
q
2
a
a b
b
A
0
= aA
1
A
1
= aA
1
/ bA
2
A
2
= bA
2
/
Mtodo de ecuaciones
Por tanto, se tiene un sistema de ecuaciones que se cumplen para L(M). Para su
solucin se utiliza, entre otras reglas, el siguiente lema:
Lema 4.1 (Arden): Una ecuacin de la forma X = AX / B, donde e A,
tiene una solucin nica X = A
*
B.
Solucin:
Se comienza por la ltima ecuacin y se resuelve por sustitucin y/o mediante la
aplicacin del lema de Arden. Las expresiones obtenidas se simplifican en base a
propiedades o reglas ya conocidas.
A
0
= aA
1
A
1
= aA
1
/ bA
2
A
2
= bA
2
/
A
2
= b* = b* (lema de Arden)
A
1
= aA
1
/ bb* (sustitucin)
A
1
= aA
1
/ b
+
(simplificacin)
A
1
= a*b
+
(lema de Arden)
A
0
= aa*b
+
(sustitucin)
A
0
= a
+
b
+
q
0
q
1
q
2
a
a b
b
Autmatas finitos con movimientos
Es posible extender el modelo de autmata finito no determinstico para incluir
transiciones sobre la entrada vaca .
Ejemplo:
q
0
q
1
q
2
1

2 0
(0* 1* 2*)
Formalmente, se define un autmata finito no determinstico con movimientos
como una quntupla (Q, E, o, q
0
, F) con los mismos componentes que antes, pero
la funcin de transicin o, es una proyeccin Q x (E {}) en 2
Q
. La idea es que
o(q,a) consista de todos los estados p tales que haya una transicin rotulada a
desde q hasta p, donde a es un smbolo o un smbolo perteneciente a E.
Mtodo de Thompson
Sea r una expresin regular, entonces existe un AFND con transiciones que acepta
L(r). Componentes bsicos o primitivos
La ER r puede ser , C o a para algn a en E .
q
0 q
0
q
f
q
0
q
f
a
r= r=C r=a
Los componentes primitivos en una ER estn conectados por operadores: . , / , *. Para
cada una de las operaciones se construye los AFND en forma inductiva:
Unin: M
1
/ M
2
f
1
q
1
M
1
f
2
q
2
M
2
f
0
q
0

M
i
representa el AFND correspondiente a
un componente primitivo.
El diagrama de transicin de Mdesde q
0
a f
0
debe comenzar con en q
1
o en q
2
.
Es decir, los nicos caminos posibles a
partir de q
0
son a travs de M
1
(desde q
1
a f
1
) o a travs de M
2
(desde q
2
a f
2
).
Este diagrama muestra que L(M) =
L(M
1
) U L(M
2
).
Mtodo de Thompson
Todo camino en Mdesde q
1
a f
2
se
realiza primero a travs de M
1
y luego a
travs de M
2
. El lenguaje reconocido por
este autmata es:
L(M) = {xy / xe L(M
1
) . ye L(M
2
) }
L(M) = L(M
1
)L(M
2
)
Concatenacin: M
1
. M
2
f
1
q
1
M
1
f
2
q
2
M
2

Cualquier camino de q
0
a f
0
consiste de
un camino de q
0
a f
0
directamente
pasando por un camino rotulado con o
se puede ir de q
0
a f
0
a travs de M
1
una
o ms veces.
L(M) = L(M
1
)*
Clausura de la iteracin: M
1
*
f
1
q
1
M
1
f
0

q
0

Mtodo de Thompson
Mtodo
1) Se descompone la expresin regular dada en sus componentes primitivos.
2) Para cada componente se construye un AFND con un estado inicial y otro final.
Para cada instancia de aparicin de a se construye el AF respectivo.
3) Una vez construidos los AFND para cada componente bsico o primitivo, se
construye los AFND correspondientes a las ER compuestas segn la jerarqua de los
operadores.
Ejemplo
r=01*/1
1) Se descompe la ER en sus
componentes primitivos. Por
sustitucin:
2) Los autmatas respectivos para cada
componente primitivo son:
q
3
q
4
0
r
3
=0
q
1
q
2
1
r
2
=1
q
5
q
6
1
r
5
=1
r = r
1
/ r
2
r
1
= r
3
. r
4
r
4
= r
5
*
r
3
= 0
r
5
= 1
r
2
= 1
Mtodo de Thompson
3) Los AFND para las ER son:
q
6
q
5
q
8

q
7

1
r
1
= r
3
.r
4
q
4

q
3
0

r
4
= r
5
*
q
6
q
5
q
8

q
7

Mtodo de Thompson
r = r
1
/ r
2
q
6
q
5
q
8

q
7

1
q
4

q
3
0
q
1
q
2
1
q
0

q
9

Aplicaciones de las ER y los autmatas


finitos
Los autmatas finitos se usan frecuentemente en los problemas que implican el
anlisis de cadenas de caracteres. Tales problemas incluyen problemas de
bsqueda e identificacin, tales como la bsqueda de la existencia de una cadena
en un fichero o el reconocimiento de cadenas de entrada que satisfagan ciertos
criterios. Un autmata finito es, l mismo, un modelo de procedimiento para
reconocimiento de cadenas por medio de la expresin regular asociada. Por
tanto, en la bsqueda de una cadena en un fichero, podemos aplicar el autmata
finito de forma sistemtica a las cadenas del fichero hasta que se acepta la
cadena o se termina el fichero.
Un problema comn en la programacin de computadoras es el de tener la
seguridad que los datos de entrada de un programa son correctos. Por ejemplo, si
se espera un entero sin signo como dato de entrada es fcil construir un
autmata finito que acepte nicamente las cadenas que representan informacin
correcta, se obtiene as un modelo para la rutina de entrada. Puesto que los
autmatas finitos se corresponden con las expresiones regulares, el problema se
reduce a especificar la informacin correcta por medio de expresiones regulares.
Aplicaciones de las ER y los
autmatas finitos
Tambin es sencillo traducir el autmata finito a un cdigo en un lenguaje de
programacin; slo se necesita seguir el rastro de la posicin actual en la cadena
y del estado actual. A la vez que se recorre la cadena, se cambia de estado segn
corresponda y, cuando se acaba la cadena, se comprueba a qu estado se ha
llegado y, segn eso, se acepta o se rechaza la cadena.
Las expresiones regulares se pueden usar para especificar las unidades lxicas
presentes en un lenguaje de programacin. Los autmatas finitos asociados se
usan para reconocer dichas unidades (llamadas componentes lxicos), en la
etapa del anlisis lxico de un compilador.