Professional Documents
Culture Documents
Tema1 TALF
Tema1 TALF
Tema1 TALF
Y LENGUAJES FORMALES
(TALF)
BLOQUE I: PRELIMINARES
Tema 1: Introducción
URJC
Ana Pradera
INTRODUCCIÓN
Gramáticas Formales
Son herramientas que permiten describir ( generar) de forma
rigurosa todas las palabras de un lenguaje.
Autómatas
Son dispositivos abstractos que permiten modelar problemas de
entrada/salida. En particular, pueden reconocer lenguajes y están
por ello estrechamente relacionados con las gramáticas.
Ingeniería Informática (URJC) TALF 3 / 27
INTRODUCCIÓN
INTRODUCCIÓN
Gramáticas Formales
Son herramientas que permiten describir ( generar) de forma
rigurosa todas las palabras de un lenguaje.
Autómatas
Son dispositivos abstractos que permiten modelar problemas de
entrada/salida. En particular, pueden reconocer lenguajes y están
por ello estrechamente relacionados con las gramáticas.
Ingeniería Informática (URJC) TALF 3 / 27
INTRODUCCIÓN
INTRODUCCIÓN
Gramáticas Formales
Son herramientas que permiten describir ( generar) de forma
rigurosa todas las palabras de un lenguaje.
Autómatas
Son dispositivos abstractos que permiten modelar problemas de
entrada/salida. En particular, pueden reconocer lenguajes y están
por ello estrechamente relacionados con las gramáticas.
Ingeniería Informática (URJC) TALF 3 / 27
LENGUAJES FORMALES Alfabetos y Palabras
LENGUAJES FORMALES
Notación
Los alfabetos se denotan mediante la letra griega Σ.
Para referirse a símbolos cualesquiera de un alfabeto se usarán
las letras minúsculas del principio del alfabeto español:
a, b, c, d, ....
Ejemplos
Σ = {a, b, c, ..., z} Σ = {0, 1}
Σ = {0, 1, 2, ..., 9} Σ = {1A, 2B, :=, <>, ∗}
Ingeniería Informática (URJC) TALF 4 / 27
LENGUAJES FORMALES Alfabetos y Palabras
LENGUAJES FORMALES
Notación
Los alfabetos se denotan mediante la letra griega Σ.
Para referirse a símbolos cualesquiera de un alfabeto se usarán
las letras minúsculas del principio del alfabeto español:
a, b, c, d, ....
Ejemplos
Σ = {a, b, c, ..., z} Σ = {0, 1}
Σ = {0, 1, 2, ..., 9} Σ = {1A, 2B, :=, <>, ∗}
Ingeniería Informática (URJC) TALF 4 / 27
LENGUAJES FORMALES Alfabetos y Palabras
LENGUAJES FORMALES
Notación
Los alfabetos se denotan mediante la letra griega Σ.
Para referirse a símbolos cualesquiera de un alfabeto se usarán
las letras minúsculas del principio del alfabeto español:
a, b, c, d, ....
Ejemplos
Σ = {a, b, c, ..., z} Σ = {0, 1}
Σ = {0, 1, 2, ..., 9} Σ = {1A, 2B, :=, <>, ∗}
Ingeniería Informática (URJC) TALF 4 / 27
LENGUAJES FORMALES Alfabetos y Palabras
Notación
La secuencia compuesta por cero símbolos se denomina palabra
vacía y se denota mediante la letra λ.
Para referirse a palabras cualesquiera sobre un alfabeto se
usarán las letras minúsculas del final del alfabeto español:
u, v , w, x, y , z.
Ejemplos
λ es una palabra sobre cualquier alfabeto.
101, 0, 00, 01, 10 son palabras sobre Σ = {0, 1}.
1A, 1A1A2B := ∗, := son palabras sobre Σ = {1A, 2B, :=, <>, ∗}.
Notación
La secuencia compuesta por cero símbolos se denomina palabra
vacía y se denota mediante la letra λ.
Para referirse a palabras cualesquiera sobre un alfabeto se
usarán las letras minúsculas del final del alfabeto español:
u, v , w, x, y , z.
Ejemplos
λ es una palabra sobre cualquier alfabeto.
101, 0, 00, 01, 10 son palabras sobre Σ = {0, 1}.
1A, 1A1A2B := ∗, := son palabras sobre Σ = {1A, 2B, :=, <>, ∗}.
Notación
La secuencia compuesta por cero símbolos se denomina palabra
vacía y se denota mediante la letra λ.
Para referirse a palabras cualesquiera sobre un alfabeto se
usarán las letras minúsculas del final del alfabeto español:
u, v , w, x, y , z.
Ejemplos
λ es una palabra sobre cualquier alfabeto.
101, 0, 00, 01, 10 son palabras sobre Σ = {0, 1}.
1A, 1A1A2B := ∗, := son palabras sobre Σ = {1A, 2B, :=, <>, ∗}.
Ejemplos
Σ = {0, 1}
núm0 (λ) = núm1 (λ) = 0
núm0 (11) = 0, núm1 (11) = 2
núm0 (101001) = núm1 (101001) = 3
Ejemplos
Σ = {0, 1}
núm0 (λ) = núm1 (λ) = 0
núm0 (11) = 0, núm1 (11) = 2
núm0 (101001) = núm1 (101001) = 3
Observación
Para cualesquiera palabras x, y , z definidas sobre un alfabeto Σ:
(xy )z = x(yz) (la concatenación es asociativa).
λx = xλ = x (λ es elemento neutro para la concatenación de
palabras).
Observación
Para cualesquiera palabras x, y , z definidas sobre un alfabeto Σ:
(xy )z = x(yz) (la concatenación es asociativa).
λx = xλ = x (λ es elemento neutro para la concatenación de
palabras).
Observación
|λ| = 0
∀x, y : |xy | = |x| + |y |
Ejemplos
Σ = {0, 1}, x = 101, y = 00
|x| = 3, |y | = 2, xy = 10100, yx = 00101
|xy | = |yx| = |x| + |y | = 5
Σ = {1A, 2B, :=, <>, ∗}, x = 1A, y = 1A1A2B∗
|x| = 1, |y | = 4, xy = 1A1A1A2B∗, yx = 1A1A2B ∗ 1A,
|xy | = |yx| = |x| + |y | = 5.
Observación
|λ| = 0
∀x, y : |xy | = |x| + |y |
Ejemplos
Σ = {0, 1}, x = 101, y = 00
|x| = 3, |y | = 2, xy = 10100, yx = 00101
|xy | = |yx| = |x| + |y | = 5
Σ = {1A, 2B, :=, <>, ∗}, x = 1A, y = 1A1A2B∗
|x| = 1, |y | = 4, xy = 1A1A1A2B∗, yx = 1A1A2B ∗ 1A,
|xy | = |yx| = |x| + |y | = 5.
Observación
|λ| = 0
∀x, y : |xy | = |x| + |y |
Ejemplos
Σ = {0, 1}, x = 101, y = 00
|x| = 3, |y | = 2, xy = 10100, yx = 00101
|xy | = |yx| = |x| + |y | = 5
Σ = {1A, 2B, :=, <>, ∗}, x = 1A, y = 1A1A2B∗
|x| = 1, |y | = 4, xy = 1A1A1A2B∗, yx = 1A1A2B ∗ 1A,
|xy | = |yx| = |x| + |y | = 5.
x0 = λ
∀n ≥ 1 : x n = x....x
| {z }
n veces
Observación
∀n ∈ {0, 1, 2, ...} : λn = λ
∀x, ∀n, m ∈ {0, 1, 2, ...} : x n x m = x n+m
∀x, ∀n ∈ {0, 1, 2, ...} : |x n | = n|x|
Ejemplos
Con Σ = {0, 1} y x = 10:
x 0 = λ, x 1 = 10, x 2 = 1010, x 3 = 101010.
Ingeniería Informática (URJC) TALF 9 / 27
LENGUAJES FORMALES Alfabetos y Palabras
x0 = λ
∀n ≥ 1 : x n = x....x
| {z }
n veces
Observación
∀n ∈ {0, 1, 2, ...} : λn = λ
∀x, ∀n, m ∈ {0, 1, 2, ...} : x n x m = x n+m
∀x, ∀n ∈ {0, 1, 2, ...} : |x n | = n|x|
Ejemplos
Con Σ = {0, 1} y x = 10:
x 0 = λ, x 1 = 10, x 2 = 1010, x 3 = 101010.
Ingeniería Informática (URJC) TALF 9 / 27
LENGUAJES FORMALES Alfabetos y Palabras
x0 = λ
∀n ≥ 1 : x n = x....x
| {z }
n veces
Observación
∀n ∈ {0, 1, 2, ...} : λn = λ
∀x, ∀n, m ∈ {0, 1, 2, ...} : x n x m = x n+m
∀x, ∀n ∈ {0, 1, 2, ...} : |x n | = n|x|
Ejemplos
Con Σ = {0, 1} y x = 10:
x 0 = λ, x 1 = 10, x 2 = 1010, x 3 = 101010.
Ingeniería Informática (URJC) TALF 9 / 27
LENGUAJES FORMALES Alfabetos y Palabras
x = λ ⇒ x −1 = λ
x = a1 a2 . . . an ⇒ x −1 = an . . . a2 a1
Observación
∀x : |x −1 | = |x|
∀x, y : (xy )−1 = y −1 x −1
Ejemplos
Con Σ = {0, 1}: si x = 1010, entonces x −1 = 0101.
Con Σ = {1A, 2B, :=, <>, ∗}: si x = 1A2B, entonces x −1 = 2B1A.
x = λ ⇒ x −1 = λ
x = a1 a2 . . . an ⇒ x −1 = an . . . a2 a1
Observación
∀x : |x −1 | = |x|
∀x, y : (xy )−1 = y −1 x −1
Ejemplos
Con Σ = {0, 1}: si x = 1010, entonces x −1 = 0101.
Con Σ = {1A, 2B, :=, <>, ∗}: si x = 1A2B, entonces x −1 = 2B1A.
x = λ ⇒ x −1 = λ
x = a1 a2 . . . an ⇒ x −1 = an . . . a2 a1
Observación
∀x : |x −1 | = |x|
∀x, y : (xy )−1 = y −1 x −1
Ejemplos
Con Σ = {0, 1}: si x = 1010, entonces x −1 = 0101.
Con Σ = {1A, 2B, :=, <>, ∗}: si x = 1A2B, entonces x −1 = 2B1A.
Observación
Para cualquier alfabeto Σ:
λ ∈ Σ∗ .
Σ∗ es un conjunto infinito.
Observación
Para cualquier alfabeto Σ:
λ ∈ Σ∗ .
Σ∗ es un conjunto infinito.
Observación
Para cualquier alfabeto Σ:
λ ∈ Σ∗ .
Σ∗ es un conjunto infinito.
Ejemplos
Si Σ = {0}, Σ∗ = {λ, 0, 00, 000, ...} y Σ+ = {0, 00, 000, ...}.
Si Σ = {a, b}, Σ∗ = {λ, a, b, aa, ab, ba, bb, aaa, aab, ...} y
Σ+ = {a, b, aa, ab, ba, bb, aaa, aab, ...}.
Observación
Para cualquier alfabeto Σ:
L = ∅ = {} y L = {λ} son lenguajes (distintos) sobre Σ.
Σ, Σ∗ y Σ+ son casos particulares de lenguajes sobre Σ.
Los lenguajes sobre Σ pueden ser tanto finitos como infinitos.
Ingeniería Informática (URJC) TALF 12 / 27
LENGUAJES FORMALES Lenguajes
Ejemplos
Si Σ = {0}, Σ∗ = {λ, 0, 00, 000, ...} y Σ+ = {0, 00, 000, ...}.
Si Σ = {a, b}, Σ∗ = {λ, a, b, aa, ab, ba, bb, aaa, aab, ...} y
Σ+ = {a, b, aa, ab, ba, bb, aaa, aab, ...}.
Observación
Para cualquier alfabeto Σ:
L = ∅ = {} y L = {λ} son lenguajes (distintos) sobre Σ.
Σ, Σ∗ y Σ+ son casos particulares de lenguajes sobre Σ.
Los lenguajes sobre Σ pueden ser tanto finitos como infinitos.
Ingeniería Informática (URJC) TALF 12 / 27
LENGUAJES FORMALES Lenguajes
Ejemplos
Los siguientes conjuntos son lenguajes sobre Σ = {a, b}:
L = {} = ∅ (lenguaje vacío: no contiene ninguna palabra).
L = {λ} (lenguaje que contiene sólo la palabra vacía).
L = {a, b} ( L = Σ)
L = {λ, a, aa, ab}
L = {a, aa, aaa, aaaa, ....} = {an : n ≥ 1}.
L = {λ, a, aa, aaa, aaaa, ....} = {x ∈ Σ∗ : númb (x) = 0} =
{an : n ≥ 0}.
L = {λ, a, b, aa, ab, ba, bb} = {x ∈Σ∗ : |x| ≤ 2}.
L = {λ, ab, aabb, aaabbb, aaaabbbb, ....} = {an bn : n ≥ 0}.
L = {abab, ababab, abababab, ...} = {(ab)n : n ≥ 2}
L = {λ, aa, aaaa, aaaaaa, ...} = {an : n par} = {a2n : n ≥ 0}
L = {a, aaa, aaaaa, ...} = {an : n impar} = {a2n+1 : n ≥ 0}.
Unión L1 ∪ L2 = {x ∈ Σ∗ : x ∈ L1 o x ∈ L2 }
Intersección L1 ∩ L2 = {x ∈ Σ∗ : x ∈ L1 y x ∈ L2 }
Diferencia L1 − L2 = {x ∈ Σ∗ : x ∈ L1 y x ∈
/ L2 }
Complemento ∗
L1 = {x ∈ Σ : x ∈ ∗
/ L1 } = Σ − L1
Unión L1 ∪ L2 = {x ∈ Σ∗ : x ∈ L1 o x ∈ L2 }
Intersección L1 ∩ L2 = {x ∈ Σ∗ : x ∈ L1 y x ∈ L2 }
Diferencia L1 − L2 = {x ∈ Σ∗ : x ∈ L1 y x ∈
/ L2 }
Complemento ∗
L1 = {x ∈ Σ : x ∈ ∗
/ L1 } = Σ − L1
L−1 = {x −1 : x ∈ L}
Ejemplos
Con Σ = {a, b}:
Si L = ∅, entonces L−1 = ∅
Si L = {λ}, entonces L−1 = {λ}
Si L = {a, b}, entonces L−1 = {a, b} = L
Si L = {λ, ab, ba}, entonces L−1 = {λ, ba, ab} = L
Si L = {a, b, aa, ab}, entonces L−1 = {a, b, aa, ba}
Si L = {an : n ≥ 1}, entonces L−1 = L
Ingeniería Informátican(URJC)
n TALF L−1 = {b n an : n ≥ 0}
Si L = {a b : n ≥ 0}, entonces 15 / 27
LENGUAJES FORMALES Lenguajes
L−1 = {x −1 : x ∈ L}
Ejemplos
Con Σ = {a, b}:
Si L = ∅, entonces L−1 = ∅
Si L = {λ}, entonces L−1 = {λ}
Si L = {a, b}, entonces L−1 = {a, b} = L
Si L = {λ, ab, ba}, entonces L−1 = {λ, ba, ab} = L
Si L = {a, b, aa, ab}, entonces L−1 = {a, b, aa, ba}
Si L = {an : n ≥ 1}, entonces L−1 = L
Ingeniería Informátican(URJC)
n TALF L−1 = {b n an : n ≥ 0}
Si L = {a b : n ≥ 0}, entonces 15 / 27
LENGUAJES FORMALES Lenguajes
GRAMÁTICAS FORMALES
Motivación
¿Cómo describir lenguajes?
Para poder estudiar los lenguajes rigurosamente es necesario
disponer de mecanismos adecuados para describirlos.
Mecanismos utilizados hasta el momento:
Enumeración de los elementos del conjunto:
L = {a, aa, aaa, aaaa, ....}
Descripción en lenguaje natural: L = {w ∈ Σ∗ :
w está construida exclusivamente mediante el símbolo a}.
Descripción matemática: L = {an : n ≥ 1} o haciendo uso de
operaciones sobre lenguajes (unión, concatenación, potencia,
cierre, inversión, etc).
Los mecanismos anteriores tienen claras limitaciones.
Las gramáticas constituyen otro mecanismo para describir
lenguajes, más potente y en general más adecuado.
Ingeniería Informática (URJC) TALF 17 / 27
GRAMÁTICAS FORMALES Jerarquía de Chomsky
Jerarquía de Chomsky
Jerarquía de Chomsky
AUTÓMATAS
Descripción
Definición (Autómata)
Un autómata es un dispositivo abstracto capaz de producir una
información (salida, output) a partir de una información de partida
(entrada, input).
Componentes de un autómata (1 de 2)
Un dispositivo de entrada conteniendo una secuencia de
símbolos de un cierto alfabeto que el autómata puede leer.
Un dispositivo de salida sobre el que el autómata puede escribir.
Opcionalmente, un dispositivo de almacenamiento auxiliar sobre
el que el autómata puede tanto leer como escribir.
AUTÓMATAS
Descripción
Definición (Autómata)
Un autómata es un dispositivo abstracto capaz de producir una
información (salida, output) a partir de una información de partida
(entrada, input).
Componentes de un autómata (1 de 2)
Un dispositivo de entrada conteniendo una secuencia de
símbolos de un cierto alfabeto que el autómata puede leer.
Un dispositivo de salida sobre el que el autómata puede escribir.
Opcionalmente, un dispositivo de almacenamiento auxiliar sobre
el que el autómata puede tanto leer como escribir.
Componentes de un autómata (2 de 2)
Una unidad de control tal que:
en cada momento se encuentra en un cierto estado interno
(disponiendo de un número finito de ellos).
tiene una función de transición que le permite cambiar de estado
interno dependiendo del estado actual, del símbolo leído de la
entrada y de la información guardada en el dispositivo de
almacenamiento.
en cada cambio de estado puede producir una salida o modificar el
dispositivo de almacenamiento.
Componentes de un autómata (2 de 2)
Una unidad de control tal que:
en cada momento se encuentra en un cierto estado interno
(disponiendo de un número finito de ellos).
tiene una función de transición que le permite cambiar de estado
interno dependiendo del estado actual, del símbolo leído de la
entrada y de la información guardada en el dispositivo de
almacenamiento.
en cada cambio de estado puede producir una salida o modificar el
dispositivo de almacenamiento.
Clases de Autómatas
1 Autómatas transductores.
Autómatas a pila
Cuentan con un disp. de almacenamiento de tipo pila (LIFO).
Los aceptadores son capaces de reconocer lenguajes
independientes del contexto (tipo 2).
Su principal aplicación es la construcción de analizadores
sintácticos de lenguajes de programación.
Ingeniería Informática (URJC) TALF 23 / 27
AUTÓMATAS Autómatas que se van a estudiar en la asignatura
Autómatas a pila
Cuentan con un disp. de almacenamiento de tipo pila (LIFO).
Los aceptadores son capaces de reconocer lenguajes
independientes del contexto (tipo 2).
Su principal aplicación es la construcción de analizadores
sintácticos de lenguajes de programación.
Ingeniería Informática (URJC) TALF 23 / 27
AUTÓMATAS Autómatas que se van a estudiar en la asignatura
Máquinas de Turing
Son los autómatas más complejos.
Tienen como dispositivo de entrada una cinta infinita.
Pueden escribir sobre la cinta de entrada (se trata de un
dispositivo de entrada/salida).
Pueden moverse por la cinta de entrada en ambas direcciones
(izquierda y derecha).
Los aceptadores son capaces de reconocer lenguajes
recursivamente enumerables (tipo 0).
Constituyen el pilar fundamental de la teoría de la
computabilidad: un problema es computable si existe una
máquina de Turing capaz de resolverlo.
Observación
Los autómatas linealmente acotados, correspondientes a los
lenguajes dependientes del contexto (tipo 1), quedan fuera del
alcance de esta asignatura.
RESUMEN
Algunas aplicaciones