Sei sulla pagina 1di 11

CIENCIAS DE LA COMPUTACION I

2015

AUTOMATAS FINITOS
Un autmata finito es un modelo matemtico de una mquina que acepta cadenas de un
lenguaje definido sobre un alfabeto A. Consiste en un conjunto finito de estados y un conjunto
de transiciones entre esos estados, que dependen de los smbolos de la cadena de entrada. El
autmata finito acepta una cadena x si la secuencia de transiciones correspondientes a los
smbolos de x conduce desde el estado inicial a un estado final.
Si para todo estado del autmata existe como mximo una transicin definida para cada
smbolo del alfabeto, se dice que el autmata es determinstico (AFD). Si a partir de algn
estado y para el mismo smbolo de entrada, se definen dos o ms transiciones se dice que el
autmata es no determinstico (AFND).
Formalmente un autmata finito se define como una 5-upla
M = <E, A, , e0, F>
donde
E: conjunto finito de estados
A: alfabeto o conjunto finito de smbolos de entrada
: funcin de transicin de estados, que se define como
- : E x A E
si el autmata es determinstico
- : E x A P(E) si el autmata es no determinstico (P(E) es el conjunto potencia
de E, es decir el conjunto de todos los subconjuntos de E)
e0: estado inicial; e0 E
F: conjunto de estados finales o estados de aceptacin; F E
Generalmente se asocia con cada autmata un grafo dirigido, llamado diagrama de transicin
de estados. Cada nodo del grafo corresponde a un estado. El estado inicial se indica mediante
una flecha que no tiene nodo origen. Los estados finales se representan con un crculo doble.
Si existe una transicin del estado ei al estado ej para un smbolo de entrada a, existe entonces
un arco rotulado a desde el nodo ei al nodo ej; es decir que (ei, a) = ej, se representa en el
diagrama
ei

ej

Ejemplo 1:
Autmata finito determinstico que acepta el lenguaje
L1 = {ancbm/ n > 0 y m 0 }
M1D = < {e0, e1, e2}, {a, b, c}, 1D, e0, {e2 }>
1D est definida por el siguiente diagrama de transicin de estados

Ejemplo 2:
Autmata finito determinstico que acepta el lenguaje
L2 = {00x1/ x {0, 1}* }
M2D = < {e0, e1, e2, e3}, {0, 1}, 2D, e0, {e3 }>
2D est definida por el siguiente diagrama de transicin de estados

CIENCIAS DE LA COMPUTACION I

2015

Ejemplo 3:
Autmata finito determinstico que acepta el lenguaje
L3 = {xc3m/ x {a, b}* y la cantidad de bs es par y m 0}
M3D = < {e0, e1, e2, e3, e4}, {a, b, c}, 3D, e0, {e0, e4}>
3D est definida por el siguiente diagrama de transicin de estados

Ejemplo 4:
Autmata finito no determinstico que acepta el lenguaje
L4 = { x / x {0, 1}* y x contiene la subcadena 00 x contiene la subcadena 11}
M4ND = < {e0, e1, e2, e3, e4}, {0, 1}, 4ND, e0, {e2, e4 }>
4ND est definida por el siguiente diagrama de transicin de estados

Funcin de transicin para cadenas


Se define adems una funcin *: E x A* E, tal que * (ei, x) es el estado en que estar el
autmata despus de leer la cadena x comenzando en el estado ei.
1) * (ei, ) = ei
2) * (ei, a) = (ei, a) a un smbolo del alfabeto A.
3) * (ei, ax) = *((ei, a), x) siendo x una cadena y a un smbolo del alfabeto A.
La diferencia entre y * es que se define desde un estado y un smbolo del alfabeto, y * se
define desde un estado y una cadena de smbolos.
El lenguaje aceptado por un autmata finito M = <E, A, , e0, F> es:
L(M) = { x A* / * (e0, x) F }

CIENCIAS DE LA COMPUTACION I

2015

Los lenguajes aceptados por autmatas finitos se denominan lenguajes regulares.

Equivalencia entre AFD y AFND


Para cada AFND, existe un AFD que acepta el mismo lenguaje.
Dado el autmata finito no determinstico MND = <END, A, ND, e0ND, FND>, se define el
autmata finito determinstico correspondiente MD= <ED, A, D, e0D, FD> como sigue:
- ED = P(END) (conjunto potencia de END). Cada elemento de ED se representa como
[e1, e2, ..., ei] donde e1, e2, ..., ei estn en END. Se debe notar que [e1, e2, ..., ei] es un nico
estado de MD que corresponde a un conjunto de estados de MND.
- A: alfabeto
- D: ED x A ED, se define como
D([e1, e2, ..., ei], a) = [el, em, ..., ek] sii
ND({e1, e2, ..., ei}, a) = G ({e1, e2, ..., ei}, a) = {el, em, ..., ek},

