Tema1 TALF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 50

TEORÍA DE AUTÓMATAS

Y LENGUAJES FORMALES
(TALF)

BLOQUE I: PRELIMINARES

Tema 1: Introducción

Grado en Ingeniería Informática

URJC

Ana Pradera

Ingeniería Informática (URJC) TALF 1 / 27


Contenido
1 INTRODUCCIÓN
2 LENGUAJES FORMALES
Alfabetos y Palabras
Lenguajes
3 GRAMÁTICAS FORMALES
Motivación
Jerarquía de Chomsky
4 AUTÓMATAS
Descripción
Clases de Autómatas
Autómatas que se van a estudiar en la asignatura
5 RESUMEN

Ingeniería Informática (URJC) TALF 2 / 27


INTRODUCCIÓN

INTRODUCCIÓN

Este tema está dedicado a describir los aspectos fundamentales de


los tres conceptos básicos que se van a manejar en la asignatura:
Lenguajes Formales
Son conjuntos de palabras formadas por símbolos de un cierto
alfabeto.

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

Este tema está dedicado a describir los aspectos fundamentales de


los tres conceptos básicos que se van a manejar en la asignatura:
Lenguajes Formales
Son conjuntos de palabras formadas por símbolos de un cierto
alfabeto.

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

Este tema está dedicado a describir los aspectos fundamentales de


los tres conceptos básicos que se van a manejar en la asignatura:
Lenguajes Formales
Son conjuntos de palabras formadas por símbolos de un cierto
alfabeto.

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

Alfabetos y Palabras: conceptos básicos


Definición (Alfabeto)
Un alfabeto es un conjunto finito y no vacío de elementos
denominados símbolos.

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

Alfabetos y Palabras: conceptos básicos


Definición (Alfabeto)
Un alfabeto es un conjunto finito y no vacío de elementos
denominados símbolos.

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

Alfabetos y Palabras: conceptos básicos


Definición (Alfabeto)
Un alfabeto es un conjunto finito y no vacío de elementos
denominados símbolos.

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

Definición (Palabra definida sobre un alfabeto)


Dado un alfabeto Σ, se llama palabra sobre Σ a cualquier secuencia
finita de cero o más símbolos de Σ.

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, :=, <>, ∗}.

Ingeniería Informática (URJC) TALF 5 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Palabra definida sobre un alfabeto)


Dado un alfabeto Σ, se llama palabra sobre Σ a cualquier secuencia
finita de cero o más símbolos de Σ.

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, :=, <>, ∗}.

Ingeniería Informática (URJC) TALF 5 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Palabra definida sobre un alfabeto)


Dado un alfabeto Σ, se llama palabra sobre Σ a cualquier secuencia
finita de cero o más símbolos de Σ.

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, :=, <>, ∗}.

Ingeniería Informática (URJC) TALF 5 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Alfabetos y Palabras: operaciones con palabras


Definición (Apariciones de un símbolo en una palabra)
Dada una palabra x definida sobre un alfabeto Σ, y dado un símbolo
a ∈ Σ, se denota mediante núma (x) (o na (x)) al número de
apariciones del símbolo a en la palabra x.

Ejemplos
Σ = {0, 1}
núm0 (λ) = núm1 (λ) = 0
núm0 (11) = 0, núm1 (11) = 2
núm0 (101001) = núm1 (101001) = 3

Σ = {1A, 2B, :=, <>, ∗}


núm∗ (1A1A2B ∗ 1A) = 1
núm1A (1A1A2B ∗ 1A) = 3.

Ingeniería Informática (URJC) TALF 6 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Alfabetos y Palabras: operaciones con palabras


Definición (Apariciones de un símbolo en una palabra)
Dada una palabra x definida sobre un alfabeto Σ, y dado un símbolo
a ∈ Σ, se denota mediante núma (x) (o na (x)) al número de
apariciones del símbolo a en la palabra x.

Ejemplos
Σ = {0, 1}
núm0 (λ) = núm1 (λ) = 0
núm0 (11) = 0, núm1 (11) = 2
núm0 (101001) = núm1 (101001) = 3

Σ = {1A, 2B, :=, <>, ∗}


núm∗ (1A1A2B ∗ 1A) = 1
núm1A (1A1A2B ∗ 1A) = 3.

Ingeniería Informática (URJC) TALF 6 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Concatenación de dos palabras)


Dadas dos palabras x e y sobre un alfabeto Σ, su concatenación,
denotada mediante xy (o x · y ), es la palabra sobre Σ resultante de
añadir todos los símbolos de y al final de x, es decir:

x = a1 a2 . . . an
⇒ xy = a1 a2 . . . an b1 b2 . . . bm
y = b1 b2 . . . bm

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

Ingeniería Informática (URJC) TALF 7 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Concatenación de dos palabras)


Dadas dos palabras x e y sobre un alfabeto Σ, su concatenación,
denotada mediante xy (o x · y ), es la palabra sobre Σ resultante de
añadir todos los símbolos de y al final de x, es decir:

x = a1 a2 . . . an
⇒ xy = a1 a2 . . . an b1 b2 . . . bm
y = b1 b2 . . . bm

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

Ingeniería Informática (URJC) TALF 7 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Longitud de una palabra)


La longitud de una palabra x sobre Σ se denota mediante |x| y se
define como el número de símbolos de Σ que la componen.

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.

Ingeniería Informática (URJC) TALF 8 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Longitud de una palabra)


La longitud de una palabra x sobre Σ se denota mediante |x| y se
define como el número de símbolos de Σ que la componen.

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.

Ingeniería Informática (URJC) TALF 8 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Longitud de una palabra)


La longitud de una palabra x sobre Σ se denota mediante |x| y se
define como el número de símbolos de Σ que la componen.

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.

Ingeniería Informática (URJC) TALF 8 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Potencia n-ésima de una palabra)


Dada una palabra x sobre un alfabeto Σ y un número natural n
(n ∈ {0, 1, 2, ...}), la potencia n-ésima de x, denotada mediante x n , es
la palabra resultante de concatenar n veces la palabra x:

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

Definición (Potencia n-ésima de una palabra)


Dada una palabra x sobre un alfabeto Σ y un número natural n
(n ∈ {0, 1, 2, ...}), la potencia n-ésima de x, denotada mediante x n , es
la palabra resultante de concatenar n veces la palabra x:

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

Definición (Potencia n-ésima de una palabra)


Dada una palabra x sobre un alfabeto Σ y un número natural n
(n ∈ {0, 1, 2, ...}), la potencia n-ésima de x, denotada mediante x n , es
la palabra resultante de concatenar n veces la palabra x:

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

Definición (Palabra inversa)


Dada una palabra x sobre un alfabeto Σ, su palabra inversa, denotada
mediante x −1 (o x R ), es la palabra obtenida al escribir los símbolos de
x en orden inverso, es decir:

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.

Ingeniería Informática (URJC) TALF 10 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Palabra inversa)


Dada una palabra x sobre un alfabeto Σ, su palabra inversa, denotada
mediante x −1 (o x R ), es la palabra obtenida al escribir los símbolos de
x en orden inverso, es decir:

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.

Ingeniería Informática (URJC) TALF 10 / 27


LENGUAJES FORMALES Alfabetos y Palabras

Definición (Palabra inversa)


Dada una palabra x sobre un alfabeto Σ, su palabra inversa, denotada
mediante x −1 (o x R ), es la palabra obtenida al escribir los símbolos de
x en orden inverso, es decir:

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.

Ingeniería Informática (URJC) TALF 10 / 27


LENGUAJES FORMALES Lenguajes

Lenguajes: conceptos básicos


Definición (Lenguaje universal de un alfabeto)
El lenguaje universal de un alfabeto Σ, denotado mediante Σ∗ o W (Σ),
es el conjunto formado por todas las palabras que se pueden definir
sobre Σ.

Observación
Para cualquier alfabeto Σ:
λ ∈ Σ∗ .
Σ∗ es un conjunto infinito.

Definición (Lenguaje universal positivo de un alfabeto)


El lenguaje universal positivo de un alfabeto Σ, denotado mediante
Σ+ , es el conjunto obtenido al excluir la palabra vacía del lenguaje
universal Σ∗ :
Σ+ = Σ∗ − {λ}
Ingeniería Informática (URJC) TALF 11 / 27
LENGUAJES FORMALES Lenguajes

Lenguajes: conceptos básicos


Definición (Lenguaje universal de un alfabeto)
El lenguaje universal de un alfabeto Σ, denotado mediante Σ∗ o W (Σ),
es el conjunto formado por todas las palabras que se pueden definir
sobre Σ.

Observación
Para cualquier alfabeto Σ:
λ ∈ Σ∗ .
Σ∗ es un conjunto infinito.

Definición (Lenguaje universal positivo de un alfabeto)


