You are on page 1of 176

• La palabra autómata evoca algo que pretende imitar las
funciones propias de los seres vivos, especialmente
relacionadas con el movimiento, por ejemplo el típico robot
antropomorfo. En el campo de los Traductores,
Procesadores, Compiladores e Intérpretes, lo fundamental
no es la simulación del movimiento, sino la simulación de
procesos para tratar información.
• La información se codifica en cadenas de símbolos, y un
autómata es un dispositivo que manipula cadenas de
símbolos que se le presentan a su entrada, produciendo
otras tiras o cadenas de símbolos a su salida.
• El autómata recibe los símbolos de entrada, uno detrás de
otro, es decir secuencialmente. El símbolo de salida que en
un instante determinado produce un autómata, no sólo
depende del último símbolo 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 autómata.
• El estado de un autómata es toda la información necesaria en un
momento dado, para poder deducir, dado un símbolo de entrada en
ese momento, cual será el símbolo de salida. Es decir, conocer el
estado de un autómata, es lo mismo que conocer toda la historia de
símbolos de entrada, así como el estado inicial, estado en que se
encontraba el autómata al recibir el primero de los símbolos de
entrada.
• El autómata tendrá un determinado número de estados (pudiendo
ser infinitos), y se encontrará en uno u otro según sea la historia de
símbolos que le han llegado.
• Se define configuración de un autómata a su situación en un
instante. Se define movimiento de un autómata como el transito
entre dos configuraciones. Si un autómata se encuentra en un
estado determinado, recibe un símbolo también determinado,
producirá un símbolo de salida y efectuará un cambio o transición a
otro estado (también puede quedarse en el mismo estado).

• El campo de estudio de los Traductores. Formadas a partir de un alfabeto o vocabulario. Establecidas las reglas gramaticales. También se mostrará como existe un tipo de autómata para reconocer cada uno de los tipos de lenguajes generados por las correspondientes gramáticas.. una cadena de símbolos pertenecerá al correspondiente lenguaje si tal cadena se ha formado obedeciendo esas reglas. palabras.. funciona de tal forma que cuando reciba a su entrada una determinada cadena de símbolos indica si dicha cadena pertenece o no al lenguaje. que no es otra cosa que un conjunto finito de símbolos. . Entonces un autómata reconocedor de ese lenguaje. etc. Procesadores e Intérpretes son los lenguajes y las gramáticas que los generan. Los elementos del lenguaje son sentencias.

.

.

.

.

.

.

.

Analizador léxico .

.

.

.

.

.

.

.

.

AUTÓMATA FINITO .

resistencia de materiales. Así. pues si se descarga el líquido antes de haber introducido el tubo en la botella. o las imperfecciones en la soldadura. Sin embargo. y hasta dinámica de fluidos. el plano en que se le dibuja hace abstracción de algunos detalles presentes en la máquina real. luego descarga el líquido. . que ejecuta tareas repetitivas que requieren de mucha fuerza o velocidad o precisión. Su diseño requiere de conocimientos en mecánica. hay otro enfoque con que se puede modelar la máquina embotelladora: cómo funciona. que es útil para representar su forma física. en el sentido de saber qué secuencia de operaciones ejecuta.• Para comprender el significado de Autómata Finito. • El plano de diseño mecánico de una máquina es una abstracción de ésta. tales como el color con que se pinta. y finalmente sale el tubo para permitir la colocación de la cápsula (“corcholata”). la parte que introduce el líquido pasa por un ciclo repetitivo en que primero introduce un tubo en la botella. • Ejemplos de estas máquinas son las embotelladoras automáticas de refrescos. el resultado no será satisfactorio. El orden en que se efectúa este ciclo es crucial. Al diseñar tal máquina. que evoca algo hecho en metal. tendremos en cuenta el término máquina. usualmente ruidoso y grasoso.

ni tampoco si efectúa movimientos rectos o curvos. • En esta parte se estudian las máquinas abstractas más simples. las cuales están en relación con los lenguajes regulares. .• Las máquinas que se estudian son abstracciones matemáticas que capturan solamente el aspecto referente a las secuencias de eventos que ocurren. sin tomar en cuenta ni la forma de la máquina ni sus dimensiones. los autómatas finitos. como veremos a continuación. etc.

