Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Autómatas Finitos
Luis M. Estrada
luism@unam.mx
5 de marzo de 2019
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Agenda
Autómatas
En nuestro caso los autómatas serán modelos
abstractos para procesar (reconocer) cadenas de un
lenguaje.
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
3/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Componentes
• Una cinta infinita dividida en casillas en la cual se escribe
una cadena (un sı́mbolo por casilla).
• Una cabeza para leer o escribir la cinta.
• Una unidad de control que tiene un numero finito de
configuraciones internas llamadas estados.
Funcionamiento de un autómata
Funcionamiento de un autómata
1 Lee el sı́mbolo escrito en la cinta donde
actualmente se encuentra la cabeza de lectura y
escritura.
2 Dependiendo del estado actual de la unidad de
control y del sı́mbolo leı́do, la unidad de control
cambia su configuración interna y mueve la
cabeza de lectura y escritura ya sea a la derecha
o a la izquierda según sea el caso
3 Repite el procedimiento desde el paso 1 hasta
que se alcanza un criterio de paro.
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
6/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Tipos de Autómatas
Los autómatas que estudiaremos en este curso son
(en orden de complejidad y poder de cómputo
creciente):
• Autómatas Finitos
• Autómatas de Pila
• Autómatas Linealmente Acotados
• Máquinas de Turing
Autómatas Finitos
Comenzaremos estudiando los autómatas más sencillos, es
decir los Autómatas Finitos
Aplicaciones
Nota
Se llaman deterministas porque dado un estado y un sı́mbolo
de entrada existe una sola transición posible que puede realizar
el autómata
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
10/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Diagrama de transiciones
Es común representar un autómata finito por medio
de un grafo dirigido y etiquetado. Un
grafo dirigido es un conjunto de nodos unidos por
aristas dirigidas (flechas) que tienen una etiqueta.
Diagrama de transiciones
• Los nodos son estados del autómata
q
• Un estado q cualquiera se representa como:
q0
• Un estado inicial q0 se representa como:
q
• Un estado final q se reprsenta como:
• Una transición δ(q, σ) = p se representa como:
q σ p
σ
q
Si q = p lo transición se representa como:
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
12/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Ejemplo 2
Autómata que acepta el lenguaje {λ}
q0
Ejemplo 3
Autómata que acepta el lenguaje {a}
q0 a qf
cadena de prueba: a
Ejemplo 3
Autómata que acepta el lenguaje {a}
q0 a qf
cadena de prueba: a
Ejemplo 3
Autómata que acepta el lenguaje {a}
q0 a qf
Ejemplo 4
Autómata que acepta el lenguaje {a}∗
a
q0
Ejemplo 4
Autómata que acepta el lenguaje {a}∗
a
q0
Ejemplo 4
Autómata que acepta el lenguaje {a}∗
a
q0
Ejemplo 4
Autómata que acepta el lenguaje {a}∗
a
q0
Ejemplo 4
Autómata que acepta el lenguaje {a}∗
a
q0
Ejemplo 5
Autómata que acepta el lenguaje {a, b}
a
q0 qf
b
cadena de prueba: a
Ejemplo 5
Autómata que acepta el lenguaje {a, b}
a, b
q0 qf
cadena de prueba: a
Ejemplo 5
Autómata que acepta el lenguaje {a, b}
a, b
q0 qf
cadena de prueba: a
Ejemplo 5
Autómata que acepta el lenguaje {a, b}
a, b
q0 qf
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0 qf
a, b
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0 qf
a, b
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0 qf
a, b
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0 qf
a, b
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0 qf
a, b
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0 qf
a, b
Ejemplo 6
Autómata que acepta el lenguaje {a, b}∗
a, b
q0
Ejemplo 7
Autómata que acepta el lenguaje {ab}.
q0 a q1 b qf
cadena de prueba: ab
Ejemplo 7
Autómata que acepta el lenguaje {ab}.
q0 a q1 b qf
cadena de prueba: ab
Ejemplo 7
Autómata que acepta el lenguaje {ab}.
q0 a q1 b qf
cadena de prueba: ab
Ejemplo 7
Autómata que acepta el lenguaje {ab}.
q0 a q1 b qf
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
Ejemplo 8
Autómata que acepta el lenguaje {ab}∗ .
a
q0 a q b qf
1
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 a q1 b q2
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
q0 b q1 a q2 c q3
Formalmente:
Sea A = (Q, Σ, δ, q0 , F ) el autómata anterior con:
• Q = {q0 , q1 , q2 , q3 }
• Σ = {a, b, c}
• δ se define como:
δ(q0 , b) = q1 , δ(q1 , a) = q2 , δ(q2 , b) = q2 , δ(q2 , c) = q3
• q0 es el estado inicial
• F = {q3 }
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
58/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
q0 b q1 a q2 c q3
a b c
q0 - q1 -
q1 q2 - -
q2 - q2 q3
q3 - - -
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
59/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Función δ ∗
Para definir formalmente el lenguaje aceptado por un AFD,
definimos la función δ ∗ como la función que recibe una estado
p y una cadena, y devuelve el estado en el que se detiene el
autómata después de aplicar la función de transición δ
iterativamente para cada sı́mbolo de la cadena de entrada.
Sean q ∈ Q, σ ∈ Σ y w ∈ Σ∗ , entonces:
δ ∗ (q, λ) = q
δ ∗ (q, σw ) = δ ∗ (δ(q, σ), w )
q0 b q1 a q2 c q3
δ ∗ (q0 , babc)
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
q0 b q1 a q2 c q3
Aceptación y rechazo
L(A) = {w ∈ Σ∗ | δ ∗ (q0 , w ) ∈ F }
Ejercicios en clase
Solución:
1 0, 1
q0 0 q1
Ejercicios en clase
Solución:
0 1
0
q0 q1
1
Ejercicios en clase
Solución:
0 0 0 1, 0
q0 1 q1 1 q2 1 q3
Ejercicios en clase
Solución:
b b
a
q0 q1
a
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
76/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Lenguajes regulares
Sea lenguaje L ⊆ Σ∗ .
Lenguajes regulares
Sea lenguaje L ⊆ Σ∗ .
Métodos de diseño
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
P I
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
83/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
P I
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
84/100
1
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
0 0
P I
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
85/100
1
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
0 0
1
P I
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
86/100
1
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es impar
Propuesta de estados:
P I
1
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
87/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es múltiplo de 3
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es múltiplo de 3
Propuesta de estados:
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es múltiplo de 3
Propuesta de estados:
Métodos de diseño
Ejemplo
Diseñar un AFD que acepte el lenguaje de cadenas con el
alfabeto {0, 1} tales que el número de unos es múltiplo de 3
Propuesta de estados:
1 1 1
0 1 2 3
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
91/100 1
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Disenar un AFD que acepte exactamente el lenguaje en el
alfabeto{0, 1} en que las cadenas no comienzan con 00.
Métodos de diseño
Ejemplo
Disenar un AFD que acepte exactamente el lenguaje en el
alfabeto{0, 1} en que las cadenas no comienzan con 00.
Propuesta de estados:
Métodos de diseño
Ejemplo
Disenar un AFD que acepte exactamente el lenguaje en el
alfabeto{0, 1} en que las cadenas no comienzan con 00.
Propuesta de estados:
Métodos de diseño
Ejemplo
Disenar un AFD que acepte exactamente el lenguaje en el
alfabeto{0, 1} en que las cadenas no comienzan con 00.
Propuesta de estados:
q0 0 q1 0 q2 q3
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
95/100
1
1
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Diseño por conjunto de estados
Métodos de diseño
Ejemplo
Disenar un AFD que acepte el lenguaje de cadenas que contienen
la subcadena 00 pero no la 11, usando el alfabeto binario .
00 pero no 11
Ni 11 ni 00
11
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
97/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Disenar un AFD que acepte el lenguaje de cadenas que contienen
la subcadena 00 pero no la 11, usando el alfabeto binario .
00 pero no 11
q2
0 1
0
q0 1 11
q1
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
98/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Disenar un AFD que acepte el lenguaje de cadenas que contienen
la subcadena 00 pero no la 11, usando el alfabeto binario .
0
1
q3 q4
0 0
q2
0 1
0
q0 1 11
q1
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
99/100
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Métodos de diseño
Ejemplo
Disenar un AFD que acepte el lenguaje de cadenas que contienen
la subcadena 00 pero no la 11, usando el alfabeto binario .
0
1
q3 q4
0 0
q2 1 0, 1
0 1
0
q0 1 1 q5
q1
Luis M. Estradaluism@unam.mx—Short title@—5 de marzo de 2019@
100/100