donde G se define como G (C, a) = (p, a) y G (, a) = (C: conj. de estados)


pC

Es decir que D aplicada a un elemento [e1, e2, ..., ei] de ED se calcula aplicando ND a cada
estado de END representado por [e1, e2, ..., ei].
- e0D = [e0ND]
- FD: conjunto de todos los estados de ED que contienen al menos un estado final de MND.
Ejemplo 5: Construccin del autmata finito determinstico correspondiente al autmata finito
no determinstico del ejemplo 4.
El AFD M4D correspondiente al AFND M4ND se define como
M4D = < E4D, {0, 1}, 4D, [e0], F4D>
La funcin de transicin 4D se calcula como:
0
1
4D
[e0]
[e0, e3]
[e0, e1]
[e0, e3]
[e0, e3, e4]
[e0, e1]
[e0, e1]
[e0, e3]
[e0, e1, e2]
[e0, e3, e4]
[e0, e3, e4]
[e0, e1, e4]
[e0, e1, e2]
[e0, e2, e3]
[e0, e1, e2]
[e0, e1, e4]
[e0, e3, e4] [e0, e1, e2, e4]
[e0, e2, e3] [e0, e2, e3, e4] [e0, e1, e2]
[e0, e1, e2, e4] [e0, e2, e3, e4] [e0, e1, e2, e4]
[e0, e2, e3, e4] [e0, e2, e3, e4] [e0, e1, e2, e4]
Como 4ND(e0, 0) = {e0, e3}, entonces 4D([e0], 0) = [e0, e3].
Como 4ND({e0, e3}, 0)= G({e0, e3}, 0)=4ND(e0, 0) 4ND(e3, 0)={e0, e3} {e4} = {e0, e3,
e4 }
entonces 4D([e0, e3], 0) = [e0, e3, e4].
De la misma forma se calcula 4D para el resto de los estados.
Se debe notar que se ha calculado 4D para nicamente aquellos estados alcanzables desde el
estado inicial y a partir de los cuales se puede alcanzar un estado final. Por lo tanto, el
conjunto de estados E4D es
E4D = {[e0], [e0, e3], [e0, e1], [e0, e3, e4], [e0, e1, e2], [e0, e1, e4], [e0, e2, e3], [e0, e1, e2, e4], [e0, e2, e3, e4].}
El conjunto de estados finales F4D est formado por aquellos estados de E4D que contienen al
menos un estado final de M4ND. Entonces

CIENCIAS DE LA COMPUTACION I

2015

F4D = {[e0, e3, e4], [e0, e1, e2], [e0, e1, e4], [e0, e2, e3], [e0, e1, e2, e4], [e0, e2, e3, e4]}
Renombrando los estados correspondientes al AFD:
[e0] q0
[e0, e3] q1
[e0, e1] q2
[e0, e3, e4] q3
[e0, e1, e2] q4
[e0, e1, e4] q5
[e0, e2, e3] q6
[e0, e1, e2, e4] q7
[e0, e2, e3, e4] q8
la funcin de transicin 4D se puede reescribir como:
4D
q0
q1
q2
q3
q4
q5
q6
q7
q8

0
q1
q3
q1
q3
q6
q3
q8
q8
q8

1
q2
q2
q4
q5
q4
q7
q4
q7
q7

Entonces M4D = <{q0, q1, q2, q3, q4, q5, q6, q7, q8}, {0, 1}, 4D, q0, {q3, q4, q5, q6, q7, q8}>
El diagrama de transicin de estados correspondiente a este autmata es:
0
0

q3

q5

q7

0
1

q0

q1

1
1

1
q2

1
1

0
q4

q6
1

1
q8
0

Minimizacin de AFD
Para cada AFD existe un AFD con cantidad mnima de estados que acepta el mismo lenguaje.
El algoritmo de minimizacin divide el conjunto de estados del AFD en clases de
equivalencia. Los pasos a seguir son los siguientes:
1) Eliminar los estados no alcanzables desde el estado inicial.
2) Eliminar los estados desde los cuales no es posible alcanzar un estado final.
3) Construir una particin 0 del conjunto de estados, que consiste en dos grupos: estados
finales y estados no finales.
4) Sea K = 0.