El lenguaje universal positivo de un alfabeto Σ, denotado mediante
Σ+ , es el conjunto obtenido al excluir la palabra vacía del lenguaje
universal Σ∗ :
Σ+ = Σ∗ − {λ}
Ingeniería Informática (URJC) TALF 11 / 27
LENGUAJES FORMALES Lenguajes

Lenguajes: conceptos básicos


Definición (Lenguaje universal de un alfabeto)
El lenguaje universal de un alfabeto Σ, denotado mediante Σ∗ o W (Σ),
es el conjunto formado por todas las palabras que se pueden definir
sobre Σ.

Observación
Para cualquier alfabeto Σ:
λ ∈ Σ∗ .
Σ∗ es un conjunto infinito.

Definición (Lenguaje universal positivo de un alfabeto)


El lenguaje universal positivo de un alfabeto Σ, denotado mediante
Σ+ , es el conjunto obtenido al excluir la palabra vacía del lenguaje
universal Σ∗ :
Σ+ = Σ∗ − {λ}
Ingeniería Informática (URJC) TALF 11 / 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, ...}.

Definición (Lenguaje sobre un alfabeto)


Dado un alfabeto Σ, se llama lenguaje sobre Σ a cualquier conjunto
formado por palabras definidas sobre Σ, es decir, a cualquier
subconjunto del lenguaje universal Σ∗ .

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, ...}.

Definición (Lenguaje sobre un alfabeto)


Dado un alfabeto Σ, se llama lenguaje sobre Σ a cualquier conjunto
formado por palabras definidas sobre Σ, es decir, a cualquier
subconjunto del lenguaje universal Σ∗ .

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

Ingeniería Informática (URJC) TALF 13 / 27


LENGUAJES FORMALES Lenguajes

Lenguajes: operaciones con lenguajes

Dado que los lenguajes son subconjuntos de un cierto conjunto


universal (el lenguaje universal, Σ∗ ), se puede realizar con ellos
cualquiera de las operaciones típicas de conjuntos. En particular:

Definición (Operaciones estándar con lenguajes)


Dado un alfabeto Σ y dos lenguajes L1 y L2 sobre Σ, se definen las
siguientes operaciones:

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

Ingeniería Informática (URJC) TALF 14 / 27


LENGUAJES FORMALES Lenguajes

Lenguajes: operaciones con lenguajes

Dado que los lenguajes son subconjuntos de un cierto conjunto


universal (el lenguaje universal, Σ∗ ), se puede realizar con ellos
cualquiera de las operaciones típicas de conjuntos. En particular:

Definición (Operaciones estándar con lenguajes)


Dado un alfabeto Σ y dos lenguajes L1 y L2 sobre Σ, se definen las
siguientes operaciones:

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

Ingeniería Informática (URJC) TALF 14 / 27


LENGUAJES FORMALES Lenguajes

Lenguajes: otras operaciones con lenguajes


Definición (Lenguaje inverso)
Dado un lenguaje L, su lenguaje inverso, denotado mediante L−1 (o
LR ), es el lenguaje formado por todas las palabras inversas a las de L:

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

Lenguajes: otras operaciones con lenguajes


Definición (Lenguaje inverso)
Dado un lenguaje L, su lenguaje inverso, denotado mediante L−1 (o
LR ), es el lenguaje formado por todas las palabras inversas a las de L:

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

Otras operaciones no estrictamente conjuntistas, como la


concatenación, potencia y cierre de lenguajes, se estudiarán más
adelante en el tema de expresiones regulares.

Ingeniería Informática (URJC) TALF 16 / 27


GRAMÁTICAS FORMALES Motivación

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

Chomsky estableció una jerarquía formada por cuatro tipos de


gramáticas, definida en función de las restricciones que se imponen a
sus reglas. Los tipos de gramáticas están numerados de lo más
general (gramáticas de tipo 0) a lo más específico (gramáticas de tipo
3).

Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0

Ingeniería Informática (URJC) TALF 18 / 27


GRAMÁTICAS FORMALES Jerarquía de Chomsky

Jerarquía de Chomsky

Chomsky estableció una jerarquía formada por cuatro tipos de


gramáticas, definida en función de las restricciones que se imponen a
sus reglas. Los tipos de gramáticas están numerados de lo más
general (gramáticas de tipo 0) a lo más específico (gramáticas de tipo
3).

Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0

Ingeniería Informática (URJC) TALF 18 / 27


AUTÓMATAS Descripción

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.

Ingeniería Informática (URJC) TALF 19 / 27


AUTÓMATAS Descripción

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.

Ingeniería Informática (URJC) TALF 19 / 27