no tiene sentido incluir descripciones generales aplicables a todo autómata. debemos incluir las informaciones que varían de un autómata a otro. es decir.• Al describir una máquina de estados finitos en particular. Estas informaciones son exactamente las que aparecen en un diagrama de estados y transiciones. como se presenta más adelante. .

•El autómata finito acepta una cadena x si la secuencia de transiciones correspondientes a los símbolos de x conduce desde el estado inicial a un estado final. 3 . que dependen de los símbolos de la cadena de entrada.Autómata finito •Un autómata finito es un modelo matemático de una máquina 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.

.

el autómata lee un símbolo y según el estado en que se encuentre. esta se sitúa en la casilla de más a la izquierda. que va leyendo símbolos de una cadena escrita en una cinta. la rechaza. Inicialmente. que se puede considerar ilimitada por la derecha. Si no está en un estado final.• Desde el punto de vista intuitivo. cambia de estado y pasa a leer el siguiente símbolo. . podemos ver un autómata finito como una caja negra de control. Existe una cabeza de lectura que en cada momento está situada en una casilla de la cinta. Si en ese momento la máquina está en un estado final. se dice que el autómata acepta la cadena. • En cada paso. El autómata en cada momento está en uno de los estado de Q. Así sucesivamente hasta que termine de leer todos los símbolos de la cadena. Inicialmente se encuentra en q0.

.

Se controla que no haya más de dos convocatorias por año y se termina cuando se aprueba el curso. Habrá un alfabeto de entrada contendrá los siguientes elementos: • P: El alumno se presenta al examen. . • S: El alumno aplaza un examen.• Ejemplo de autómata finito: Se va a diseñar un autómata que reconozca el paso de un alumno por un curso. • Representar las distintas decisiones que se realizan y si se aprueba o aplaza el curso. • N: El alumno no se presenta al examen. • A: El alumno aprueba el examen. por ejemplo. Autómatas y lenguajes formales.

ya que no controla el número total de convocatorias. . Si suspende o aplaza y ya se había presentado en febrero. los estados son distintos en ambos casos. Se pasa de unos a otros leyendo símbolos del alfabeto de entrada. empieza de nuevo. pero como hay que controlar que un estudiante no se presente a tres convocatorias en un año. • Este esquema corresponde a un autómata finito. A continuación decide si presenta en Febrero o no. Si aprueba. Un autómata para todos los cursos se puede construir uniendo autómatas para cada una de los cursos. Inicio. puede decidir si presenta en diciembre. termina y si suspende. comienza de nuevo. Si no presenta y aprueba. Este autómata representa una versión simplificada del problema real. Se caracteriza por una estructura de control que depende de un conjunto finito de estados. termina. En otro caso. termina.• Comienza en un estado. pero teniendo en cuenta relaciones como requisitos entre los mismos. Si en septiembre aprueba. se decide si se presenta en septiembre. Si no presenta o aplaza.

.

Ejemplo • La maquina de refresco: – Características: • El refresco vale S/1.50. S/0.25 • La maquina no da vuelto .00 • Solo Acepta monedas de S/1. S/0.00.

– Si la puerta está cerrada. entonces puede estar o no en funcionamiento (según se prenda o apague). – También asumamos lo siguiente: en cualquier momento es posible establecer el modo de cocción. .Ejemplo: • Supongamos que se quiere modelar el siguiente comportamiento de un horno microondas: – El horno microondas posee una puerta. – Estando prendido no es posible abrir la puerta del horno sin antes apagarlo.

• 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 máquina del ejemplo anterior se representa con una tabla • O bien se representa con un diagrama .

que es de donde parte el análisis de toda cadena. . Existe un estado. Las aristas se denominan transiciones y se etiquetan con los símbolos del alfabeto. Los estados de aceptación se representan encerrados en un círculo.Autómata finito determinista Podemos usar un diagrama de transición para ayudar a determinar si una cadena pertenece o no a un lenguaje. La cadena es legal si se termina su análisis en un estado de aceptación. llamado estado inicial. Los nodos del diagrama se denominan estados y se utilizan para señalar hasta donde se ha analizado la cadena. Algunos estados se marcan como estados de aceptación para determinar si una cadena es legal o no.

Otra definición es la siguiente: El diagrama de estado de un AFD M = (Q. representado con > iv) F es el conjunto de nodos aceptadores. q0. ii) Las etiquetas sobre los arcos de G son elementos de S. S. F) es un grafo etiquetado G definido por las sig. cada nodo acaptador se representa con . iii) q0 es el nodo inicial. condiciones: i) Los nodos de G son los elementos de Q.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 máquina y los arcos son obtenidos de la función de transición. d.

