Está en la página 1de 50

TEORÍA DE LENGUAJES

FORMALES Y AUTÓMATAS
III UNIDAD

Ing. Sofia Pedro Huaman


Contenido

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

  Alfabeto Conjunto finito de símbolos.

 
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:

 Sufijo. Sucesión final de símbolos de una palabra.

 Ejemplo. Sea , Sufijos

 Subpalabra. Cualquier sucesión de símbolos vecinos. Los


prefijos y sufijos también son subpalabras.
 Ejemplo. Subpalabras:
 Palíndromo.
Programación II 6
1.2. Operaciones con Cadenas

 Concatenación.
 
 Combinación binaria de palabras sobre .

 No es conmutativa.

 Es asociativa.

 Posee elemento neutro .

Ejemplo.

Programación II 7
1.2. Operaciones con Cadenas
(Cont.)

 Reverso
 

Ejemplo.

(¿a que otro concepto se parece?)

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

 Un lenguaje es un conjunto de símbolos que nos


permiten transmitir un mensaje.
 Se dividen en:
 Naturales. Aquellos que usamos para comunicarnos, a
veces su significado no es preciso. Por ejemplo, castellano,
inglés, francés, etc.
 Formales. Son artificiales (creados por el hombre), poseen
una sintaxis bien definida (siempre se puede determinar si
una sentencia pertenece o no al lenguaje) y una semántica
precisa (no contiene sentencias ambiguas).

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.
 

 Conjuntos Regulares: Un conjunto es regular, si


puede ser generado a partir del conjunto vacío y los
elementos del alfabeto usando la unión (U),
concatenación y la estrella de Kleene.

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 :

 El lenguaje regular generado por es igual al conjunto de las


palabras derivables a partir de su símbolo inicial.

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)

𝑆𝑒𝑟𝑎 𝑝𝑜𝑠𝑖𝑏𝑙𝑒 𝑑𝑒𝑟𝑖𝑣𝑎𝑟 :


    Todas las cadenas donde
 

Que lenguajes es generado por la gramática

Programación II 31
4. AUTOMATAS FINITOS

Programación II 32
4.1. Autómatas Finitos

 Los autómatas finitos (AF) constituyen un modelo útil


para muchos tipos de hardware y software, como:
 software para diseñar y probar el comportamiento de circuitos
digitales.
 analizador léxico (componente del compilador)
 explorar de colecciones grandes de datos para determinar
número de apariciones de palabras, frases o patrones
 verificar protocolos de comunicaciones, intercambio de
información, etc.

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.

El autómata reconoce cadenas de al menos dos


caracteres sobre el alfabeto binario.

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

 Un autómata finito puede ser:


 Autómata finito determinista (AFD) es aquel que sólo puede
estar en un único estado después de leer cualquier secuencia
de entradas. Es decir, que para cada entrada existe
solamente único estado al que el autómata puede hacer la
transición a partir de su estado actual.
 Autómata finito no determinista (AFN) puede estar en varios
estados a la vez luego de leer cualquier secuencia de
entradas.

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

 Un AFN puede hacer una transición espontáneamente, sin


recibir un símbolo de entrada, siendo la transición etiquetada
con y son llamados: Autómatas Finitos No deterministas con
transiciones-
Programación II 43
4.5. Autómatas Finitos No
Deterministas: AFN (Cont.)
 𝐴= ( { 𝑞0 , 𝑞 1 , 𝑞 2 } , { 0,1 , } , 𝛿 ,𝑞 0 , 𝑞 2)
 Ejemplo.
  

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

 Obtener tabla de transiciones y quíntupla


 El Lenguaje aceptado por A:  :
 La GR que lo genera

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.)

 El circuito que controla una puerta automática, la puerta se


abre o cierra de acuerdo a la información de sensores que
revisan los dos lados de la puerta.
 El mecanismo de control de un ascensor.
 Un circuito de switcheo, compuesto por n compuertas, cada
una de las cuales tiene 2 posibilidades: abierta/cerrada.
 Reconocimiento de patrones en textos.
 Analizadores léxicos, editores de texto.

Programación II 48
5. Aplicaciones.

 Aplicaciones de búsquedas en texto. Los autómatas finitos no


deterministas son una forma útil de representar reconocedores
de patrones que exploran un texto largo para localizar una o
más palabras clave.
 Maquinas de venta de bebidas,
 Protocolos
 Estados de sistemas embebidos.
 Entre otros.

Programación II 49
Gracias…..

Programación II 50

También podría gustarte