Este documento resume los conceptos de autómatas finitos determinísticos y no determinísticos. Explica que los autómatas finitos no determinísticos pueden tener múltiples estados siguientes para un símbolo dado, mientras que los determinísticos solo tienen un estado siguiente único. También demuestra que para cualquier autómata finito no determinístico existe un equivalente determinístico y describe el algoritmo para construirlo. Finalmente, presenta el algoritmo para minimizar un autómata finito determinístico mediante la agrupación de
1. Autómatas Finitos No Determinísticos
Minimización de Autómatas Finitos Determinísticos
Ciencias de la Computación I
Agosto 2007
2. Autómatas Finitos
Determinísticos
Para cada estado y para cada símbolo se determina unívocamente un
solo estado:
e0 e1
b
a, c
a, c b
No Determinísticos
Para algunos estados, dado un símbolo a, existe un conjunto de
estados siguientes para elegir
Dada una cadena w existe sólo
una forma de recorrer el diagrama
de transición de estados del AF
e0 e1
b
a, b, c
Desde e0 con b podemos
quedarnos en e0 ó pasar a e1
3. Autómatas Finitos No Determinísticos
Formalmente, un AF reconocedor no determinístico (AFND)
se define como una quintupla
M = <E, A, , ei, F>
E es un conjunto finito de estados; E
A es el alfabeto de entrada
es la función de transición de estados; : E x A P(E)
P(E) conjunto potencia de E
F es el conjunto de estados finales o de aceptación; F E
En general
(ej, a) = {ek, es, et, … }
El AF puede pasar del estado ej al ek ó al estado es ó al estado et
después de leer el símbolo a en la cinta (ej, ek,es, et, E; a A)
4. Autómatas Finitos No Determinísticos
Ejemplo:
AFND que reconoce el lenguaje
L = { x / x {a, b}* y x contiene la subcadena ab }
e0 e2
b
a, b a, b
e1
a
AFND = <{e0, e1 , e2}, {a, b}, , e0, {e2}>
Las cadenas aaba y baa, ¿pertenecen o no a L(AFND)?
Aceptación de cadena por AFND
Un AFND acepta una cadena si existe alguna secuencia de
transiciones que a partir del primer símbolo de la cadena y
empezando en el estado inicial, permite alcanzar un estado
final luego de leer todos los símbolos de la cadena.
5. Determinismo y No determinismo
Determinismo término importante en muchas áreas de
Teoría de la Computación
Determinismo existe una alternativa válida, o no hay alternativa.
No Determinismo puede haber varias alternativas válidas.
Importante distinguir si el no determinismo agrega o no poder
computacional
En los Autómatas Finitos, todo se puede resolver con un
Autómata Finito Determinístico
6. Equivalencia entre AFND y AFD
Teorema:
Sea L un lenguaje aceptado por un AFND. Entonces existe un AFD que
acepta el mismo lenguaje L. Es decir, L(AFND) = L(AFD)
Algoritmo para obtener AFD a partir de AFND:
Dado el autómata finito no determinístico MND = <END, A, ND, e0ND, FND>,
se define el autómata finito determinístico 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 END.
[e1, e2, ..., ei] es un único estado de MD
- A: alfabeto de entrada
7. Equivalencia entre AFND y AFD
Algoritmo para obtener AFD a partir de AFND:
-FD: conjunto de todos los estados de ED que contienen al menos un
estado final de MND.
- e0D = [e0ND] (estado inicial)
-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},
G (C, a) = (p, a) y G (, a) = (C: conj. de estados)
p C
D aplicada a un elemento [e1, e2, ..., ei] de ED se calcula aplicando
ND a cada estado de END que está en [e1, e2, ..., ei].
8. Equivalencia entre AFND y AFD
Sea AFND = <{e0, e1}, {a, b, c}, , e0, {e1}> tal que
L(AFND) = { x / x {a, b, c}* y x termina en b}
ND a b c
e0 {e0} {e0, e1} {e0}
e1
D a b c
[e0] [e0] [e0, e1] [e0]
[e0, e1] [e0] [e0, e1] [e0]
Función de transición
determinística
e0 e1
b
a, b, c
a, c
e0 e0,e1
b
a, c b
Función de transición
no determinística
9. Minimización de AFD
Teorema
Para cada AFD existe un AFD con cantidad mínima de
estados que acepta el mismo lenguaje.
Algoritmo para minimizar un AFD
(divide al conjunto de estados del AFD en clases de
estados equivalentes)
Dado un AFD = <E, A, , e0, F>, dos estados p, q E son
equivalentes sí y sólo sí para toda cadena x A*,
* (p,x) F * (q,x) F ó * (p,x) F * (q,x) F
(Si las transiciones desde p con la cadena x llegan a un estado final, las de q con esa
misma cadena x también tienen que llegar, lo mismo si no se llega a un estado final)
10. Minimización de AFD
Algoritmo para minimizar un AFD
1) Eliminar los estados no alcanzables desde el estado inicial.
2) Eliminar los estados desde los que no es posible alcanzar un estado final.
3) Construir una partición 0 del conjunto de estados, que consiste en dos
grupos: estados finales y estados no finales.
4) Sea K = 0.
5) Definir K+1 de la siguiente manera:
para cada grupo G de una partición K, dividir a G en subgrupos tales que
dos estados s y t están en el mismo grupo sí y sólo sí para todo símbolo 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.