. Se dibujan nodos para cada estado del autómata. se procede como sigue.Construcción de diagramas de transición Para construir un diagrama de transiciones a partir de una descripción de un autómata. se marca el estado inicial y los estados de aceptación. luego se trazan flechas desde cada estado qi hacia el qj etiquetándolas con el símbolo de entrada correspondiente.

{q0. a)= q2 δ(q2. a)= q2 δ(q1. q2}. q1. q1}) δ(q0. a)= q0 δ(q0. b}.Autómata determinístico A = ({q0. δ. q0. b)= q1 δ(q2. b)= q1 δ(q1. {a. b)= q2 .

.

.

Ejemplo .

entonces se traza una flecha entre q1 y q2. De igual forma se recorre la tabla de transiciones para cada estado y entrada completándose el diagrama de Moore. . y se coloca encima de la flecha el símbolo del vocabulario de entrada a. nos situamos en el primer estado de la tabla de transiciones y se observa que f(q1. Para construir las ramas. marcando con doble círculo el estado final.a)=q2. apuntando a q2.• Solución: • Se construye el diagrama de estados. El estado inicial se indica con una flecha que lo señala con la palabra INICIO encima. colocando en primer lugar todos los estados dentro de círculos.

Edgardo Adrián Franco Martínez Lenguaje reconocido por un autómata finito .Teoría computacional Clase 08: Autómatas finitos Prof.

dígitos y guiones bajos. letra_ dígito id → → → [A-Za.Los identificadores de C son cadenas de letras.z_] [0-9] letra_ ( letra_ | dígito)* Teoría computacional Clase 08: Autómatas finitos Prof. Edgardo Adrián Franco Martínez Ejemplo .

después de leer una letra. El diagrama de Moore es el que se muestra en la figura. de tal forma que a partir del estado inicial. . pues se da un lenguaje y se pide el autómata que lo reconoce. En primer lugar se construye un diagrama de Moore. acepte letras o dígitos de forma variable. y cuando encuentre un carácter diferente de letra o dígito alcance el estado final.• Solución : Este ejemplo es inverso al anterior.

• El autómata finito se deduce del diagrama de estados y es el siguiente: • donde f se define por : Teoría computacional Clase 08: Autómatas finitos Prof. Edgardo Adrián Franco Martínez • $ representa a el fin de la cadena .

Ejemplo: • Considérese el determinístico – – – – – siguiente autómata M = (Q.δ.q1} Σ = {a.q0. donde Q = {qo.F). b} qo = estado inicial F = { qo } y δ es la función tabulada a continuación: finito .Σ.

• Entonces su diagrama de transición (diagrama de estados) correspondiente es: • Claramente se puede llegar a la conclusión de L(M) es el conjunto de todas las cadenas que tienen un número par de b’s • Si el autómata M recibe como entrada la cadena aabba.aabba) . su configuración inicial sería (q0.

• Entonces: • Por lo tanto aabba es aceptada por el autómata M .

AUTÓMATAS FINITOS Y EXPRESIONES REGULARES .

.Ejemplo: • Considérense las siguientes reglas de producción para una gramática que genera las mismas cadenas que la expresión regular anterior.

abbbc. • Claramente. abc. . • “B” genera una “b” seguida de una “B” ó genera la cadena vacía (ningún carácter).. • “S” genera una “A”.• “S” es el símbolo inicial. abbc.. – Las letras mayúsculas representan la parte de la cadena final que aún no ha sido sustituida por su correspondiente lado derecho. abbbbc... seguida de una “B” y finalmente una “C”.. • “A” genera solamente una “a”.} . • “C” genera una “c”. la gramática anterior genera las cadenas {ac.

1) ab*baa* q0 2) xyz(zy)* q0 Expresiones regulares b a x q1 q1 b y q2 q2 3) 01(10)* q0 0 q1 1 q2 a z 1 0 a ♦ q3 z q3 q2 ♦ y q3 ♦ .

AFD ♦ a q0 ♦ q1 q2 q0 q1 q2 − q1 a − − b q2 q2 AFND a q0 b b estados b a q1 b q2 Es un autómata finito no determinístico ya que posee más de un estado en una celda. estados a q0 q0 q1 q2 − q1 − − q2 q2 b .

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). .• • • Proceso computacional Es el proceso que se lleva a cabo cuando a un autómata se le entrega una palabra. Sirve para llegar a un estado de aceptación o de rechazo. Cond2) El estado que queda al finalizar debe ser estado de aceptación.

q1}.Ejemplo: Reconocer 10101 Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. d. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 . {q0.1}. q0.

Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. {q0.1}. q1}.Ejemplo: Reconocer 10101 Revisamos la definición del AF. d. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 . q0. buscando el estado inicial.

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}}

Función de transición 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}}

Función de transición 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}}

Función de transición del AFD:
(definida por tabla)

d 0
q0 q1
q1 q0

1
q0
q1

Estado actual: q0

d(q0, 1) = q0

Letra actual: 1

Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0. q1}. d. 1) = q0 Letra actual: 1 .Ejemplo: Reconocer 10101 Ponemos el nuevo estado encontrado como estado actual.1}. q0. {q0.

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}}

Función de transición 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}}

Función de transición 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}}

Función de transición 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

q1}. 0) = q1 d(q1. 1) = q0 d(q0. d. {q0. 1) = q1 Letra actual: 1 . {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q1 d(q0.Ejemplo: Reconocer 10101 Busquemos ahora un estado siguiente para la combinación de estado/letra actual Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. q0.1}.

0) = q1 d(q1.1}. d. q1}.Ejemplo: Reconocer 10101 Colocamos el nuevo estado como estado actual y avanzamos una letra Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. 1) = q1 Letra actual: 0 . 1) = q0 d(q0. q0. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q1 d(q0. {q0.

1) = q1 d(q1. {q0. 1) = q0 d(q0. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q1 d(q0. q0. 0) = q1 d(q1. q1}. buscamos un estado siguiente para la actual combinacion estado/letra actual Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. d.Ejemplo: Reconocer 10101 Nuevamente. 0) = q0 Letra actual: 0 .1}.

q1}.Ejemplo: Reconocer 10101 Colocamos el nuevo estado como actual y avanzamos una letra Proceso computacional para 10101 w = 10101 Formalizado: L = {{0.1}. q0. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0. 0) = q1 d(q1. 1) = q1 d(q1. d. 0) = q0 Letra actual: 1 . 1) = q0 d(q0. {q0.

buscamos un estado siguiente para la combinación estado/letra actual. 1) = q1 d(q1. 1) = q0 Letra actual: 1 .Ejemplo: Reconocer 10101 Nuevamente.1}. 0) = q0 d(q0. {q0. q0. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0. q1}. Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. 0) = q1 d(q1. 1) = q0 d(q0. d.

1) = q1 d(q1. d. 1) = q0 Letra actual: l . {q0. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0. 0) = q1 d(q1. 0) = q0 d(q0. q1}. 1) = q0 d(q0. q0.1}.Ejemplo: Reconocer 10101 Colocamos el estado como actual y avanzamos una letra Proceso computacional para 10101 w = 10101 Formalizado: L = {{0.

1) = q0 d(q0. 1) = q0 Letra actual: l ¿q0  F? . 0) = q1 d(q1. q0. q1}. Verifiquemos si el estado al que hemos llegado es aceptación (cond2) o rechazo Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. 1) = q1 d(q1.Ejemplo: Reconocer 10101 Pero la palabra ya acabó (cond1). 0) = q0 d(q1. {q0. d. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0.1}.

q1}. 0) = q1 d(q1.1}. Verifiquemos si el estado al que hemos llegado es aceptación (cond2) o rechazo Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. 0) = q0 d(q1. 1) = q1 d(q1. {q0.Ejemplo: Reconocer 10101 Pero la palabra ya acabó (cond1). 1) = q0 Letra actual: l ¿q0  F? . {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0. q0. 1) = q0 d(q0. d.

{q0.1}. 0) = q1 d(q1.Ejemplo: Reconocer 10101 Pero la palabra ya acabó (cond1). 1) = q0 Letra actual: l ¿q0  F? La palabra 10101 es aceptada. 1) = q0 d(q0. 0) = q0 d(q1. {q0}} Función de transición del AFD: (definida por tabla) d 0 q0 q1 q1 q0 1 q0 q1 Estado actual: q0 d(q0. d. . 1) = q1 d(q1. Verifiquemos si el estado al que hemos llegado es aceptación (cond2) o rechazo Proceso computacional para 10101 w = 10101 Formalizado: L = {{0. q1}. q0.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

DIAGRAMAS INCOMPLETOS: ESTADO DE ABSORCIÓN

• Con frecuencia nos encontramos AFDs como el siguiente

• Si observamos con un poco de atención vemos que la transición δ(p,1) no
está representada, lo que contradice la definición de AFD puesto que hemos
afirmado que δ es una aplicación. Lo que ocurre en realidad es que la
máquina 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
genéricamente
estado de absorción. Así el
diagrama completo de es

El estado s es el estado de absorción
y con frecuencia desaparece del
gráfico del autómata, 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

es conexo . • El AFD obtenido quitando el estado r y sus transiciones. 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.AUTÓMATA CONEXO • Un AFD decimos que es conexo si no tiene estados inaccesibles.

.

.

.

.

.

.

.

.

.

.

.

.

Diseñar un autómata finito determinístico que acepte números impares en binario ♦ 0 binario 1 decimal 1 11 3 111 7 101 1001 1011 1101 5 9 11 13 q0 1 1 0 q1 .

1} que terminan con 01. ♦ 1 q0 0 0 q1 1 0 1 q2 .1} que tengan un número impar de 1´s. ♦ 1 q0 0 q1 0 1 Diseñar un autómata finito determinístico que acepte todas las palabras sobre {0.Diseñar un autómata finito determinístico que acepte todas las palabras sobre {0.

Esto quiere decir que L(M) = (a|b)*bb(a|b)* .b}. d q0 q1 q2 a b q0 q1 q2 q2 q0 q2 . M: Q = {q0.Ejemplo: El siguiente AFD acepta el conjunto de cadenas que contienen la subcadena bb y donde S={a. b} F = {q2} La función de transición d es dada en forma tabular y llamada tabla de transición. q1. q2 } S = {a.

ba] -[q2. a] -[q2. b] -[q1. ab] -[q0. abab] -[q0. l] rechazado La cadena abba es aceptada ya que la computación se para (halts) en estado q2. l] acepta [q0.Para las cadenas abba y abab tenemos las siguientes operaciones (computaciones) en la tabla: [q0. bba] -[q1. Una cadena de entrada es aceptada si existe una computación que procesa toda la cadena de entrada y para en un estado final o aceptador. bab] -[q1. . abba] -[q0.

a)=qj. Ejemplo: El diagrama de estados para el AFD del ejemplo anterior: a.b a q0 b q1 a b q2 . vi) Por cada nodo qi y símbolo a es miembro de S.v) Existe un arco desde nodo qi a qj etiquetado a si d(qi. existe exactamente un arco etiquetado a que sale de qi.

q2 Estado/Estrada q0 q1 q2 a q1 q2 q2 b q2 q0 q2 b q0 a b a. q1. El mismo autómata con estados etiquetados q0.b q2 q1 a .El siguiente diagrama acepta cadenas de la forma (ab)*.

Ejemplo Por ejemplo. b} F = {q0} y d se define por la tabla a b s = q0 d q0 q1 q2 q1 a. Q. q1. q2} q0 S = {a. F. d) donde b Q = {q0. el AFD del diagrama anterior se representa mediante M = (S. s.b a q1 q2 q2 a q2 b q2 q0 q2 .

1} donde las cadenas validas son aquellas donde los 1´s son múltiplos de 3.Construir un AFD que acepte el ∑={0. y q0 x y q1 y x x q2 . ♦ 0 0 1 q0 q1 1 0 q2 0 1 q3 1 Diseñar un AFD que acepte el ∑= {0.1} donde las cadenas válidas son aquellas que terminan en xx.

♦ 1 q0 0 q1 0 1 q2 0 0 0 q3 1 q4 0 .Diseñar un AFD que acepte el ∑= {0.1} donde las cadenas válidas son aquellas que terminan en 0101.

Diseñar un AFD que acepte el siguiente lenguaje regular 0*10*(10*10*)*♦ 0 q0 1 0 q1 1 1 q3 0 .

Q={q1. .b} u {λ}.q4} y la función 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.q3. donde E={a. representar el diagrama de Moore e indicar la expresión regular que representa al lenguaje.q2.Ejemplo Sea el autómata finito A1.

Para construir las ramas. colocando en primer lugar todos los estados dentro del circulo.Solución: Se construye el diagrama de Moore. De igual forma se recorre la tabla de transiciones para cada estado y entrada completándose el diagrama de moore. . apuntando a q2 y se coloca encima de la flecha el símbolo del vocabulario de entrada a. 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. marcando con doble circulo el estado final. El estado inicial se indica con una flecha que lo señala con la palabra INICIO encima.

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 autómata 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 definición de la función de transición δ

En este caso el autómata de la función sería:
δ(0, a) = 1, δ (0, b) = 0, δ (1, a) = 2,
δ (1, b)=0, δ (2, a) = 2, δ (2, b)=2
Nótese que para todos los símbolos del alfabeto, existe una
transición de algún estado.
Sabiendo esto, el anterior autómata quedaría representado así

.

a) = q. únicamente hay transiciones que inciden en él. . y qF. a) = ø. ó. δ (q. a sí mismo puede tenerlos).  a Є ∑ .Se define un estado de absorción o muerte como aquel estado q Є Q. Es decir: si δ (q. que no tiene ninguna transición hacia ningún otro estado (opcionalmente.

puesto que para en 2. •Si w = bbba. se toma el convenio de no dibujarlos. Además. . que no es un estado de aceptación. El autómata acepta la cadena. que es estado de aceptación. Cuando tenemos estados de muerte.Como vemos. el estado 3 no tiene ninguna transición. Si w = aaab. El autómata rechaza la cadena. únicamente hay transiciones que inciden en él. En este último autómata. luego 3 es un estado de muerte. 3F. puesto que para en 3.

y el estado 3 con el símbolo "b" . y va a parar a dicho estado de muerte.Ejemplo Hacer el autómata que reconozca este lenguaje: (a|b)aba* En este diagrama de transiciones. porque por ejemplo el estado 1 no tiene transición con el símbolo "b". se ve que se ha omitido un estado de muerte. Igual pasa con el estado 2 y el símbolo "a".

3} ∑ ={a.1. b} q 0 =0 F={0. 1. 2} .2.Ejemplo Hacer el diagrama de transiciones con esta definición del autómata: Q={0.

Este autómata.Como vemos. acepta combinaciones de cadenas que no tengan 3 "b“ seguidas. por ejemplo. . el estado 3 es un estado de muerte y podía haberse omitido.

1} F={q 0 } q 0 =q 0 .Q={q 0 .q 1 } ∑ ={0.

Cadenas terminadas en 00 Cadenas con dos "unos" consecutivos. .Ejemplo Suponiendo ∑ ={0. dibujar los diagramas de transición que reconozcan. 1}.

Cadenas que no contengan dos "unos" consecutivos. Cadenas con dos "ceros" consecutivos o dos "unos" consecutivos. .

Cadenas acabadas en 00 o 11. .Cadenas con dos "ceros" consecutivos y dos "unos" consecutivos.

Cadenas de longitud 4. .Cadenas con un "uno" en la antepenúltima posición.

Ejemplo .

2. δ (0. a) = {1. 4}.El estado 0. una al estado 1 y otra al estado 4. Q={0. es decir.1.3.4} F={3. para el símbolo "a" tiene dos transiciones.4} ∑ ={a. b} q 0 =0 .

10 10 10 10 q0 1 q1 2 1 q2 2 1 q3 2 1 q4 2 1 q5 2 10 1 q6 2 1 q7 10 2 1 q8 2 1 q9 2 10 10 1 q10 .Diseñar un AFD para una máquina despachadora de dulces que acepta monedas de $1. El valor de los dulces es de $10. y $10. La máquina no esta diseñada para dar cambio. $2.

1} donde las cadenas válidas son donde los unos aparecen en forma par 0 q0 1 0 q1 1 1 0 q2 ♦ .Diseñar un AFD que acepte el ∑= {0.

Determinar el lenguaje que aceptan los siguientes autómatas 1) 2) q0 a q0 b b q1 q1 b q2 q2 q3 a ♦ b q1 a q0 b 3) a b q2 b L= a*ab ( ba* ab )* ♦ L= b|abb* ♦ a a q3 q4 b a L= a(aa)*bb*a(aa*b)* .

20.10.Diseñar un autómata finito determinístico que acepte la sucesión 5. En binario ♦ 0 q0 1 q1 0 q2 binario Decimal 1010 10 101 10100 101000 1010000 5 20 40 80 1 q3 ..40.80….

Resumen .