Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FORMALES Y AUTÓMATAS
III UNIDAD
1. Introducción.
2. Lenguajes Formales.
3. Lenguajes Regulares.
4. Autómatas Finitos.
5. Aplicaciones .
Programación II 2
1. INTRODUCCIÓN
Programación II 3
1.1. Definiciones Básicas
Ejemplos.
el alfabeto binario.
, letras del alfabeto.
, dígitos decimales.
Programación II 4
1.1. Definiciones Básicas (Cont.)
Palabra
o cadena Secuencia finita de símbolos de un
alfabeto.
Se emplean las últimas letras del alfabeto para designarlas.
Longitud o tamaño de la cadena el número de símbolos.
Sea
Notación:
𝜆 →𝐶𝑎𝑑𝑒𝑛𝑎 𝑣𝑎𝑐𝑖𝑎 ( 𝜀 ) ,| 𝜆|=0
∗
Σ →𝑇𝑜𝑑𝑎𝑠 𝑙𝑎𝑠 𝑝𝑎𝑙𝑎𝑏𝑟𝑎𝑠 𝑝𝑜𝑠𝑖𝑏𝑙𝑒𝑠 𝑠𝑜𝑏𝑟𝑒 Σ
¿
Programación II 5
1.1. Definiciones Básicas (Cont.)
Prefijo.
Sucesión inicial de símbolos de una palabra.
Ejemplo. Sea , Prefijos:
Concatenación.
Combinación binaria de palabras sobre .
No es conmutativa.
Es asociativa.
Ejemplo.
Programación II 7
1.2. Operaciones con Cadenas
(Cont.)
Reverso
Ejemplo.
Programación II 8
1.2. Operaciones con Cadenas
(Cont.)
Potencia.
Es la concatenación de veces .
Ejemplo.
Programación II 9
1.2. Operaciones con Cadenas
(Cont.)
Potencia
de un alfabeto:Todas las cadenas de una
determinada longitud de dicho alfabeto utilizando
una notación exponencial.
Ejemplo.
Programación II 10
1.2. Operaciones con Cadenas
(Cont.)
Clausura
Estrella de Kleene:
Ejemplo.
Programación II 11
1.2. Operaciones con Cadenas
(Cont.)
Clausura
Positiva:
Ejemplo.
Programación II 12
2. LENGUAJES FORMALES
Programación II 13
2.1. Definición de Lenguaje
Programación II 14
2.2. Lenguajes Formales
Un
lenguaje formal es un conjunto de palabras sobre , un
subconjunto de . Son la base para creación de
compiladores e intérpretes.
Un lenguaje formal es generado por una gramática,
reconocido por un autómata y descrito por una expresión
regular. Un lenguaje se definen por las propiedades que
cumplen sus cadenas, por enumeración es ineficiente y/o
imposible.
Lenguaje Vacío . Es un conjunto vacío. No debe
confundirse con un lenguaje que contenga la cadena vacía,
es decir, el conjunto vacío tiene 0 elementos.
Programación II 15
2.2. Lenguajes Formales (Cont.)
Descripción
de Conjuntos.
Usada para especificar un lenguaje.
Ejemplo:
Programación II 16
2.2. Lenguajes Formales (Cont.)
Descripción de Conjuntos.
Ejemplo:
{𝑤∨𝑤 𝑒𝑠𝑢𝑛 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎𝐶 𝑠𝑖𝑛𝑡 á 𝑐𝑡𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑒 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜}.
Programación II 17
2.3. Clasificación de los
Lenguajes Formales
El siguiente cuadro muestra la clasificación de los lenguajes
formales según la jerarquía de Chomsky.
Gramática Lenguaje Autómata
Tipo 0: Gramáticas no Recursivamente
Restringidas o Gramáticas enumerable o sin Máquina de Turing (MT).
con estructura de frase restricciones
Tipo 1: Gramáticas Autómata Lineal Acotado
Dependiente del contexto
Sensibles al Contexto (ALA)
Tipo 2: Gramáticas Libres
Independiente del contexto Autómata de Pila (AP)
de Contexto
Tipo 3: Gramáticas
Regular Autómata Finito (AF)
Regulares
Programación II 18
2.3. Clasificación de los
Lenguajes Formales (Cont.)
Relación de
inclusión entre
Lenguajes.
Programación II 19
2.4. Operaciones con Lenguajes
Unión.
.
Ejemplo.
Concatenación.
Ejemplo.
Programación II 20
2.4. Operaciones con Lenguajes
(Cont.)
Intersección.
Ejemplo.
Potencia.
Ejemplo.
Programación II 21
2.4. Operaciones con Lenguajes
(Cont.)
Clausura
Estrella de Kleene:
Clausura Positiva:
Programación II 22
3. LENGUAJES REGULARES
Programación II 23
3.1. Definición de Lenguaje
Regular
Un
lenguaje es regular si y sólo si se cumple al menos
una de las condiciones siguientes:
es finito;
es la unión o la concatenación de otros lenguajes
regulares o respectivamente.
es la cerradura de Kleene de algún lenguaje regular .
Un lenguaje regular es generado por una gramática
regular, reconocido por un autómata finito y descrito por
una expresión regular.
Programación II 24
3.1. Definición de Lenguaje
Regular (Cont.)
Ejemplo.
Programación II 25
3.2. Expresiones Regulares: ER
Notación estructural para describir lenguajes regulares.
Empleadas en herramientas para la búsqueda de patrones.
Metalenguaje para describir lenguajes regulares.
La precedencia de los operadores en las expresiones
regulares es:
El operador asterisco (*) o (clausura positiva) son los de
precedencia más alta.
El operador de concatenación. Aunque la concatenación es una
operación asociativa, si hay que elegir, las aplicaremos por la
izquierda. Por ejemplo, 012 es igual a (01)2.
Los operadores de unión (+). Dado que la unión también es
asociativa, si hay que elegir empezaremos por la izquierda.
Programación II 26
3.2. Expresiones Regulares: ER
(Cont.)
Si
no desearemos que una expresión regular sea agrupada
según la precedencia de los operadores. En dicho caso,
podemos emplear paréntesis para agrupar los operandos de
la forma que deseemos.
Además, nunca está de más encerrar entre paréntesis los
operandos que se quieran agrupar, incluso aunque la
agrupación deseada sea la prevista por las reglas de
precedencia.
Ejemplo:
Programación II 27
3.3. Gramática Regular : GR
Una
gramática describe la estructura de un lenguaje,
proporcionando las reglas que determinan las
combinaciones válidas de los símbolos del alfabeto.
Las gramáticas regulares poseen reglas de la forma:
, donde A y B son variables, y es un carácter terminal.
Programación II 28
3.3. Gramática Regular (Cont.)
Una
gramática regular es un cuádruplo :
Programación II 29
3.3. Gramática Regular: GR
(Cont.)
Ejemplo:
¿Qué palabras se pueden generar a partir de la
gramática?
Programación II 30
3.3. Gramática Regular: GR
(Cont.)
(1)
(2)
(4)
Programación II 31
4. AUTOMATAS FINITOS
Programación II 32
4.1. Autómatas Finitos
Programación II 33
4.1. Autómatas Finitos (Cont.)
Un
autómata finito es una quíntupla de la forma:
Programación II 34
4.2. Notaciones
Diagrama
de Transiciones. Grafo definido, donde:
Para cada estado de , existe un nodo.
Para cada existe un arco desde el nodo hasta el nodo ,
etiquetado como . Si existen varios que dan lugar a
transiciones desde hasta , entonces el diagrama de
transiciones puede tener un único arco etiquetado con la
lista de estos símbolos.
, debe ser distinguido por : una flecha dirigida sin origen
etiquetada como Inicio; o un triángulo apuntando al centro
del nodo; o un signo mayor.
Estados (nodos) de aceptación tienen un doble círculo.
Programación II 35
4.2. Notaciones (Cont.)
Ejemplo.
Programación II 36
4.2. Notaciones (Cont.)
Tabla
de Transiciones. Representación tabular
convencional de una función, donde:
Las filas corresponden a los estados.
Las columnas a las entradas.
La entrada para la fila correspondiente al estado y la
columna correspondiente a la entrada es el estado
Programación II 37
4.2. Notaciones (Cont.)
Ejemplo.
0 1
Programación II 38
4.3. Tipos de Autómatas
Finitos
Programación II 39
4.4. Autómatas Finitos
Determinista: AFD
Autómatas
donde para cada una de sus entradas existe
solamente un único estado al que puede hacer la transición a
partir de su estado actual.
El lenguaje del AFD es el conjunto de todas las cadenas que
acepta.
Un AFD es una quíntupla
Programación II 40
4.4. Autómatas Finitos
Deterministas: AFD (Cont.)
Ejemplo.
0 1
𝐴 =
( { 𝑞0 , 𝑞 1 , 𝑞 2 } , { 0,1 , } , 𝛿 ,𝑞 0 , {𝑞 2 })
Programación II 41
4.5. Autómatas Finitos No
Deterministas: AFN
Tienen
la capacidad de estar en varios estados a la vez.
Aceptan los lenguajes regulares, al igual que los AFD.
Los AFN son más compactos y fáciles de diseñar que los
AFD.
Siempre es posible convertir un AFN en un AFD, este último
puede tener un número mayor de estados que el AFN.
La diferencia entre los AFD y los AFN se encuentra en la
función . En los AFN, devuelve un conjunto de cero, uno o
más estados (en lugar de devolver exactamente un estado
como en los AFD).
Programación II 42
4.5. Autómatas Finitos No
Deterministas: AFN (Cont.)
Un
AFN es una quíntupla
0 1
Programación II 44
4.6. Otro Ejemplo.
𝐴 =( 𝑄 , Σ , 𝛿 , 𝑞0 , 𝐹 )
Sea el siguiente autómata A
𝐴 = ( { 𝑞0 , 𝑞 1 } , {0,1 } , 𝛿 , 𝑞 0 , 𝑞 0 )
0 1
𝑞 𝑞
0 1
𝑞 𝑞
1 0
Programación II 45
4.6. Ejemplos de AF
Sea el siguiente autómata A 𝐴 = ( { 𝑞0 , 𝑞 1 } , {0,1 } , 𝛿 , 𝑞 0 , 𝑞 0 )
La GR que lo genera
Programación II 46
5. APLICACIONES
Programación II 47
5. Aplicaciones (Cont.)
Programación II 48
5. Aplicaciones.
Programación II 49
Gracias…..
Programación II 50