Está en la página 1de 25

Lenguajes Formales y Autómatas

Profesor: Jorge Osio


CONTENIDO
 [1_1.5]. Lenguajes Formales: características, descripciones,
operaciones, usos [1_8.4]. Conjuntos contables [2_2.4].
Diagonalización [2_2.4]. Límites de la computabilidad
[2_2.4.3].
 1. GERSTING, JUDITH L. “Mathematical Structures
for Computer Science: A Modern Approach to
Discrete Mathematics”. W H Freeman & Co, 2006.
 2. HEIN, JAMES. “Discrete Structures, Logic and
Computability”. Jones and Bartlett Publishers 1995
Lenguajes formales
Definiciones básicas

 Un alfabeto (o vocabulario) Σ es un conjunto finito


no vacío de símbolos.
 Una cadena sobre Σ es una secuencia finita de
símbolos de Σ.
 Σ* es el conjunto de todas las cadenas sobre Σ.
 Un lenguajes sobre Σ es un subconjunto de Σ*.
 Una gramática para un lenguaje puede ser descripta
definiendo su proceso generativo.
Gramática para lenguajes formales
Una gramática estructura de frase
 (tipo 0) es una 4-tupla
 G= (VN, V T, S, P), donde
 VN = conjunto de símbolos no terminales.
 V T = conjunto de símbolos terminales.
 S = símbolo inicial de la gramática.
 P = conjunto finito de producciones de la forma α → β ,
donde α es una cadena sobre VN UV T , (con al menos
un símbolo de VN), y β es una cadena sobre VN UV T.
 (usamos α → λ cuando β es la cadena nula)
Derivaciones
 Sea G=(VN,VT, S, P) y sean w1 y w2 cadenas sobre VN
U V T.
 Decimos que w1 deriva directamente w2, y lo
notamos w1 ⇒ w2 si
 α → β es una producción en P,
 w1 contiene una instancia de α,
 w2 es obtenida a partir de w1 reemplazando esa
instancia de α con β.
Derivaciones
 Si w1,w2,...,wn son cadenas sobre VN UV T y w1 ⇒ w2, w2
⇒ w3,... wn−1 ⇒ wn, entonces w1 genera (deriva) wn,
 Se escribe w1 ⇒+ wn (por convención, w1 ⇒* w1)
Lenguaje formal
 Dada una gramática G, el lenguaje L generado por G,
denotado L(G), es el conjunto L = {w ∈ VT *| S ⇒+ w}.
 En otras palabras, L es el conjunto de todas las cadenas de
símbolos terminales generadas a partir de S.

 Observación: Una vez que una cadena w de símbolos


terminales ha sido obtenida, ninguna producción puede
ser aplicada a w, y w no puede generar otras palabras.
Ejemplo de derivación
 Sea L = {0n1n | n ≥ 1}. Una gramática para L es
G=(VN,VT, S, P) donde VN = {S}, VT = {0, 1}, y P
consiste de las siguientes producciones:
1. S → 0S1
2. S → 01
 Podemos generar 0313 como sigue:
S ⇒ 0S1 (P1)
0S1 ⇒ 00S11 (P1)
00S11 ⇒ 000111 (P2)
Ejemplo de derivación
 Sea L = {anbncn | n ≥ 1}. Una gramática para L es
G=(VN,VT, S, P) donde VN = {S, B, C}, VT = {a, b, c}, y P
consiste de las siguientes producciones:
1. S → aSBC
2. S → aBC
3. CB → BC
4. aB → ab
5. bB → bb
6. bC → bc
7. cC → cc
Ejemplo de derivación
 Podemos generar la cadena a2b2c2 como sigue
S ⇒ aSBC (P1)
aSBC ⇒ aaBCBC (P2)
aaBCBC ⇒ aaBBCC (P3)
aaBBCC ⇒ aabBCC (P4)
aabBCC ⇒ aabbCC (P5)
aabbCC ⇒ aabbcC (P6)
aabbcC ⇒ aabbcc (P7)
Clases de gramática
 Estructura de frase (tipo 0): sin restricciones.
 Sensible al contexto (tipo 1): para cada producción
α→β (excepto S→ λ),
|α| ≤ |β |.
 Libre de contexto (tipo 2): para cada producción
α→β (excepto S→λ),
α∈VN.
 Regular (tipo 3) para cada producción α→β
(excepto S→λ), α ∈ VN y β es de la forma t o tW, donde
t ∈ V T y W ∈ VN.
Gramáticas y lenguajes
 Un lenguaje se dice de tipo N si puede ser generado
por una gramática de tipo N
Dispositivos computacionales
 El dispositivo computacional más general se llama
