Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Interpretes
Autómatas Finitos Deterministas (DFA)
Autómatas Finitos No Deterministas (NFA)
UNET 2012
Definición formal de un autómata
finito determinista (DFA)
Los autómatas con un número finito de estados, que tienen un único
estado inicial, y para cada estado una, y solo una transición para cada
símbolo, se denominan autómatas finitos deterministas y para
poderlo definir se requiere conocer:
1. L = {abba}
1
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
2. L = {abba,ababba}
2
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
3. L = {a}*={an |n ≥ 0 } = { w | |w|b= 0}
3
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
4. L = {a}+
4
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
5. L = { w | |w| ≥ 3}
5
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
6. L = { w | |w| < 4}
6
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
7. L = { w | |w|a= 3}
7
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
8. L = { w | |w|b= 4n, n ≥ 0 }
8
Ejercicios
• Encontrar un DFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
9
Lenguajes No Regulares
• No todos los lenguajes son regulares
Y si es
una b
Aceptación de una palabra en los
Autómatas finitos Indeterministas
Es similar al de los DFA, pero teniendo en cuenta las siguientes
consideraciones:
Aceptación de una palabra en los
Autómatas finitos Indeterministas
Por ejemplo si consideramos la palabra abaabb y el NFA:
1. L = {abba}
1
Ejercicios
• Encontrar un NFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
2. L = {abba,ababba}
2
Ejercicios
• Encontrar un NFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
3
Ejercicios
• Encontrar un NFA que reconozca los siguientes lenguajes definidos
en el alfabeto ∑={a,b}:
4
Diferencias Autómatas finitos
Indeterministas y Deterministas
1. El DFA tiene un único estado inicial, mientras
que en un NFA puede tener más de uno.
2. En un DFA, la función de transición
determina un nuevo estado para cada pareja
estado-símbolo, mientras que en un NFA,
para cada pareja estado símbolos tenemos
un conjunto de estados.
Diferencias Autómatas finitos
Indeterministas y Deterministas
Ejemplo:
Coincidencias Autómatas finitos
Indeterministas y Deterministas
• Los lenguajes reconocidos por los autómatas finitos deterministas
son los llamados lenguajes regulares.
• Los lenguajes que los autómatas finitos indeterministas pueden
reconocer son exactamente los mismos que los deterministas, los
lenguajes regulares.
• Un hecho importante es que con un proceso especial conocido
como determinización, ser puede convertir un NFA en un DFA.
Determinización de autómatas no
deterministas
• Un DFA y un NFA se pueden considerar equivalentes:
• Por un lado los DFA pueden considerarse un caso particular de los NFA.
• Por otro lado, cualquier NFA puede convertirse en un DFA que acepta el
mismo lenguaje mediante un procedimiento algorítmico denominado
determinización.
• Y aunque son equivalentes por un lado, por otro no son
equivalentes en todos los sentidos:
• La construcción de NFA es más simple.
• El indeterminismo es una cualidad poco deseable.
• Por estas razones la mayoría de autómatas se crean
indeterministas, se determinizan, y se utiliza su versión
determinada.
Determinización de autómatas no
deterministas
• La clave del proceso de determinización es la siguiente: Cada estado de un
autómata determinista se corresponde con un subconjunto de los estados del
autómata indeterminista. Concretamente:
• El estado inicial del autómata determinista es el conjunto de los estados
iníciales del indeterminista (I).
• Los estados aceptadores del determinista son aquellos que contienen
algún aceptador del indeterminista.
• La función de transición del determinista tiene en consideración todas
las transiciones definidas para cada uno de los estados del autómata
indeterminista que componen un estado del autómata determinista.
Determinización de autómatas no
deterministas
• Por ejemplo, consideremos el autómata indeterminista y veamos su
determinización paso a paso:
Determinización de autómatas no
deterministas
• En primer lugar, el estado inicial del autómata determinista se
corresponderá con los estados iníciales del indeterminista {A,D}:
Determinización de autómatas no
deterministas
La función de transición del estado {A,D} con el símbolo a debe
recoger las transiciones tanto del estado A como del estado D con
este símbolo.
Concretamente, la transición para A con a es hacia el estado B
(δ(A,a)={B}) y, para D con a no esta definido (δ(D,a)={ɸ}).
Así la transición para {A,D} con a es hacia el estado {B} U {ɸ} = {B}:
Determinización de autómatas no
deterministas
Para el estado A,D y el símbolo b se procede de la misma forma
δ(A,b)={ɸ}
y
(δ(D,b)={E}).
Así la transición para {A,D} con b hacia el estado {ɸ} U {E} = {E}
Determinización de autómatas no
deterministas
El mismo proceso que se seguido con el estado {A,D} se debe seguir
con los nuevos estados que han aparecido {B} y {E}:
dígito +
Implementación de autómatas finitos
en código
Primera forma de implementación
Es la más sencilla y es la siguiente:
Comentarios:
• Se usa la posición en el
{iniciando en el estado 1} código para mantener el
If el siguiente carácter es una letra then estado implícitamente.
avanza en la entrada;
{Ahora en el estado 2} • Útil si no hay
while el siguiente carácter es una letra o dígito do demasiados estados.
avanza en la entrada;
{permanece en estado 2} • Cada DFA se tiene que
end while; implementar de forma
{ir al estado 3 sin avanzar en la entrada} diferente.
aceptar;
else •La complejidad
{error u otros casos} aumenta a medida que
end if; se eleva el número de
estados.
Implementación de autómatas finitos
en código
Ejercicio para la casa PRIMERA FORMA DE IMPLEMENTACION
Lleve a cabo la implementación del autómata de las constantes
numéricas en notación científica mediante el uso de Java .
Caracteres en el
alfabeto ∑ (c)
Estados representando
Estados transiciones T(s,c)
s
Implementación de autómatas finitos
en código
Tercera forma de implementación
El DFA para identificadores entonces se puede
representar como la tabla de transiciones, donde los espacios
en blanco representan transiciones que no se muestran en el
DFA (a estados de error u otros procesamientos)
Carácter de letra digito otro
Entrada
Estado
1 2
2 2 2 3
3
Implementación de autómatas finitos
en código
Tercera forma de implementación
Si a la tabla de transiciones, agregamos la información acerca de
cuales estados son aceptadores y cuales transiciones no
consumen sus entradas en esta misma estructura obtenemos: