SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
M. en C. Yeredith Giovanna Mora Martínez
Teoría de Autómatas
Introducción a la Teoría de Autómatas
• La teoría de autómatas es el estudio de dispositivos de cálculo
abstractos, es decir, de las “máquinas”.
• Antes de que existieran las computadoras, en la década de los años
treinta, A. Turing estudió una máquina abstracta que tenía todas las
capacidades de las computadoras de hoy día, al menos en lo que
respecta a lo que podían calcular.
• El objetivo de Turing era describir de forma precisa los límites entre lo
que una máquina de cálculo podía y no podía hacer.
• En las décadas de los años cuarenta y cincuenta, una serie de
investigadores estudiaron las máquinas más simples, las cuales todavía
hoy denominamos “autómatas finitos”.
• A finales de la década de los cincuenta, el lingüista N. Chomsky
inició el estudio de las “gramáticas” formales.
• Aunque no son máquinas estrictamente, estas gramáticas están
estrechamente relacionadas con los automátas abstractos y sirven
actualmente como base de algunos importantes componentes de
software, entre los que se incluyen componentes de los
compiladores.
Introducción a la Teoría de Autómatas
• Cook en 1969, fue capaz de separar aquellos problemas que se
podían resolver de forma eficiente mediante computadora de
aquellos problemas que, en principio, pueden resolverse, pero que
en la práctica consumen tanto tiempo que las computadoras
resultan inútiles para todo excepto para casos muy simples del
problema. Este último tipo de problemas se denominan “insolubles”
o “NP-difíciles ”.
Introducción a la Teoría de Autómatas
• Los autómatas finitos constituyen un modelo útil para muchos tipos
de hardware y software. Algunos de los tipos más importantes son:
⚬ Software para diseñar y probar el comportamiento de circuitos
digitales.
⚬ El “analizador léxico” de un compilador típico, es decir, el
componente del compilador que separa el texto de entrada en
unidades lógicas, tal como identificadores, palabras clave y
signos de puntuación.
⚬ Software para explorar cuerpos de texto largos, como
colecciones de páginas web, o para determinar el número de
apariciones de palabras, frases u otros patrones.
Introducción a la Teoría de Autómatas
• Existen muchos sistemas o componentes, que pueden encontrarse
siempre en uno de una serie de “estados” finitos.
⚬ El propósito de un estado es el de recordar la parte relevante del
historial del sistema.
⚬ Puesto que sólo existe un número finito de estados,
generalmente, no es posible recordar el historial completo, por
lo que el sistema debe diseñarse cuidadosamente, con el fin de
recordar lo que es importante y olvidar lo que no lo es.
⚬ La ventaja de disponer de sólo un número finito de estados es
que podemos implementar el sistema mediante un conjunto fijo
de recursos.
Teoría de Autómatas
off on
• Ejemplo de autómata finito:
Realizar el autómata finito de un interruptor de apagado/encendido
(posiciones on/off).
El dispositivo recuerda si está en el estado encendido (“on”) o en el
estado apagado (“off”), y permite al usuario pulsar un botón cuyo efecto
es diferente dependiendo del estado del interruptor.
Pulsar
Pulsar
• El autómata finito procesa una cadena de entrada símbolo por
símbolo, cambiando de estado según las reglas definidas por la
función de transición. Al final de la cadena, el autómata puede estar
en un estado de aceptación si cumple con ciertas condiciones.
Tipos de Autómatas Finitos:
1. Autómata Finito Determinista (AFD): En cada paso, hay una única
transición posible para cada símbolo de entrada desde cada estado.
2. Autómata Finito No Determinista (AFND): Puede tener múltiples
transiciones posibles desde un estado para un mismo símbolo de
entrada.
Proceso de Transición
• Los Autómatas Finitos son máquinas teóricas que van cambiando de
estado dependiendo de la entrada que reciban.
• La salida de estos autómatas está limitada a dos valores: aceptado y no
aceptado, que pueden indicar si la cadena que se ha recibido como
entrada es o no válida.
• Generalmente utilizamos los autómatas finitos para reconocer
lenguajes regulares, es decir, una palabra se considerará válida sólo si
pertenece a un determinado lenguaje.
Autómata Finito Determinista
• Un autómata finito determinista (AFD) se representa como una 5-
tupla: A = (Q, ∑, δ, 𝑞0, F)
1. Q: Un conjunto finito de estados.
2. ∑: Un conjunto finito de símbolos de entrada (alfabeto).
3. 𝑞0: El estado inicial de comienzo.
4. F: Cero o más estados finales de aceptación.
5. δ: Función de transición. Esta función:
▪ Toma un estado y un símbolo de entrada como argumentos.
▪ Regresa un estado.
▪ Una “regla” de δ se escribe como δ(q,a)=p, donde q y p son estados y a es un
símbolo de entrada.
Definición Formal de un Autómata
• Existen dos formas de representar un AFD, mediante tablas de
transición o mediante diagramas de transición.
• Por ejemplo:
▪ Sea el siguiente AFD: σ = 𝑎, 𝑏 , 𝒬 = 𝑝, 𝑞, 𝑟 , 𝑞0 = 𝑝, 𝐹 = 𝑞
donde δ se define de la siguiente forma:
δ 𝑝, 𝑎 = 𝑞 δ 𝑝, 𝑏 = 𝑟
δ 𝑞, 𝑎 = 𝑞 δ 𝑞, 𝑏 = 𝑟
δ 𝑟, 𝑎 = 𝑟 δ 𝑟, 𝑏 = 𝑟
Representación de Autómatas
Representación de
Autómatas
• Diagrama de transición. Los
estados finales de
aceptación se identifican
por estar encerrados en un
doble circulo. En este
ejemplo, el autómata solo
considera como cadenas
aceptadas aquellas que
están formadas por a’s.
Cualquier cadena que
contenga una b hará que el
autómata acabe en el
estado r.
• Tabla de transición. El AFD se representaría mediante la siguiente
tabla que representa los valores de la función de transición.
▪ La flecha indica que 𝑝 es el estado inicial, y el asterisco indica que 𝑞
es un estado final de aceptación.
Representación de Autómatas
𝑎 𝑏
𝑝 𝑞 𝑟
* 𝑞 𝑞 𝑟
r 𝑟 𝑟
• Ejemplo 2:
▪ Sea el siguiente AFD: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2
donde 𝑓 se define de la siguiente forma:
δ 𝑞0, 1 = 𝑞0 δ 𝑞1, 1 = 𝑞2
δ 𝑞0, 0 = 𝑞1 δ 𝑞2, 0 = 𝑞2
δ 𝑞1, 0 = 𝑞1 δ 𝑞2, 1 = 𝑞2
𝑞0 𝑞1 𝑞2
Inicio
1
1
0, 1
0
0
0 1
𝑞0 𝑞1 𝑞0
𝑞1 𝑞1 𝑞2
* 𝑞2 𝑞2 𝑞2
• Ejercicio 1: Del siguiente diagrama de transiciones, defina cada
elemento de A = (Q, ∑, δ, 𝑞0, F), realice la definición de δ y la tabla de
transiciones.
Ejercicios
𝐴
Inicio
0 1
1
𝐵
•Ejercicio 2: Del siguiente
diagrama de transiciones,
defina cada elemento de
A = (Q, ∑, δ, 𝑞0, F), realice
la definición de δ y la
tabla de transiciones.
• Ejercicio 3: De la siguiente tabla de transiciones, defina cada
elemento de A = (Q, ∑, δ, 𝑞0, F), realice la definición de δ y el
diagrama de transiciones.
0 1
*𝑞0 𝑞2 𝑞1
𝑞1 𝑞3 𝑞0
𝑞2
𝑞3
𝑞0
𝑞1
𝑞3
𝑞2
• A menudo nos encontramos con autómatas para los que no están
definidas todas las transiciones. Las situaciones que no están
definidas deben ser consideradas como situación de error, es decir,
si una cadena hace llegar al autómata hasta una situación no
definida, se considera que la cadena no ha sido reconocida por
dicho autómata.
Autómatas Incompletos
Expresiones regulares
• Las expresiones regulares son un equivalente algebraico para un
autómata. Utilizado en muchos lugares como un lenguaje para
describir patrones en texto que son sencillos pero muy útiles.
• Sirven como lenguaje de entrada a muchos sistemas que procesan
cadenas tales como:
⚬ Comandos de búsqueda, ejemplo, grep de UNIX.
⚬ Sistemas de formateo de texto: Usan notación de tipo expresión
regular para describir patrones.
⚬ Convierte la expresión regular a un DFA o un NFA y simula el
autómata en el archivo de búsqueda.
Expresiones regulares
• Generadores de analizadores-léxicos.
• Los analizadores léxicos son parte de un compilador. Dividen el
programa fuente en unidades lógicas (tokens). Tokens como while,
números, signos (+, -, <, etc).
• Produce un DFA que reconoce el token.
De forma más precisa, las expresiones regulares denotan lenguajes. Por
ejemplo, la expresión regular: 01* + 10* denota todas las cadenas que
son o un 0 seguido de cualquier cantidad de 1's
Expresiones regulares
• Comúnmente existen tres operadores de las expresiones regulares:
Unión, concatenación y cerradura.
⚬ Si L y M son dos lenguajes, su unión se denota por 𝐿 ∪ 𝑀, por
ejemplo, supóngase 𝐿 = 001,10,111 , 𝑀 = 𝜖, 001 , entonces la
unión será 𝐿 ∪ 𝑀 = 𝜖, 10,001,111 .
⚬ La concatenación se denota como 𝐿𝑀 o 𝐿. 𝑀, por ejemplo, 𝐿 =
001,10,111 , 𝑀 = 𝜖, 001 , entonces la concatenación será 𝐿𝑀 =
001, 10, 111, 001001, 10001, 111001 .
Operadores de expresiones regulares
⚬ La cerradura (o cerradura de kleene) de un lenguaje se denota
como 𝐿∗
. Representa el conjunto de cadenas que pueden
formarse tomando cualquier número de cadenas de 𝐿 ,
posiblemente con repeticiones y concatenando todas ellas, por
ejemplo, si 𝐿 = 0,1 , 𝐿∗
son todas las cadenas con 0’s y 1’s.
Si 𝐿 = 0,11 , entonces 𝐿∗
son todas las cadenas de 0’s y 1’s tal que
los 1’s están en pareja.
Para calcular 𝐿∗
se debe calcular 𝐿𝑖
para cada 𝑖 y tomar la unión de
todos estos lenguajes. 𝐿𝑖
tiene 2𝑖
elementos. Aunque cada 𝐿𝑖
es
finito, la unión del número de términos de 𝐿𝑖
es en general un
conjunto infinito, por ejemplo, ∅∗
= 𝜖 o ∅0
= 𝜖 .
Construcción de expresiones regulares
Si 𝐸 es una expresión regular, entonces 𝐿 𝐸 denota el lenguaje que
define 𝐸. Las expresiones se construyen de la siguiente forma:
1. Las constantes 𝜖 y ∅ son expresiones regulares que representan a
los lenguajes 𝐿 𝜖 = 𝜖 y 𝐿 ∅ = ∅ respectivamente.
2. Si 𝑎 es un símbolo, entonces es una expresión regular que
representan al lenguaje 𝐿 𝑎 = 𝑎.
3. Si 𝐸 y 𝐹 son expresiones regulares, entonces 𝐸 + 𝐹 también lo es
denotando la unión de 𝐿 𝐸 y 𝐿 𝐹 . 𝐿 𝐸 + 𝐹 = 𝐿 𝐸 ∪ 𝐿 𝐹 .
4. Si 𝐸 y 𝐹 son expresiones regulares, entonces 𝐸𝐹 también lo es
denotando la concatenación de 𝐿 𝐸 y 𝐿 𝐹 . 𝐿 𝐸𝐹 = 𝐿 𝐸 𝐿 𝐹 .
Construcción de expresiones regulares
5. Si 𝐸 es una expresión regular, entonces 𝐸∗
también lo es y denota la
cerradura de L 𝐸 . Es decir, L 𝐸∗
= 𝐿 𝐸
∗
6. Si 𝐸 es una expresión regular, entonces 𝐸 también lo es.
Formalmente: 𝐿 𝐸 = 𝐿 𝐸
Ejemplo 1: Escriba la expresión regular para el conjunto de cadenas que
consisten en 0’s y 1’s alterados.
▪ Una regla básica dice que 0 y 1 son expresiones que denotan los lenguajes 0 y
1 , concatenando ambos lenguajes se obtiene entonces la expresión para el
Ejemplo 1 que es 01 .
Precedencia de operaciones
Las reglas básicas son las siguientes:
1. El asterisco de la cerradura tiene la mayor precedencia.
2. Concatenación sigue en precedencia a la cerradura, el operador "𝑑𝑜𝑡“ .
Concatenación es asociativa y se sugiere agrupar desde la izquierda. (Por ejemplo,
012 se agrupa 01 2).
3. La unión 𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟 + tiene la siguiente precedencia, también es asociativa.
4. Los paréntesis pueden ser utilizados para alterar el agrupamiento.
Ejercicios
Ejercicio 1. Explique las expresiones regulares que denotadas por el siguiente
lenguaje: 𝐿 001 .
Explicación:
• El lenguaje representado por esta expresión regular incluirá todas las cadenas que
contengan la subcadena "001". Por ejemplo, las cadenas que pertenecerían a este
lenguaje son:
• “1001”
• “00123”
• “xyz001abc”
• “001”
Ejercicios
Ejercicio 2. Explique las expresiones regulares que denotadas por el siguiente
lenguaje: 𝐿 0 + 10∗
.
Ejercicio 3. Explique las expresiones regulares denotadas por el siguiente lenguaje:
𝐿 0 0 + 1
∗
Ejercicio 4. Realiza la expresión regular de cadenas que alterna 0’s y 1’s.
Ejercicio 5. Qué lenguaje está representado por la expresión regular 𝐿 𝑎 ∗ 𝑎 𝑏 ∪ 𝑏
Ejercicio 6. escriba las expresiones regulares para los siguientes lenguajes.
• El conjunto de cadenas de 0’s y 1’s con a lo más un par consecutivo de 1’s.
• El conjunto de cadenas de 0’s y 1’s cuyo número de 0’s es divisible entre cinco.
• El conjunto de cadenas de 0’s y 1’s cuyo número de 0’s es divisible entre cinco y el
número de 1’s es par.
Ejercicios AFD
• Ejercicio 1:
▪ Sea el siguiente AFD: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2
donde 𝑓 se define de la siguiente forma:
δ 𝑞0, 0 = 𝑞0 δ 𝑞1, 1 = 𝑞0
δ 𝑞0, 1 = 𝑞1 δ 𝑞2, 0 = 𝑞1
δ 𝑞1, 0 = 𝑞2 δ 𝑞2, 1 = 𝑞2
Determina si las siguientes cadenas son aceptadas o no por el autómata:
• 01010
• 111010
• 001001
• 11011011
Ejercicios AFD
• Ejercicio 2:
▪ Sea el siguiente AFD: σ = 0,1 , 𝒬 = 𝐴, 𝐵, 𝐶 , 𝑞0 = 𝐴, 𝐹 = 𝐵
donde 𝑓 se define de la siguiente forma:
δ 𝐴, 0 = 𝐵 δ 𝐵, 1 = 𝐶
δ 𝐴, 1 = 𝐶 δ 𝐶, 0 = 𝐶
δ 𝐵, 0 = 𝐴 δ 𝐶, 1 = 𝐶
Determina si las siguientes cadenas son aceptadas o no por el autómata:
• 1001
• 010
• 0011
• 1000110
• Los Autómatas Finitos no determinista (AFN) es un autómata finito en
donde 𝛿 no es necesariamente una función de transición, es decir, que
para cada par (estado actual y símbolo de entrada) le corresponde cero,
uno, dos o más estados siguientes. La relación de transición para un
AFND se denota como Δ.
• Es un modelo para representar sistemas que pueden estar en
diferentes estados y realizar transiciones entre ellos en respuesta a una
entrada. La principal diferencia entre un autómata finito determinista
(AFD) y un AFN radica en que, en un AFN, para un mismo estado y
símbolo de entrada, puede haber múltiples transiciones posibles a
diferentes estados.
Autómata Finito No Determinista
• La representación formal de un AFND se compone de:
1. Conjunto de estados (Q): Un conjunto finito de estados que representa
las diferentes situaciones en las que el autómata puede encontrarse.
2. Alfabeto de entrada (Σ): Un conjunto finito de símbolos de entrada.
3. Función de transición (δ): Una función que especifica las transiciones
entre estados en respuesta a la entrada. En un AFN, esta función
puede asignar múltiples estados a una combinación de estado y
símbolo de entrada.
4. Estado inicial (q₀): El estado en el que el autómata comienza su
procesamiento.
5. Conjunto de estados de aceptación (F): Un conjunto de estados que se
consideran estados de aceptación
• Ejemplo 1:
Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde Δ
se define de la siguiente forma:
δ 𝑞0, 0 = 𝑞0, 𝑞1 δ 𝑞1, 1 = {𝑞2}
δ 𝑞0, 1 = 𝑞0 δ 𝑞2, 0 = {𝑞2}
δ 𝑞1, 0 = {𝑞2} δ 𝑞2, 1 = {𝑞2}
0 1
→ 𝑞0 𝑞0, 𝑞1 𝑞0
𝑞1 𝑞2 𝑞2
*𝑞2 𝑞2 𝑞2
𝑞0 𝑞1 𝑞2
1
0
1
0
0
1
0
• Ejemplo 2:
Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞1, 𝑞2 donde
Δ se define de la siguiente forma:
δ 𝑞0, 0 = 𝑞0, 𝑞1 δ 𝑞1, 1 = {𝑞1}
δ 𝑞0, 1 = 𝑞0, 𝑞2 δ 𝑞2, 0 = {𝑞2}
δ 𝑞1, 0 = {𝑞1} δ 𝑞2, 1 = {𝑞2}
0 1
→ 𝑞0 𝑞0, 𝑞1 𝑞0, 𝑞2
𝑞1 𝑞1 𝑞1
*𝑞2 𝑞2 𝑞2
𝑞0
𝑞1
𝑞2
1
0
1
0
1
0
1
0
• Ejemplo 3:
Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde Δ
se define de la siguiente forma:
δ 𝑞0, 0 = 𝑞0, 𝑞1 δ 𝑞1, 1 = {𝑞2}
δ 𝑞0, 1 = 𝑞0 δ 𝑞2, 0 = { }
δ 𝑞1, 0 = { } δ 𝑞2, 1 = { }
0 1
→ 𝑞0 𝑞0, 𝑞1 𝑞0
𝑞1 − 𝑞2
*𝑞2 − −
𝑞0 𝑞1 𝑞2
1
0
0 1
• Ejercicio 1:
Diseña un AFND que acepte el lenguaje sobre el alfabeto {0, 1} donde la
subcadena "010" aparece en algún lugar.
Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2, 𝑞3 , 𝑞0 = 𝑞0, 𝐹 = 𝑞3 donde
Δ se define de la siguiente forma:
δ 𝑞0, 0 = 𝑞0 δ 𝑞2, 0 = 𝑞3
δ 𝑞0, 1 = 𝑞0, 𝑞1 δ 𝑞2, 1 = 𝑞0, 𝑞1
δ 𝑞1, 0 = 𝑞2 δ 𝑞3, 0 = 𝑞3
δ 𝑞1, 1 = 𝑞0, 𝑞1 δ 𝑞3, 1 = 𝑞3
• Ejercicio 2:
Crea un AFN que reconozca el lenguaje sobre el alfabeto {a, b} en el que
cada cadena termine con "a" y tenga un número par de símbolos "b" en
total.
Sea el siguiente AFND: σ = 𝑎, 𝑏 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde Δ
se define de la siguiente forma:
δ 𝑞0, 𝑎 = 𝑞0 δ 𝑞1, 𝑏 = 𝑞2
δ 𝑞0, 𝑏 = 𝑞0, 𝑞1 δ 𝑞2, 𝑎 = 𝑞2
δ 𝑞1, 𝑎 = 𝑞2 δ 𝑞2, 𝑏 = 𝑞2, 𝑞1