máquina de Turing y se corresponde con los
lenguajes de tipo 0.
 Los lenguajes reconocidos por máquinas de Turing son
los lenguajes de tipo 0.
 El dispositivo computacional más básico se llama
autómata finito y se corresponde con los lenguajes
de tipo 3.
Dispositivos computacionales
 Existen dispositivos computacionales con capacidad
intermedia entre aquellos reconocidos por autómatas
finitos y máquinas de Turing:
➢ Autómatas a Pila para lenguajes de tipo 2
➢ Máquinas de Turing acotadas linealmente para
lenguajes de tipo 1.
Operaciones sobre lenguajes
 Los lenguajes son conjuntos (finitos o infinitos) de
cadenas y por tal motivo podemos operar sobre ellos:
 Operaciones:
 unión
 intersección
 complemento
 concatenación
 estrella de Kleene
operaciones
 Sean L1 y L2 dos lenguajes sobre un alfabeto Σ :
 L1 ∪ L2 = {w | w ∈ L1 ó w ∈ L2}
 L1 ∩ L2 = {w | w ∈ L1 y w ∈ L2}
 L1’ = {w | w ∈ Σ* y w ∉ L1}
 L1 ° L2 = {w1w2 | w1 ∈ L1 y w2 ∈ L2}
 L1* = {w1w2…wn | wi ∈ L1, n ≥ 0}
Gramáticas regulares
 Las gramáticas regulares sirven para generar:
 Cualquier lenguaje finito (aunque puede volverse una
tarea tediosa).
 Lenguajes infinitos que presentan ciertas regularidades
que pueden ser expresada de manera sencilla utilizando
las llamadas expresiones regulares (como veremos más
adelante)
Gramáticas regulares
 Ejemplos de lenguajes que pueden ser generados por
gramáticas regulares:
 L=∅. El lenguaje vacío.
 L=Σ*. para cualquier Σ. El lenguaje universal.
 L={w| w ∈ {a,b}* donde w tiene m a’s seguidas de n b’s
para m,n ≥0}.
 L={w| w ∈ {0,1}* donde w tiene exactamente tres 0’s y
tres 1’s}.
Gramática libre de contexto
 Las gramáticas libres de contexto tienen ciertas
características destacadas:
 Son sencillas, reemplazan un símbolo por vez.
 Pueden ser utilizadas para describir la sintaxis de los
lenguajes de programación.
 La derivación de una gramática libre de contexto
puede ser vista como un árbol de derivación.
Gramáticas libres de contexto

 Ejemplo de lenguajes que pueden ser generados por


gramáticas libres de contexto:
 Todos los que pueden ser generados por gramáticas
regulares
 L ={anbn| n > 0}
 L={w|w∈{(,)}* donde los paréntesis están balanceados}
 L={w| w ∈{a,b}* y w=wr }.
Observación: Si w = w1w2…wn, wi ∈{a,b}, entonces
wr = wnwn-1…w1
Conjuntos contables
 Sean A y B conjuntos. Si existe una biyección entre A y B
denotaremos este hecho escribiendo
|A| = |B|.
 En este caso diremos que A y B tienen el mismo tamaño o
la misma cardinalidad o que son equipotentes.
Conjuntos contables
 Cardinalidad de un conjunto finito
¿Cuál es la cardinalidad del conjunto A definido como
sigue?
A = {(x + 1)3 | 1 ≤ (x + 1)3 ≤ 3000, x ∈ N}
 Existe una biyección f:{0, 1, . . . , 13} →A
donde f(x) = (x + 1)3. Por lo tanto
|A| = |{0, 1, . . ., 13}|= 14.
Conjunto contable
 Cardinalidad de un conjunto infinito
Sea Impar el conjunto de números naturales impares.
Sea la función f : N → Impar definida como f(x) = 2x + 1.
 Dado que f es una biyección, podemos concluir que el
conjunto Impar y N tienen el mismo tamaño. Es decir,
|Impar| = |N|.
Conjuntos contables
 Un conjunto se dice contable si es finito o si existe una
biyección entre el mismo y N. En el último caso se dice
que el conjunto es infinitamente contable.

 En términos de tamaño decimos que un conjunto S es


contable si |S| = |{0, 1, . . . , n – 1}|
para algún número natural n o |S| = |N|.

 Si un conjunto no es contable, decimos que es


incontable.
Conjuntos contables
 Propiedades de conjuntos contables
a. Todo subconjunto de N es contable.
b. S es contable si y sólo si |S| ≤ |N|.
c. Cualquier subconjunto de un conjunto contable es
contable.
d. Cualquier imagen de un conjunto contable es contable.

También podría gustarte