AUTÓMATAS Descripción

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.

Los autómatas se diferencian unos de otros dependiendo,


fundamentalmente, de:
El tipo de acceso al dispositivo de entrada.
La forma en que producen la salida.
Si tienen o no dispositivo de almacenamiento auxiliar, y, en caso
afirmativo, de qué tipo de dispositivo se trata.
Ingeniería Informática (URJC) TALF 20 / 27
AUTÓMATAS Descripción

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.

Los autómatas se diferencian unos de otros dependiendo,


fundamentalmente, de:
El tipo de acceso al dispositivo de entrada.
La forma en que producen la salida.
Si tienen o no dispositivo de almacenamiento auxiliar, y, en caso
afirmativo, de qué tipo de dispositivo se trata.
Ingeniería Informática (URJC) TALF 20 / 27
AUTÓMATAS Clases de Autómatas

Clases de Autómatas

Existen dos clases básicas de autómatas:

1 Autómatas transductores.

Son los más generales, capaces de producir palabras como


salida.

2 Autómatas aceptadores o reconocedores.

Son aquellos cuya salida es un valor booleano (cierto/falso) que


indica si se acepta o no la entrada recibida.

Ingeniería Informática (URJC) TALF 21 / 27


AUTÓMATAS Clases de Autómatas

Los autómatas pueden ser tanto deterministas como no deterministas:

Definición (Autómatas deterministas/no deterministas)


Se dice que un autómata es determinista cuando el paso de un
estado interno al siguiente siempre está unívocamente
determinado por el estado actual, la entrada y la información
almacenada en el dispositivo de almacenamiento.

Se dice que un autómata es no determinista en caso contrario, es


decir, cuando para un mismo estado interno, misma entrada y
misma información en el dispositivo de almacenamiento puedan
existir varios estados siguientes posibles.

Ingeniería Informática (URJC) TALF 22 / 27


AUTÓMATAS Autómatas que se van a estudiar en la asignatura

Autómatas que se van a estudiar en la asignatura


Autómatas finitos
Son los autómatas más sencillos.
Carecen de dispositivo de almacenamiento auxiliar.
Los aceptadores son capaces de reconocer lenguajes regulares
(tipo 3).
Tienen muchas aplicaciones prácticas: diseño de circuitos,
análisis léxico, reconocimiento de patrones, control industrial, etc.

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 que se van a estudiar en la asignatura


Autómatas finitos
Son los autómatas más sencillos.
Carecen de dispositivo de almacenamiento auxiliar.
Los aceptadores son capaces de reconocer lenguajes regulares
(tipo 3).
Tienen muchas aplicaciones prácticas: diseño de circuitos,
análisis léxico, reconocimiento de patrones, control industrial, etc.

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.

Ingeniería Informática (URJC) TALF 24 / 27


AUTÓMATAS Autómatas que se van a estudiar en la asignatura

Observación
Los autómatas linealmente acotados, correspondientes a los
lenguajes dependientes del contexto (tipo 1), quedan fuera del
alcance de esta asignatura.

Son similares a las máquinas de Turing, con la restricción de que la


máquina puede utilizar exclusivamente la parte de la cinta en la que se
encuentra la palabra de entrada.

Ingeniería Informática (URJC) TALF 25 / 27


RESUMEN

RESUMEN

Relación entre Lenguajes, Gramáticas y Autómatas

La siguiente tabla resume la equivalencia entre la jerarquía de


gramáticas y lenguajes de Chomsky y los autómatas asociados:
GRAMÁTICAS LENGUAJES AUTÓMATAS
Tipo 3 Regulares Autómatas finitos
Independientes
Tipo 2 Autómatas a pila
del contexto
Dependientes Autómatas linealmente
Tipo 1
del contexto acotados
Recursivamente
Tipo 0 Máquinas de Turing
enumerables
Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0

Ingeniería Informática (URJC) TALF 26 / 27


RESUMEN

Algunas aplicaciones

LENGUAJES (AUTÓMATAS) APLICACIONES


Analizadores léxicos,
Reconocimiento de patrones,
Tipo 3
Procesamiento leng. natural,
Regulares
Análisis y diseño OO,
(Autómatas finitos)
Control,
etc
Tipo 2 Analizadores sintácticos
Independientes del contexto (lenguajes de programación,
(Autómatas a pila) XML)
Tipo 0
Teoría de la computabilidad,
Recursivamente enumerables
Teoría de la complejidad
(Máquinas de Turing)

Ingeniería Informática (URJC) TALF 27 / 27

You might also like