CIENCIAS DE LA COMPUTACION I

2015

5) Definir K+1 de la siguiente manera: para cada grupo G de una particin K, dividir a G en
subgrupos tales que dos estados s y t estn en el mismo grupo s y slo s para todo smbolo a
del alfabeto de entrada, los estados s y t van al mismo grupo de K.
6) K = K + 1.
7) Si K K-1 volver al paso 5. En caso contrario, terminar.
Ejemplo 6: Minimizacin del AFD resultante del ejemplo 5.
- No existen estados no alcanzables desde el estado inicial.
- No existen estados desde los cuales no es posible alcanzar un estado final.
- Como q0, q1, q2 son estados no finales y q3, q4, q5, q6, q7, q8 son estados finales
0 = { q0 q1 q2, q3 q4 q5 q6 q7 q8 }
- Grupo q0 q1 q2. Como
- desde q0 con 0 se pasa al grupo q0 q1 q2
- desde q1 con 0 se pasa al grupo q3 q4 q5 q6 q7 q8
- desde q2 con 0 se pasa al grupo q0 q1 q2
se debe separar el estado q1 de los estados q0 y q2.
Para ver si q0 y q2 pueden quedar en el mismo grupo, se debe analizar qu ocurre con el
smbolo 1:
- desde q0 con 1 se pasa al grupo q0 q1 q2
- desde q1 con 1 se pasa al grupo q3 q4 q5 q6 q7 q8
Entonces, como con 1 van a distintos grupos se deben separar tambin.
- Despus de realizar un anlisis similar para el grupo q3 q4 q5 q6 q7 q8, la particin resultante
es: 1 = { q0, q1, q2, q3 q4 q5 q6 q7 q8 }
- Analizando 1 se puede concluir que no hay manera de seguir particionando, ya que 2 =
1.
Renombrando los estados:
q0 p0
q1 p1
q2 p2
q3 q4 q5 q6 q7 q8 p3
el AFD mnimo se define como M4Dmin = < { p0, p1, p2, p3 }, {0, 1}, , p0, {p3}>, donde est
definida
por el siguiente diagrama de transicin de estados
p1

0
1

p0

0, 1

0
0

1
p2

p3
1

De los ejemplos 4, 5 y 6 se puede concluir que:

CIENCIAS DE LA COMPUTACION I

2015

L(M4ND) = L(M4D) = L(M4Dmin) = L4


Ejemplo 7:
Autmata finito no determinstico que acepta el lenguaje
L7 = { a2nb2k+1 / n 1 y k 0} {ax / x {a, b}* y x contiene la subcadena ba}
M7ND = < {e0, e1, e2, e3, e4, e5, e6, e7}, {a, b}, 7ND, e0, {e3, e7 }>
7ND est definida por el siguiente diagrama de transicin de estados

El autmata finito determinstico M7D correspondiente al AFND M7ND se define como


M7D = < E7D, {a, b}, 7D, [e0], F7D>
La funcin de transicin 7D se calcula como:
7D
[e0]
[e1, e5]
[e2, e5]
[e5, e6]
[e3, e5, e6]
[e5, e7]
[e4, e5, e6]
[e5, e6, e7]

a
[e1, e5]
[e2, e5]
[e1, e5]
[e5, e7]
[e5, e7]
[e5, e7]
[e5, e7]
[e5, e7]

b
[e5, e6]
[e3, e5, e6]
[e5, e6]
[e4, e5, e6]
[e5, e6, e7]
[e3, e5, e6]
[e5, e6, e7]

Como 7ND(e0, a) = {e1, e5}, entonces 7D([e0], a) = [e1, e5].


Como 7ND({e1, e5}, a)= G({e1, e5}, a)=7ND(e1, a) 7ND(e5, a)={e2} {e5} = {e2, e5}
entonces 7D([e1, e5], a) = [e2, e5].
De la misma forma se calcula 7D para el resto de los estados.
Se debe notar que se ha calculado 7D para nicamente aquellos estados alcanzables desde el
estado inicial y a partir de los cuales se puede alcanzar un estado final. Por lo tanto, el
conjunto de estados E7D es E7D = {[e0], [e1, e5], [e2, e5], [e3, e5, e6], [e4, e5, e6], [e5, e6], [e5, e7],
[e5, e6, e7]}
El conjunto de estados finales F7D est formado por aquellos estados de E7D que contienen al
menos un estado final de M7ND. Entonces
F7D = {[e5, e7], [e3, e5, e6], [e5, e6, e7]}

