La palabra autmata evoca algo que pretende imitar las
funciones propias de los seres vivos, especialmente
relacionadas con el movimiento, por ejemplo el tpico robot
antropomorfo. En el campo de los Traductores,
Procesadores, Compiladores e Intrpretes, lo fundamental
no es la simulacin del movimiento, sino la simulacin de
procesos para tratar informacin.
La informacin se codifica en cadenas de smbolos, y un
autmata es un dispositivo que manipula cadenas de
smbolos que se le presentan a su entrada, produciendo
otras tiras o cadenas de smbolos a su salida.
El autmata recibe los smbolos de entrada, uno detrs de
otro, es decir secuencialmente. El smbolo de salida que en
un instante determinado produce un autmata, no slo
depende del ltimo smbolo recibido a la entrada, sino de
toda la secuencia o cadena, que ha recibido hasta ese
instante.
Todo lo anterior conduce a definir un concepto fundamental:
estado de un autmata.
El estado de un autmata es toda la informacin necesaria en un
momento dado, para poder deducir, dado un smbolo de entrada en
ese momento, cual ser el smbolo de salida. Es decir, conocer el
estado de un autmata, es lo mismo que conocer toda la historia de
smbolos de entrada, as como el estado inicial, estado en que se
encontraba el autmata al recibir el primero de los smbolos de
entrada.
El autmata tendr un determinado nmero de estados (pudiendo
ser infinitos), y se encontrar en uno u otro segn sea la historia de
smbolos que le han llegado.
Se define configuracin de un autmata a su situacin en un
instante. Se define movimiento de un autmata como el transito
entre dos configuraciones. Si un autmata se encuentra en un
estado determinado, recibe un smbolo tambin determinado,
producir un smbolo de salida y efectuar un cambio o transicin a
otro estado (tambin puede quedarse en el mismo estado).
El campo de estudio de los Traductores, Procesadores e
Intrpretes son los lenguajes y las gramticas que los
generan. Los elementos del lenguaje son sentencias,
palabras, etc... Formadas a partir de un alfabeto o
vocabulario, que no es otra cosa que un conjunto finito
de smbolos. Establecidas las reglas gramaticales, una
cadena de smbolos pertenecer al correspondiente
lenguaje si tal cadena se ha formado obedeciendo esas
reglas. Entonces un autmata reconocedor de ese
lenguaje, funciona de tal forma que cuando reciba a su
entrada una determinada cadena de smbolos indica si
dicha cadena pertenece o no al lenguaje. Tambin se
mostrar como existe un tipo de autmata para
reconocer cada uno de los tipos de lenguajes
generados por las correspondientes gramticas.
Analizador lxico
AUTMATA FINITO
Para comprender el significado de Autmata Finito, tendremos en
cuenta el trmino mquina, que evoca algo hecho en metal,
usualmente ruidoso y grasoso, que ejecuta tareas repetitivas que
requieren de mucha fuerza o velocidad o precisin.
Ejemplos de estas mquinas son las embotelladoras automticas de
refrescos. Su diseo requiere de conocimientos en mecnica,
resistencia de materiales, y hasta dinmica de fluidos. Al disear tal
mquina, el plano en que se le dibuja hace abstraccin de algunos
detalles presentes en la mquina real, tales como el color con que
se pinta, o las imperfecciones en la soldadura.
El plano de diseo mecnico de una mquina es una abstraccin de
sta, que es til para representar su forma fsica. Sin embargo, hay
otro enfoque con que se puede modelar la mquina embotelladora:
cmo funciona, en el sentido de saber qu secuencia de
operaciones ejecuta. As, la parte que introduce el lquido pasa por
un ciclo repetitivo en que primero introduce un tubo en la botella,
luego descarga el lquido, y finalmente sale el tubo para permitir la
colocacin de la cpsula (corcholata). El orden en que se efecta
este ciclo es crucial, pues si se descarga el lquido antes de haber
introducido el tubo en la botella, el resultado no ser satisfactorio.
Las mquinas que se estudian son abstracciones
matemticas que capturan solamente el aspecto
referente a las secuencias de eventos que
ocurren, sin tomar en cuenta ni la forma de la
mquina ni sus dimensiones, ni tampoco si
efecta movimientos rectos o curvos, etc.
En esta parte se estudian las mquinas abstractas
ms simples, los autmatas finitos, las cuales
estn en relacin con los lenguajes regulares,
como veremos a continuacin.
Al describir una mquina de estados finitos en
particular, debemos incluir las informaciones
que varan de un autmata a otro; es decir, no
tiene sentido incluir descripciones generales
aplicables
a
todo
autmata.
Estas
informaciones son exactamente las que
aparecen en un diagrama de estados y
transiciones, como se presenta ms adelante.
Autmata finito
Un autmata finito es un modelo matemtico de una
mquina que acepta cadenas de un lenguaje definido sobre un
alfabeto.
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.
Desde el punto de vista intuitivo, podemos ver un autmata
finito como una caja negra de control, que va leyendo
smbolos de una cadena escrita en una cinta, que se puede
considerar ilimitada por la derecha. Existe una cabeza de
lectura que en cada momento est situada en una casilla de
la cinta. Inicialmente, esta se sita en la casilla de ms a la
izquierda. El autmata en cada momento est en uno de los
estado de Q. Inicialmente se encuentra en q0.
En cada paso, el autmata lee un smbolo y segn el estado
en que se encuentre, cambia de estado y pasa a leer el
siguiente smbolo. As sucesivamente hasta que termine de
leer todos los smbolos de la cadena. Si en ese momento la
mquina est en un estado final, se dice que el autmata
acepta la cadena. Si no est en un estado final, la rechaza.
Ejemplo de autmata finito: Se va a disear un autmata que
reconozca el paso de un alumno por un curso, por ejemplo,
Autmatas y lenguajes formales.
Representar las distintas decisiones que se realizan y si se aprueba
o aplaza el curso. Se controla que no haya ms de dos
convocatorias por ao y se termina cuando se aprueba el curso.
Habr un alfabeto de entrada contendr los siguientes elementos:
P: El alumno se presenta al examen.
N: El alumno no se presenta al examen.
A: El alumno aprueba el examen.
S: El alumno aplaza un examen.
Comienza en un estado, Inicio. A continuacin decide si
presenta en Febrero o no. Si no presenta y aprueba,
termina. Si no presenta o aplaza, se decide si se presenta
en septiembre, pero como hay que controlar que un
estudiante no se presente a tres convocatorias en un ao,
los estados son distintos en ambos casos. Si en septiembre
aprueba, termina. Si suspende o aplaza y ya se haba
presentado en febrero, comienza de nuevo. En otro caso,
puede decidir si presenta en diciembre. Si aprueba, termina
y si suspende, empieza de nuevo.
Este esquema corresponde a un autmata finito. Se
caracteriza por una estructura de control que depende de
un conjunto finito de estados. Se pasa de unos a otros
leyendo smbolos del alfabeto de entrada. Este autmata
representa una versin simplificada del problema real, ya
que no controla el nmero total de convocatorias. Un
autmata para todos los cursos se puede construir uniendo
autmatas para cada una de los cursos, pero teniendo en
cuenta relaciones como requisitos entre los mismos.
Ejemplo
La maquina de refresco:
Caractersticas:
El refresco vale S/1.00
Solo Acepta monedas de S/1.00, S/0.50, S/0.25
La maquina no da vuelto
Ejemplo:
Supongamos que se quiere modelar el siguiente
comportamiento de un horno microondas:
El horno microondas posee una puerta.
Si la puerta est cerrada, entonces puede estar o no
en funcionamiento (segn se prenda o apague).
Estando prendido no es posible abrir la puerta del
horno sin antes apagarlo.
Tambin asumamos lo siguiente: en cualquier
momento es posible establecer el modo de coccin.
No es obligatorio etiquetar los nodos, sin embargo
puede resultar muy til hacerlo: sobre todo aquellos
nodos que representan los estados principales de que
se est modelando.
Ejemplo
La mquina del ejemplo anterior
se representa con una tabla
O bien se representa con un
diagrama
Autmata finito determinista
Podemos usar un diagrama de transicin para ayudar a determinar si una
cadena pertenece o no a un lenguaje.
Los nodos del diagrama se denominan estados y se utilizan para sealar hasta
donde se ha analizado la cadena.
Las aristas se denominan transiciones y se etiquetan con los smbolos del
alfabeto.
Existe un estado, llamado estado inicial, que es de donde parte el anlisis de
toda cadena.
Algunos estados se marcan como estados de aceptacin para determinar si
una cadena es legal o no.
La cadena es legal si se termina su anlisis en un estado de aceptacin.
Los estados de aceptacin se representan encerrados en un crculo.
Diagramas de Estado
El diagrama de estado de un AFD es un grafo dirigido-etiquetado
en el cual los nodos representan los estados de la mquina y los
arcos son obtenidos de la funcin de transicin.
Otra definicin es la siguiente:
El diagrama de estado de un AFD M = (Q, S, d, q0, F) es un
grafo etiquetado G definido por las sig. condiciones:
i) Los nodos de G son los elementos de Q.
ii) Las etiquetas sobre los arcos de G son elementos de S.
iii) q0 es el nodo inicial, representado con >
iv) F es el conjunto de nodos aceptadores; cada nodo acaptador
se representa con
Construccin de diagramas de
transicin
Para construir un diagrama de transiciones a partir de una
descripcin de un autmata, se procede como sigue.
Se dibujan nodos para cada estado del autmata, luego se
trazan flechas desde cada estado qi hacia el qj etiquetndolas
con el smbolo de entrada correspondiente, se marca el estado
inicial y los estados de aceptacin.
Autmata determinstico
A = ({q0, q1, q2}, {a, b}, , q0, {q0, q1})
(q0, a)= q0
(q0, b)= q1
(q1, a)= q2
(q1, b)= q1
(q2, a)= q2
(q2, b)= q2
Ejemplo
Solucin:
Se construye el diagrama de estados, colocando en
primer lugar todos los estados dentro de crculos,
marcando con doble crculo el estado final. El estado
inicial se indica con una flecha que lo seala con la
palabra INICIO encima. Para construir las ramas, nos
situamos en el primer estado de la tabla de transiciones
y se observa que f(q1,a)=q2, entonces se traza una
flecha entre q1 y q2, apuntando a q2, y se coloca
encima de la flecha el smbolo del vocabulario de
entrada a. De igual forma se recorre la tabla de
transiciones para cada estado y entrada completndose
el diagrama de Moore.
Teora computacional
Clase 08: Autmatas finitos
Prof. Edgardo Adrin Franco Martnez
Lenguaje reconocido por un autmata finito
Los identificadores de C son cadenas de letras, dgitos y
guiones bajos.
letra_
dgito
id
[A-Za- z_]
[0-9]
letra_ ( letra_ |
dgito)*
Teora computacional
Clase 08: Autmatas finitos
Prof. Edgardo Adrin Franco Martnez
Ejemplo
Solucin : Este ejemplo es inverso al anterior, pues se da un
lenguaje y se pide el autmata que lo reconoce. En primer lugar
se construye un diagrama de Moore, de tal forma que a partir
del estado inicial, despus de leer una letra, acepte letras o
dgitos de forma variable, y cuando encuentre un carcter
diferente de letra o dgito alcance el estado final. El diagrama de
Moore es el que se muestra en la figura.
El autmata finito se deduce del diagrama de estados y
es el siguiente:
donde f se define por :
Teora computacional
Clase 08: Autmatas finitos
Prof. Edgardo Adrin Franco Martnez
$ representa a el fin de la cadena
Ejemplo:
Considrese
el
determinstico
siguiente
autmata
M = (Q,,,q0,F), donde
Q = {qo,q1}
= {a, b}
qo = estado inicial
F = { qo }
y es la funcin tabulada a continuacin:
finito
Entonces su diagrama de transicin (diagrama de
estados) correspondiente es:
Claramente se puede llegar a la conclusin de
L(M) es el conjunto de todas las cadenas que
tienen un nmero par de bs
Si el autmata M recibe como entrada la cadena
aabba, su configuracin inicial sera (q0,aabba)
Entonces:
Por lo tanto aabba es aceptada por el
autmata M
AUTMATAS FINITOS Y EXPRESIONES
REGULARES
Ejemplo:
Considrense las siguientes reglas de
produccin para una gramtica que genera las
mismas cadenas que la expresin regular
anterior.
S es el smbolo inicial.
S genera una A, seguida de una B y
finalmente una C.
A genera solamente una a.
B genera una b seguida de una B genera
la cadena vaca (ningn carcter).
C genera una c.
Las letras maysculas representan la parte de la
cadena final que an no ha sido sustituida por su
correspondiente lado derecho.
Claramente, la gramtica anterior genera las
cadenas {ac, abc, abbc, abbbc, abbbbc, ......}
1) ab*baa*
q0
2) xyz(zy)*
q0
Expresiones regulares
b
a
q1
q1
q2
q2
3) 01(10)*
q0
q1
q2
q3
z
q3
q2
y
q3
AFD
q0
q1
q2
q0
q1
q2
q1
q2
q2
AFND
a
q0
estados
q1
q2
Es un autmata finito no determinstico ya que
posee ms de un estado en una celda.
estados
q0
q0 q1
q2
q1
q2
q2
Proceso computacional
Es el proceso que se lleva a cabo cuando a un autmata se le
entrega una palabra.
Sirve para llegar a un estado de aceptacin o de rechazo.
Para que una palabra sea aceptada debe de ocurrir dos
cosas:
Cond1) La palabra debe de terminarse o agotarse (esto es,
que no quede ninguna letra sin procesar).
Cond2) El estado que queda al finalizar debe ser estado de
aceptacin.
Ejemplo: Reconocer 10101
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Ejemplo: Reconocer 10101
Revisamos la definicin del AF,
buscando el estado inicial.
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Ejemplo: Reconocer 10101
Estado inicial: q0. Lo pondremos como
estado actual.
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
Letra actual:
Ejemplo: Reconocer 10101
Ahora pondremos la primera letra como
la letra actual
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
Letra actual: 1
Ejemplo: Reconocer 10101
Inicia el proceso. Buscamos en la tabla el
estado siguiente para el estado y la letra
actual.
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
Letra actual: 1
Ejemplo: Reconocer 10101
Ponemos el nuevo estado encontrado como
estado actual.
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
Letra actual: 1
Ejemplo: Reconocer 10101
Avanzamos una letra de la palabra y la
colocamos como letra actual
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
Letra actual: 0
Ejemplo: Reconocer 10101
Ahora buscamos el nuevo estado siguiente
para el nuevo estado y letra actual.
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
Letra actual: 0
Ejemplo: Reconocer 10101
Colocamos el nuevo estado como actual y
avanzamos una letra
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q1
d(q0, 1) = q0
d(q0, 0) = q1
Letra actual: 1
Ejemplo: Reconocer 10101
Busquemos ahora un estado siguiente para la
combinacin de estado/letra actual
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q1
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
Letra actual: 1
Ejemplo: Reconocer 10101
Colocamos el nuevo estado como estado
actual y avanzamos una letra
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q1
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
Letra actual: 0
Ejemplo: Reconocer 10101
Nuevamente, buscamos un estado siguiente
para la actual combinacion estado/letra actual
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q1
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
Letra actual: 0
Ejemplo: Reconocer 10101
Colocamos el nuevo estado como actual y
avanzamos una letra
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
Letra actual: 1
Ejemplo: Reconocer 10101
Nuevamente, buscamos un estado siguiente
para la combinacin estado/letra actual.
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
d(q0, 1) = q0
Letra actual: 1
Ejemplo: Reconocer 10101
Colocamos el estado como actual y
avanzamos una letra
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
d(q0, 1) = q0
Letra actual: l
Ejemplo: Reconocer 10101
Pero la palabra ya acab (cond1).
Verifiquemos si el estado al que hemos llegado
es aceptacin (cond2) o rechazo
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
d(q1, 1) = q0
Letra actual: l
q0 F?
Ejemplo: Reconocer 10101
Pero la palabra ya acab (cond1).
Verifiquemos si el estado al que hemos llegado
es aceptacin (cond2) o rechazo
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
d(q1, 1) = q0
Letra actual: l
q0 F?
Ejemplo: Reconocer 10101
Pero la palabra ya acab (cond1).
Verifiquemos si el estado al que hemos llegado
es aceptacin (cond2) o rechazo
Proceso computacional para 10101
w = 10101
Formalizado:
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Funcin de transicin del AFD:
(definida por tabla)
d 0
q0 q1
q1 q0
1
q0
q1
Estado actual: q0
d(q0, 1) = q0
d(q0, 0) = q1
d(q1, 1) = q1
d(q1, 0) = q0
d(q1, 1) = q0
Letra actual: l
q0 F?
La palabra
10101 es
aceptada.
DIAGRAMAS INCOMPLETOS: ESTADO DE ABSORCIN
Con frecuencia nos encontramos AFDs como el siguiente
Si observamos con un poco de atencin vemos que la transicin (p,1) no
est representada, lo que contradice la definicin de AFD puesto que hemos
afirmado que es una aplicacin. Lo que ocurre en realidad es que la
mquina no ha sido completamente dibujada, por comodidad y claridad.
Debemos entender que todas
las transiciones que falten en el
diagrama de un AFD van a un
nico estado no final, que
llamamos
genricamente
estado de absorcin. As el
diagrama completo de es
El estado s es el estado de absorcin
y con frecuencia desaparece del
grfico del autmata, pero no
debemos olvidar que est ah
aunque no lo dibujemos.
ESTADOS INACCESIBLES
Ejemplo:
En el AFD de la figura, el estado r es
inaccesible por que no se puede alcanzar a
partir del estado inicial
AUTMATA CONEXO
Un AFD decimos que es conexo si no tiene estados
inaccesibles. Si un AFD no es conexo basta eliminar los
estados inaccesibles y todas sus transiciones (las de entrada y
las de salida) para obtener un nuevo AFD conexo equivalente
al de partida.
El AFD obtenido quitando el estado r y sus transiciones, es
conexo
Disear un autmata finito determinstico que acepte
nmeros impares en binario
binario
1
decimal
11
111
101
1001
1011
1101
5
9
11
13
q0
1
1
0
q1
Disear un autmata finito determinstico que acepte todas las palabras sobre
{0,1} que tengan un nmero impar de 1s.
q0
q1
Disear un autmata finito determinstico que acepte todas las palabras sobre
{0,1} que terminan con 01.
q0
q1
0
1
q2
Ejemplo: El siguiente AFD acepta el conjunto de cadenas que
contienen la subcadena bb y donde S={a,b}. Esto quiere decir
que L(M) = (a|b)*bb(a|b)* .
M: Q = {q0, q1, q2 }
S = {a, b}
F = {q2}
La funcin de transicin d es dada en forma tabular y llamada
tabla de transicin.
q0
q1
q2
q0
q1
q2
q2
q0
q2
Para las cadenas abba y abab tenemos las siguientes
operaciones (computaciones) en la tabla:
[q0, abba]
-[q0, bba]
-[q1, ba]
-[q2, a]
-[q2, l]
acepta
[q0, abab]
-[q0, bab]
-[q1, ab]
-[q0, b]
-[q1, l]
rechazado
La cadena abba es aceptada ya que la computacin se para (halts)
en estado q2.
Una cadena de entrada es aceptada si existe una computacin que
procesa toda la cadena de entrada y para en un estado final o
aceptador.
v) Existe un arco desde nodo qi a qj etiquetado a si d(qi,a)=qj.
vi) Por cada nodo qi y smbolo a es miembro de S, existe
exactamente un arco etiquetado a que sale de qi.
Ejemplo: El diagrama de estados para el AFD del ejemplo anterior:
a,b
a
q0
q1
a
q2
El siguiente diagrama acepta
cadenas de la forma (ab)*.
El mismo autmata con estados
etiquetados q0, q1, q2
Estado/Estrada
q0
q1
q2
q1
q2
q2
q2
q0
q2
b
q0
b
a,b
q2
q1
a
Ejemplo
Por ejemplo, el AFD del diagrama anterior se representa mediante M = (S, Q,
s, F, d) donde
b
Q = {q0, q1, q2}
q0
S = {a, b}
F = {q0}
y d se define por la tabla
s = q0
d
q0
q1
q2
q1
a,b
q1
q2
q2
q2
q2
q0
q2
Construir un AFD que acepte el ={0,1} donde las cadenas validas son aquellas
donde los 1s son mltiplos de 3.
0
1
q0
q1
q2
q3
Disear un AFD que acepte el = {0,1} donde las cadenas vlidas son aquellas que
terminan en xx.
y
q0
x
y
q1
q2
Disear un AFD que acepte el = {0,1} donde las cadenas vlidas son aquellas que
terminan en 0101.
q0
q1
q2
0
0
q3
q4
0
Disear un AFD que acepte el siguiente lenguaje regular
0*10*(10*10*)*
0
q0
0
q1
1
1
q3
Ejemplo
Sea el autmata finito A1, donde E={a,b} u {};
Q={q1,q2,q3,q4} y la funcin f viene dada por la
siguiente tabla y el conjunto de estados finales es
f={q3}
f
a
b
q1
q2
q4
q3
q4
q3
q2
q4
q2
q4
q3
q4
Determinar el lenguaje que reconoce, representar el
diagrama de Moore e indicar la expresin regular que
representa al lenguaje.
Solucin: Se construye el diagrama de Moore, colocando
en primer lugar todos los estados dentro del circulo,
marcando con doble circulo el estado final. El estado
inicial se indica con una flecha que lo seala con la
palabra INICIO encima.
Para construir las ramas, nos situamos en el primer
estado de la tabla de transiciones y se observa que:
f(q1,a) =q2
Entonces se traza la flecha q1 y q2, apuntando a q2 y se
coloca encima de la flecha el smbolo del vocabulario de
entrada a. De igual forma se recorre la tabla de
transiciones para cada estado y entrada completndose
el diagrama de moore.
Ejemplo
Sea ={a, b}, Q = {0, 1, 2}, q0 =0, F = {2}, y viene definida as:
Qi/
0
1
2
a
1
2
2
b
0
0
2
Se define el diagrama de transiciones de dicho autmata como
un grafo dirigido, en el que los estados se representan por
nodos, las transiciones por flechas, de tal manera que dicho
grafo satisface la definicin de la funcin de transicin
En este caso el autmata de la funcin sera:
(0, a) = 1, (0, b) = 0, (1, a) = 2,
(1, b)=0, (2, a) = 2, (2, b)=2
Ntese que para todos los smbolos del alfabeto, existe una
transicin de algn estado.
Sabiendo esto, el anterior autmata quedara representado as
Se define un estado de absorcin o muerte como
aquel estado q Q, y qF, que no tiene ninguna
transicin
hacia
ningn
otro
estado
(opcionalmente, a s mismo puede tenerlos),
nicamente hay transiciones que inciden en l. Es
decir:
si (q, a) = , , (q, a) = q, a .
Como vemos, el estado 3 no tiene ninguna transicin, nicamente
hay transiciones que inciden en l. Adems, 3F, luego 3 es un
estado de muerte.
Cuando tenemos estados de muerte, se toma el convenio de no
dibujarlos.
En este ltimo autmata,
Si w = aaab. El autmata acepta la cadena, puesto que para en 2,
que es estado de aceptacin.
Si w = bbba. El autmata rechaza la cadena, puesto que para en 3,
que no es un estado de aceptacin.
Ejemplo
Hacer el autmata que reconozca este lenguaje:
(a|b)aba*
En este diagrama de transiciones, se ve que se ha omitido
un estado de muerte, porque por ejemplo el estado 1 no
tiene transicin con el smbolo "b", y va a parar a dicho
estado de muerte. Igual pasa con el estado 2 y el smbolo
"a", y el estado 3 con el smbolo "b"
Ejemplo
Hacer el diagrama de transiciones con esta
definicin del autmata:
Q={0,1,2,3}
={a, b}
q 0 =0
F={0, 1, 2}
Como vemos, el estado 3 es un estado de muerte y poda haberse
omitido.
Este autmata, por ejemplo, acepta combinaciones de cadenas que no
tengan 3 "b seguidas.
Q={q 0 ,q 1 }
={0, 1} F={q 0 }
q 0 =q 0
Ejemplo
Suponiendo ={0, 1}, dibujar los diagramas
de transicin que reconozcan.
Cadenas terminadas en 00
Cadenas con dos "unos" consecutivos.
Cadenas que no contengan dos "unos"
consecutivos.
Cadenas con dos "ceros" consecutivos o dos "unos"
consecutivos.
Cadenas con dos "ceros" consecutivos y dos "unos"
consecutivos.
Cadenas acabadas en 00 o 11.
Cadenas con un "uno" en la antepenltima
posicin.
Cadenas de longitud 4.
Ejemplo
El estado 0, para el smbolo "a" tiene dos
transiciones, una al estado 1 y otra al estado
4, es decir, (0, a) = {1, 4}.
Q={0,1,2,3,4}
F={3,4}
={a, b}
q 0 =0
Disear un AFD para una mquina despachadora de dulces que acepta monedas de $1,
$2, y $10. El valor de los dulces es de $10. La mquina no esta diseada para dar
cambio.
10
10
10
10
q0
q1
2
q2
2
q3
2
q4
2
q5
2
10
q6
2
q7
10
q8
2
q9
2
10
10
q10
Disear un AFD que acepte el = {0,1} donde las cadenas vlidas son
donde los unos aparecen en forma par
0
q0
0
q1
1
1
0
q2
Determinar el lenguaje que aceptan los siguientes autmatas
1)
2)
q0
q0
q1
q1
q2
q2
q3
a
q1
q0
3)
b
q2
L= a*ab ( ba* ab )*
L= b|abb*
q3
q4
b
L= a(aa)*bb*a(aa*b)*
Disear un autmata finito determinstico que acepte la sucesin
5,10,20,40,80.. En binario
0
q0
q1
q2
binario
Decimal
1010
10
101
10100
101000
1010000
20
40
80
q3
Resumen