Más contenido relacionado

Similar a Introducción a la Teoría de Autómatas by Yeredith

Sistemas AutÓmatas.
Sistemas AutÓmatas.Sistemas AutÓmatas.
Sistemas AutÓmatas.jengibre
 
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxRepresentecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxSANTOS400018
 
Maquinas de estado
Maquinas de estadoMaquinas de estado
Maquinas de estado_05mauricio
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosRosviannis Barreiro
 
Presentacion Enguelbert Garcia
Presentacion Enguelbert GarciaPresentacion Enguelbert Garcia
Presentacion Enguelbert GarciaEnguelbert Garcia
 
Teoria de automatas
Teoria de automatasTeoria de automatas
Teoria de automatasPedro Roman
 
Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxicoFARIDROJAS
 
Lenguajes Regulares.
Lenguajes Regulares.Lenguajes Regulares.
Lenguajes Regulares.guestdf1874
 
Máquina de turing
Máquina de turingMáquina de turing
Máquina de turingIvan
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintacticoalexisdario
 

Similar a Introducción a la Teoría de Autómatas by Yeredith (20)

Sistemas AutÓmatas.
Sistemas AutÓmatas.Sistemas AutÓmatas.
Sistemas AutÓmatas.
 
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxRepresentecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
 
Maquinas de estado
Maquinas de estadoMaquinas de estado
Maquinas de estado
 
Tipos de autómatas, y operaciones de conjunto entre autómatas
Tipos de autómatas, y operaciones de conjunto entre autómatasTipos de autómatas, y operaciones de conjunto entre autómatas
Tipos de autómatas, y operaciones de conjunto entre autómatas
 
MANDALA
MANDALAMANDALA
MANDALA
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Infoalgoritmo
InfoalgoritmoInfoalgoritmo
Infoalgoritmo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Infoalgoritmo
InfoalgoritmoInfoalgoritmo
Infoalgoritmo
 
Presentacion Enguelbert Garcia
Presentacion Enguelbert GarciaPresentacion Enguelbert Garcia
Presentacion Enguelbert Garcia
 
Teoria de automatas
Teoria de automatasTeoria de automatas
Teoria de automatas
 
Braulio yeuris g3
Braulio yeuris g3Braulio yeuris g3
Braulio yeuris g3
 
Braulio yeuris g3
Braulio yeuris g3Braulio yeuris g3
Braulio yeuris g3
 
Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxico
 
Teoría de Autómata
Teoría de AutómataTeoría de Autómata
Teoría de Autómata
 
Lenguajes Regulares.
Lenguajes Regulares.Lenguajes Regulares.
Lenguajes Regulares.
 
Máquina de turing
Máquina de turingMáquina de turing
Máquina de turing
 
APLICACIONES
APLICACIONESAPLICACIONES
APLICACIONES
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
 

Introducción a la Teoría de Autómatas by Yeredith

  • 1. M. en C. Yeredith Giovanna Mora Martínez Teoría de Autómatas
  • 2. Introducción a la Teoría de Autómatas • La teoría de autómatas es el estudio de dispositivos de cálculo abstractos, es decir, de las “máquinas”. • Antes de que existieran las computadoras, en la década de los años treinta, A. Turing estudió una máquina abstracta que tenía todas las capacidades de las computadoras de hoy día, al menos en lo que respecta a lo que podían calcular. • El objetivo de Turing era describir de forma precisa los límites entre lo que una máquina de cálculo podía y no podía hacer. • En las décadas de los años cuarenta y cincuenta, una serie de investigadores estudiaron las máquinas más simples, las cuales todavía hoy denominamos “autómatas finitos”.
  • 3. • A finales de la década de los cincuenta, el lingüista N. Chomsky inició el estudio de las “gramáticas” formales. • Aunque no son máquinas estrictamente, estas gramáticas están estrechamente relacionadas con los automátas abstractos y sirven actualmente como base de algunos importantes componentes de software, entre los que se incluyen componentes de los compiladores. Introducción a la Teoría de Autómatas
  • 4. • Cook en 1969, fue capaz de separar aquellos problemas que se podían resolver de forma eficiente mediante computadora de aquellos problemas que, en principio, pueden resolverse, pero que en la práctica consumen tanto tiempo que las computadoras resultan inútiles para todo excepto para casos muy simples del problema. Este último tipo de problemas se denominan “insolubles” o “NP-difíciles ”. Introducción a la Teoría de Autómatas
  • 5. • Los autómatas finitos constituyen un modelo útil para muchos tipos de hardware y software. Algunos de los tipos más importantes son: ⚬ Software para diseñar y probar el comportamiento de circuitos digitales. ⚬ El “analizador léxico” de un compilador típico, es decir, el componente del compilador que separa el texto de entrada en unidades lógicas, tal como identificadores, palabras clave y signos de puntuación. ⚬ Software para explorar cuerpos de texto largos, como colecciones de páginas web, o para determinar el número de apariciones de palabras, frases u otros patrones. Introducción a la Teoría de Autómatas
  • 6. • Existen muchos sistemas o componentes, que pueden encontrarse siempre en uno de una serie de “estados” finitos. ⚬ El propósito de un estado es el de recordar la parte relevante del historial del sistema. ⚬ Puesto que sólo existe un número finito de estados, generalmente, no es posible recordar el historial completo, por lo que el sistema debe diseñarse cuidadosamente, con el fin de recordar lo que es importante y olvidar lo que no lo es. ⚬ La ventaja de disponer de sólo un número finito de estados es que podemos implementar el sistema mediante un conjunto fijo de recursos. Teoría de Autómatas
  • 7. off on • Ejemplo de autómata finito: Realizar el autómata finito de un interruptor de apagado/encendido (posiciones on/off). El dispositivo recuerda si está en el estado encendido (“on”) o en el estado apagado (“off”), y permite al usuario pulsar un botón cuyo efecto es diferente dependiendo del estado del interruptor. Pulsar Pulsar
  • 8. • El autómata finito procesa una cadena de entrada símbolo por símbolo, cambiando de estado según las reglas definidas por la función de transición. Al final de la cadena, el autómata puede estar en un estado de aceptación si cumple con ciertas condiciones. Tipos de Autómatas Finitos: 1. Autómata Finito Determinista (AFD): En cada paso, hay una única transición posible para cada símbolo de entrada desde cada estado. 2. Autómata Finito No Determinista (AFND): Puede tener múltiples transiciones posibles desde un estado para un mismo símbolo de entrada. Proceso de Transición
  • 9. • Los Autómatas Finitos son máquinas teóricas que van cambiando de estado dependiendo de la entrada que reciban. • La salida de estos autómatas está limitada a dos valores: aceptado y no aceptado, que pueden indicar si la cadena que se ha recibido como entrada es o no válida. • Generalmente utilizamos los autómatas finitos para reconocer lenguajes regulares, es decir, una palabra se considerará válida sólo si pertenece a un determinado lenguaje. Autómata Finito Determinista
  • 10. • Un autómata finito determinista (AFD) se representa como una 5- tupla: A = (Q, ∑, δ, 𝑞0, F) 1. Q: Un conjunto finito de estados. 2. ∑: Un conjunto finito de símbolos de entrada (alfabeto). 3. 𝑞0: El estado inicial de comienzo. 4. F: Cero o más estados finales de aceptación. 5. δ: Función de transición. Esta función: ▪ Toma un estado y un símbolo de entrada como argumentos. ▪ Regresa un estado. ▪ Una “regla” de δ se escribe como δ(q,a)=p, donde q y p son estados y a es un símbolo de entrada. Definición Formal de un Autómata
  • 11. • Existen dos formas de representar un AFD, mediante tablas de transición o mediante diagramas de transición. • Por ejemplo: ▪ Sea el siguiente AFD: σ = 𝑎, 𝑏 , 𝒬 = 𝑝, 𝑞, 𝑟 , 𝑞0 = 𝑝, 𝐹 = 𝑞 donde δ se define de la siguiente forma: δ 𝑝, 𝑎 = 𝑞 δ 𝑝, 𝑏 = 𝑟 δ 𝑞, 𝑎 = 𝑞 δ 𝑞, 𝑏 = 𝑟 δ 𝑟, 𝑎 = 𝑟 δ 𝑟, 𝑏 = 𝑟 Representación de Autómatas
  • 12. Representación de Autómatas • Diagrama de transición. Los estados finales de aceptación se identifican por estar encerrados en un doble circulo. En este ejemplo, el autómata solo considera como cadenas aceptadas aquellas que están formadas por a’s. Cualquier cadena que contenga una b hará que el autómata acabe en el estado r.
  • 13. • Tabla de transición. El AFD se representaría mediante la siguiente tabla que representa los valores de la función de transición. ▪ La flecha indica que 𝑝 es el estado inicial, y el asterisco indica que 𝑞 es un estado final de aceptación. Representación de Autómatas 𝑎 𝑏 𝑝 𝑞 𝑟 * 𝑞 𝑞 𝑟 r 𝑟 𝑟
  • 14. • Ejemplo 2: ▪ Sea el siguiente AFD: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde 𝑓 se define de la siguiente forma: δ 𝑞0, 1 = 𝑞0 δ 𝑞1, 1 = 𝑞2 δ 𝑞0, 0 = 𝑞1 δ 𝑞2, 0 = 𝑞2 δ 𝑞1, 0 = 𝑞1 δ 𝑞2, 1 = 𝑞2 𝑞0 𝑞1 𝑞2 Inicio 1 1 0, 1 0 0 0 1 𝑞0 𝑞1 𝑞0 𝑞1 𝑞1 𝑞2 * 𝑞2 𝑞2 𝑞2
  • 15. • Ejercicio 1: Del siguiente diagrama de transiciones, defina cada elemento de A = (Q, ∑, δ, 𝑞0, F), realice la definición de δ y la tabla de transiciones. Ejercicios 𝐴 Inicio 0 1 1 𝐵
  • 16. •Ejercicio 2: Del siguiente diagrama de transiciones, defina cada elemento de A = (Q, ∑, δ, 𝑞0, F), realice la definición de δ y la tabla de transiciones.
  • 17. • Ejercicio 3: De la siguiente tabla de transiciones, defina cada elemento de A = (Q, ∑, δ, 𝑞0, F), realice la definición de δ y el diagrama de transiciones. 0 1 *𝑞0 𝑞2 𝑞1 𝑞1 𝑞3 𝑞0 𝑞2 𝑞3 𝑞0 𝑞1 𝑞3 𝑞2
  • 18. • A menudo nos encontramos con autómatas para los que no están definidas todas las transiciones. Las situaciones que no están definidas deben ser consideradas como situación de error, es decir, si una cadena hace llegar al autómata hasta una situación no definida, se considera que la cadena no ha sido reconocida por dicho autómata. Autómatas Incompletos
  • 19. Expresiones regulares • Las expresiones regulares son un equivalente algebraico para un autómata. Utilizado en muchos lugares como un lenguaje para describir patrones en texto que son sencillos pero muy útiles. • Sirven como lenguaje de entrada a muchos sistemas que procesan cadenas tales como: ⚬ Comandos de búsqueda, ejemplo, grep de UNIX. ⚬ Sistemas de formateo de texto: Usan notación de tipo expresión regular para describir patrones. ⚬ Convierte la expresión regular a un DFA o un NFA y simula el autómata en el archivo de búsqueda.
  • 20. Expresiones regulares • Generadores de analizadores-léxicos. • Los analizadores léxicos son parte de un compilador. Dividen el programa fuente en unidades lógicas (tokens). Tokens como while, números, signos (+, -, <, etc). • Produce un DFA que reconoce el token. De forma más precisa, las expresiones regulares denotan lenguajes. Por ejemplo, la expresión regular: 01* + 10* denota todas las cadenas que son o un 0 seguido de cualquier cantidad de 1's
  • 21. Expresiones regulares • Comúnmente existen tres operadores de las expresiones regulares: Unión, concatenación y cerradura. ⚬ Si L y M son dos lenguajes, su unión se denota por 𝐿 ∪ 𝑀, por ejemplo, supóngase 𝐿 = 001,10,111 , 𝑀 = 𝜖, 001 , entonces la unión será 𝐿 ∪ 𝑀 = 𝜖, 10,001,111 . ⚬ La concatenación se denota como 𝐿𝑀 o 𝐿. 𝑀, por ejemplo, 𝐿 = 001,10,111 , 𝑀 = 𝜖, 001 , entonces la concatenación será 𝐿𝑀 = 001, 10, 111, 001001, 10001, 111001 .
  • 22. Operadores de expresiones regulares ⚬ La cerradura (o cerradura de kleene) de un lenguaje se denota como 𝐿∗ . Representa el conjunto de cadenas que pueden formarse tomando cualquier número de cadenas de 𝐿 , posiblemente con repeticiones y concatenando todas ellas, por ejemplo, si 𝐿 = 0,1 , 𝐿∗ son todas las cadenas con 0’s y 1’s. Si 𝐿 = 0,11 , entonces 𝐿∗ son todas las cadenas de 0’s y 1’s tal que los 1’s están en pareja. Para calcular 𝐿∗ se debe calcular 𝐿𝑖 para cada 𝑖 y tomar la unión de todos estos lenguajes. 𝐿𝑖 tiene 2𝑖 elementos. Aunque cada 𝐿𝑖 es finito, la unión del número de términos de 𝐿𝑖 es en general un conjunto infinito, por ejemplo, ∅∗ = 𝜖 o ∅0 = 𝜖 .
  • 23. Construcción de expresiones regulares Si 𝐸 es una expresión regular, entonces 𝐿 𝐸 denota el lenguaje que define 𝐸. Las expresiones se construyen de la siguiente forma: 1. Las constantes 𝜖 y ∅ son expresiones regulares que representan a los lenguajes 𝐿 𝜖 = 𝜖 y 𝐿 ∅ = ∅ respectivamente. 2. Si 𝑎 es un símbolo, entonces es una expresión regular que representan al lenguaje 𝐿 𝑎 = 𝑎. 3. Si 𝐸 y 𝐹 son expresiones regulares, entonces 𝐸 + 𝐹 también lo es denotando la unión de 𝐿 𝐸 y 𝐿 𝐹 . 𝐿 𝐸 + 𝐹 = 𝐿 𝐸 ∪ 𝐿 𝐹 . 4. Si 𝐸 y 𝐹 son expresiones regulares, entonces 𝐸𝐹 también lo es denotando la concatenación de 𝐿 𝐸 y 𝐿 𝐹 . 𝐿 𝐸𝐹 = 𝐿 𝐸 𝐿 𝐹 .
  • 24. Construcción de expresiones regulares 5. Si 𝐸 es una expresión regular, entonces 𝐸∗ también lo es y denota la cerradura de L 𝐸 . Es decir, L 𝐸∗ = 𝐿 𝐸 ∗ 6. Si 𝐸 es una expresión regular, entonces 𝐸 también lo es. Formalmente: 𝐿 𝐸 = 𝐿 𝐸 Ejemplo 1: Escriba la expresión regular para el conjunto de cadenas que consisten en 0’s y 1’s alterados. ▪ Una regla básica dice que 0 y 1 son expresiones que denotan los lenguajes 0 y 1 , concatenando ambos lenguajes se obtiene entonces la expresión para el Ejemplo 1 que es 01 .
  • 25. Precedencia de operaciones Las reglas básicas son las siguientes: 1. El asterisco de la cerradura tiene la mayor precedencia. 2. Concatenación sigue en precedencia a la cerradura, el operador "𝑑𝑜𝑡“ . Concatenación es asociativa y se sugiere agrupar desde la izquierda. (Por ejemplo, 012 se agrupa 01 2). 3. La unión 𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟 + tiene la siguiente precedencia, también es asociativa. 4. Los paréntesis pueden ser utilizados para alterar el agrupamiento.
  • 26. Ejercicios Ejercicio 1. Explique las expresiones regulares que denotadas por el siguiente lenguaje: 𝐿 001 . Explicación: • El lenguaje representado por esta expresión regular incluirá todas las cadenas que contengan la subcadena "001". Por ejemplo, las cadenas que pertenecerían a este lenguaje son: • “1001” • “00123” • “xyz001abc” • “001”
  • 27. Ejercicios Ejercicio 2. Explique las expresiones regulares que denotadas por el siguiente lenguaje: 𝐿 0 + 10∗ . Ejercicio 3. Explique las expresiones regulares denotadas por el siguiente lenguaje: 𝐿 0 0 + 1 ∗ Ejercicio 4. Realiza la expresión regular de cadenas que alterna 0’s y 1’s. Ejercicio 5. Qué lenguaje está representado por la expresión regular 𝐿 𝑎 ∗ 𝑎 𝑏 ∪ 𝑏 Ejercicio 6. escriba las expresiones regulares para los siguientes lenguajes. • El conjunto de cadenas de 0’s y 1’s con a lo más un par consecutivo de 1’s. • El conjunto de cadenas de 0’s y 1’s cuyo número de 0’s es divisible entre cinco. • El conjunto de cadenas de 0’s y 1’s cuyo número de 0’s es divisible entre cinco y el número de 1’s es par.
  • 28. Ejercicios AFD • Ejercicio 1: ▪ Sea el siguiente AFD: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde 𝑓 se define de la siguiente forma: δ 𝑞0, 0 = 𝑞0 δ 𝑞1, 1 = 𝑞0 δ 𝑞0, 1 = 𝑞1 δ 𝑞2, 0 = 𝑞1 δ 𝑞1, 0 = 𝑞2 δ 𝑞2, 1 = 𝑞2 Determina si las siguientes cadenas son aceptadas o no por el autómata: • 01010 • 111010 • 001001 • 11011011
  • 29. Ejercicios AFD • Ejercicio 2: ▪ Sea el siguiente AFD: σ = 0,1 , 𝒬 = 𝐴, 𝐵, 𝐶 , 𝑞0 = 𝐴, 𝐹 = 𝐵 donde 𝑓 se define de la siguiente forma: δ 𝐴, 0 = 𝐵 δ 𝐵, 1 = 𝐶 δ 𝐴, 1 = 𝐶 δ 𝐶, 0 = 𝐶 δ 𝐵, 0 = 𝐴 δ 𝐶, 1 = 𝐶 Determina si las siguientes cadenas son aceptadas o no por el autómata: • 1001 • 010 • 0011 • 1000110
  • 30. • Los Autómatas Finitos no determinista (AFN) es un autómata finito en donde 𝛿 no es necesariamente una función de transición, es decir, que para cada par (estado actual y símbolo de entrada) le corresponde cero, uno, dos o más estados siguientes. La relación de transición para un AFND se denota como Δ. • Es un modelo para representar sistemas que pueden estar en diferentes estados y realizar transiciones entre ellos en respuesta a una entrada. La principal diferencia entre un autómata finito determinista (AFD) y un AFN radica en que, en un AFN, para un mismo estado y símbolo de entrada, puede haber múltiples transiciones posibles a diferentes estados. Autómata Finito No Determinista
  • 31. • La representación formal de un AFND se compone de: 1. Conjunto de estados (Q): Un conjunto finito de estados que representa las diferentes situaciones en las que el autómata puede encontrarse. 2. Alfabeto de entrada (Σ): Un conjunto finito de símbolos de entrada. 3. Función de transición (δ): Una función que especifica las transiciones entre estados en respuesta a la entrada. En un AFN, esta función puede asignar múltiples estados a una combinación de estado y símbolo de entrada. 4. Estado inicial (q₀): El estado en el que el autómata comienza su procesamiento. 5. Conjunto de estados de aceptación (F): Un conjunto de estados que se consideran estados de aceptación
  • 32. • Ejemplo 1: Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde Δ se define de la siguiente forma: δ 𝑞0, 0 = 𝑞0, 𝑞1 δ 𝑞1, 1 = {𝑞2} δ 𝑞0, 1 = 𝑞0 δ 𝑞2, 0 = {𝑞2} δ 𝑞1, 0 = {𝑞2} δ 𝑞2, 1 = {𝑞2} 0 1 → 𝑞0 𝑞0, 𝑞1 𝑞0 𝑞1 𝑞2 𝑞2 *𝑞2 𝑞2 𝑞2 𝑞0 𝑞1 𝑞2 1 0 1 0 0 1 0
  • 33. • Ejemplo 2: Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞1, 𝑞2 donde Δ se define de la siguiente forma: δ 𝑞0, 0 = 𝑞0, 𝑞1 δ 𝑞1, 1 = {𝑞1} δ 𝑞0, 1 = 𝑞0, 𝑞2 δ 𝑞2, 0 = {𝑞2} δ 𝑞1, 0 = {𝑞1} δ 𝑞2, 1 = {𝑞2} 0 1 → 𝑞0 𝑞0, 𝑞1 𝑞0, 𝑞2 𝑞1 𝑞1 𝑞1 *𝑞2 𝑞2 𝑞2 𝑞0 𝑞1 𝑞2 1 0 1 0 1 0 1 0
  • 34. • Ejemplo 3: Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde Δ se define de la siguiente forma: δ 𝑞0, 0 = 𝑞0, 𝑞1 δ 𝑞1, 1 = {𝑞2} δ 𝑞0, 1 = 𝑞0 δ 𝑞2, 0 = { } δ 𝑞1, 0 = { } δ 𝑞2, 1 = { } 0 1 → 𝑞0 𝑞0, 𝑞1 𝑞0 𝑞1 − 𝑞2 *𝑞2 − − 𝑞0 𝑞1 𝑞2 1 0 0 1
  • 35. • Ejercicio 1: Diseña un AFND que acepte el lenguaje sobre el alfabeto {0, 1} donde la subcadena "010" aparece en algún lugar. Sea el siguiente AFND: σ = 0,1 , 𝒬 = 𝑞0, 𝑞1, 𝑞2, 𝑞3 , 𝑞0 = 𝑞0, 𝐹 = 𝑞3 donde Δ se define de la siguiente forma: δ 𝑞0, 0 = 𝑞0 δ 𝑞2, 0 = 𝑞3 δ 𝑞0, 1 = 𝑞0, 𝑞1 δ 𝑞2, 1 = 𝑞0, 𝑞1 δ 𝑞1, 0 = 𝑞2 δ 𝑞3, 0 = 𝑞3 δ 𝑞1, 1 = 𝑞0, 𝑞1 δ 𝑞3, 1 = 𝑞3
  • 36. • Ejercicio 2: Crea un AFN que reconozca el lenguaje sobre el alfabeto {a, b} en el que cada cadena termine con "a" y tenga un número par de símbolos "b" en total. Sea el siguiente AFND: σ = 𝑎, 𝑏 , 𝒬 = 𝑞0, 𝑞1, 𝑞2 , 𝑞0 = 𝑞0, 𝐹 = 𝑞2 donde Δ se define de la siguiente forma: δ 𝑞0, 𝑎 = 𝑞0 δ 𝑞1, 𝑏 = 𝑞2 δ 𝑞0, 𝑏 = 𝑞0, 𝑞1 δ 𝑞2, 𝑎 = 𝑞2 δ 𝑞1, 𝑎 = 𝑞2 δ 𝑞2, 𝑏 = 𝑞2, 𝑞1