CIENCIAS DE LA COMPUTACION I

2015

Renombrando los estados correspondientes al AFD:


[e0] q0
[e1, e5] q1
[e2, e5] q2
[e5, e6] q3
[e3, e5, e6] q4
[e5, e7] q5
[e4, e5, e6] q6
[e5, e6, e7] q7
la funcin de transicin 7D se puede reescribir como:
7D
q0
q1
q2
q3
q4
q5
q6
q7

a
q1
q2
q1
q5
q5
q5
q5
q5

b
q3
q4
q3
q6
q7
q4
q7

Entonces M7D = <{q0, q1, q2, q3, q4, q5, q6, q7}, {a, b}, 7D, q0, {q4, q5, q7}>
El diagrama de transicin de estados correspondiente a este autmata es:
a

q0

a
q1
b

q2

q4

a
a

q3

q6
b

a
a

q5

b
q7

a
El autmata finito determinstico mnimo correspondiente al autmata M7D se calcula como
sigue:
- No existen estados no alcanzables desde el estado inicial.
- No existen estados desde los cuales no es posible alcanzar un estado final.
- Como q0, q1, q2, q3 y q6 son estados no finales y q4, q5 y q7 son estados finales
0 = { q0 q1 q2 q3 q6, q4 q5 q7 }
- Grupo q0 q1 q2 q3 q6. Como
- desde q0 con a se pasa al grupo q0 q1 q2 q3 q6
- desde q1 con a se pasa al grupo q0 q1 q2 q3 q6
- desde q2 con a se pasa al grupo q0 q1 q2 q3 q6
- desde q3 con a se pasa al grupo q4 q5 q7
- desde q6 con a se pasa al grupo q4 q5 q7
los estados q3 y q6 se deben separar de los estados q0, q1 y q2.

CIENCIAS DE LA COMPUTACION I

2015

Para ver si q0, q1 y q2 pueden quedar en el mismo grupo, se debe analizar qu ocurre con el
smbolo b:
- desde q0 con b no hay transiciones definidas
- desde q1 con b se pasa al grupo q0 q1 q2 q3 q6
- desde q2 con b se pasa al grupo q4 q5 q7
Como con b van a distintos grupos se deben separar.
Para ver si q3 y q6 pueden quedar en el mismo grupo, se debe analizar qu ocurre con el
smbolo b:
- desde q3 con b se pasa al grupo q0 q1 q2 q3 q6
- desde q6 con b se pasa al grupo q4 q5 q7
Entonces, como con b van a distintos grupos se deben separar tambin.
- Despus de realizar un anlisis similar para el grupo q4 q5 q7, la particin resultante es:
1 = { q0, q1, q2, q3, q4, q6, q5 q7 }
- Analizando 1 se puede concluir que no hay manera de seguir particionando, ya que 2 =
1.
Renombrando los estados:
q0 p0
q1 p1
q2 p2
q3 p3
q4 p4
q6 p6
q5 q7 p5
el AFD mnimo se define como M7Dmin = < { p0, p1, p2, p3, p4, p5, p6}, {a, b}, , p0, {p4, p5}>,
donde est definida por el siguiente diagrama de transicin de estados
b
a
b
a
p6
p4
p2
p1
p0
b
a
a
a
b
a, b
p5
b
p3
a
Se puede concluir que L(M7ND) = L(M7D) = L(M7Dmin) = L7
Autmata finito: Modelo
Un autmata finito M que se utiliza como modelo es simplemente un autmata finito que se
define como una 3-upla MM= <E, A, >.
Notar que no existe estado inicial e0, ni el conjunto de estados finales F, ya que solo se utiliza
para modelar el funcionamiento de un proceso.
Donde
E: Conjunto finito de estados,
A: Alfabeto o conjunto finito de smbolos de entrada,
: Es la funcin de transicin de estados definida : E x A E
Ejemplo 8:
Se muestra el modelo de funcionamiento de un grabador tipo
E ={OFF, ON, PAUSA, AVAN., RETR.}

CIENCIAS DE LA COMPUTACION I

2015

A={play, pausa, stop, rew, ff}


:
pausa

play
OFF

ON

stop
ff

play

stop

PAUSA

pausa
rew
play ff

rew
stop
RETR

ff

AVAN

rew
Autmata Finito Traductor
Un autmata finito traductor MT es simplemente un autmata finito que se define como una
7-upla MT = <E, A, , e0, F, S, >.
Donde
E: Conjunto finito de estados,
A: Alfabeto o conjunto finito de smbolos de entrada,
: Es la funcin de transicin de estados definida : E x A E
e0: Estado inicial e0 E.
F: Conjunto de estados finales o estados de aceptacin. F E.
S: Alfabeto o conjunto finito de smbolos de salida
: Es la funcin de traduccin definida : E x A S*
Ambas funciones : E x A E y :E x A S* estn definidas sobre E x A.
Si existen (ei , a) = ej y
donde ei, ej E; a A ; x S*
(ei , a) = x
en el diagrama de transicin de estados el valor de la traduccin x se agrega sobre los arcos.
a / x
ei
e
j

Funcin de traduccin para cadenas


La extensin de la funcin de traduccin *: E x A* S*, tal que *(ei, ) es la cadena que
traducir el autmata, luego de leer la cadena en la cinta de entrada y comenzando en el
estado ei, se define como:
1) *(ei, ) =
2) *(ei, ax) = (ei, a). ((ei, a), x) donde a A, x A*, ei E
La diferencia entre y * es que se define desde un estado y un smbolo del alfabeto, y
* se define desde un estado y una cadena de smbolos.
Nota: El autmata solo define la traduccin, si el autmata finito reconocedor subyacente
acepta la cadena. Es decir, la traduccin T(): A* S* asociada a MT est definida como:
T()= *(e0 , ) *(e0 , ) F
donde A*

CIENCIAS DE LA COMPUTACION I

2015

Ejemplo 9:
En cierta oficina, una mquina expendedora distribuye dos tipos de bebidas en lata: gaseosa y
agua mineral. El precio por unidad es $1. La mquina acepta monedas de $0.25, $0.50 y $1; y
devuelve el cambio necesario. Para comprar una bebida se deben introducir las monedas, y
luego apretar el botn G para solicitar una gaseosa, o bien el botn M para solicitar Agua
Mineral.
Para esta mquina se modela el siguiente Autmata Finito AFM = <E, A, , S, >
La funcin de traduccin , indica el dinero que se entrega como cambio por la adquisicin de
la bebida, seguido por el tipo de bebida que se ha seleccionado.
El conjunto de estados E = { e0, e1, e2, e3, e4}, donde el estado ek de la mquina, para k = 0, 1,
2, 3, 4, recuerda la insercin de un total de k * $0.25.
A = {0.25, 0.50, 1, G, M}
S = {0.25, 0.50, 1, g, m} donde g indica lata de gaseosa y m agua mineral

e0
e1
e2
e3
e4

e1
e2
e3
e4

e2
e3
e4
e4

e4
e4
e4
e4

e0
e1
e2
e3

e0
e1
e2
e3

e0
e1
e2
e3

e4

e4

e4

e0

e0

e4

0.25 0.50

0.25 0.50

0.25
0.50
0.25 0.25
0.50
0.25 0.50 1

Ejemplo 10:
Sea L = {0n12m0k / n 2 y m 2 y k0}
Traducir las cadenas de L:
0n12m0k como a2n+1b(bc)m

para n 2, m 2, k0

MT1 = <{e0,e1,e2,e3,e4,e5,e6,e7}, {0,1}, , e0, {e6,e7}, {a,b,c}, >

CIENCIAS DE LA COMPUTACION I
Para la cadena de entrada 001111 = 0214
T(0214) = *(e0 , 0214) *(e0 , 0214) F
T(0214) = a5b2(bc)2 e6 F
Para la cadena de entrada 051603
T(051603) = *(e0 , 051603) *(e0 , 051603)
T(051603) = a11b(bc)3
e7 F
Para la cadena de entrada 01402
T(01402) = *(e0 , 01402) *(e0 , 01402)
T(01402) no es vlida porque e1 F
Ejemplo 11:
Sea L = {cc (ba)2kx / k0 y x {a,c}*}
Traducir las cadenas de L:
cc(ba)2kx como 1k+11m
para k0 y m=|x|
MT1 = <{e0,e1,e2,e3,e4,e5,e6}, {0,1}, , e0, {e2, e6}, {1}, >
y :

Para la cadena de entrada cc


*(e0 , cc)=1 *(e0 , cc) F
Para la cadena de entrada cc(ba)4acca
*(e0 , cc(ba)4acca)= 1314 =17 *(e0 , cc(ba)4acca) F
Para la cadena de entrada ccaaaacacc
*(e0 , ccaaaacacc)= 19 *(e0 , ccaaaacacc) F
Para la cadena de entrada ccc
*(e0 , ccc)= 12 *(e0 , ccc) F

2015

Potrebbero piacerti anche