Sunteți pe pagina 1din 61

Escuela de Ingenierı́a Civil Informática

Facultad de Ingenierı́a

Lenguajes y Autómatas
Capı́tulo II: Lenguajes libres de contexto y autómatas de pila

Fabián Riquelme Csori


fabian.riquelme@uv.cl

2018-II

1
Lenguajes libres de contexto
Autómatas de pila

Index

Lenguajes libres de contexto


Gramáticas libres de contexto
Árboles de derivación

Autómatas de pila
Autómatas de pila
Conversión de CFG a PDA
Teorema del bombeo

2
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Gramáticas libres de contexto (CFG)


Recordemos que la gramática de un lenguaje formal es una serie de
reglas de derivación, producción o reescritura formadas por:
I sı́mbolos terminales: pertenecen al alfabeto Σ y forman la
cadena final.
I sı́mbolos no terminales: se pueden reescribir como otros y no
pueden aparecer en la cadena final.
I sı́mbolo inicial: es de donde parten todas las derivaciones y
genera cualquier secuencia de sı́mbolos terminales.

Una gramática libre de contexto (CFG) tiene reglas de producción


de la forma:
A→γ
donde γ es cualquier combinación de sı́mbolos terminales y no
terminales (a la izquierda siempre va un no terminal).
3
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Gramáticas libres de contexto (CFG)

Ejemplo
Consideremos las siguientes reglas:

S −→ aSb
S −→ ε

I S es el sı́mbolo no terminal inicial y {a, b} son los sı́mbolos


terminales.
I Esta gramática genera el lenguaje libre de contexto
L = {an b n | n ≥ 0}, el cual no es regular.

4
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Gramáticas libres de contexto (CFG)

Una gramática libre de contexto (CFG) es una tupla


G = (V , Σ, R, S) donde
1. V es un conjunto finito de sı́mbolos no terminales.
2. Σ es un conjunto finito de sı́mbolos terminales, V ∩ Σ = ∅.
3. S ∈ V es el sı́mbolo inicial.
4. R ⊂ V × (V ∪ Σ)∗ son las reglas de derivación
(conjunto finito).
Escribiremos las reglas de R como A −→ γ en vez de (A, γ).

5
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Gramáticas libres de contexto (CFG)

Dada una CFG G = (V , Σ, R, S) , la relación “lleva un paso”


=⇒G ⊆ (V ∪ Σ)∗ × (V ∪ Σ)∗ se define como

∀x, y ∀A −→ z ∈ R, xAy =⇒G xzy

La relación “lleva en cero o más pasos” =⇒∗G es la clausura


reflexiva y transitiva de =⇒G .

Note que se puede “llevar en cero o más pasos” a una secuencia


que aún tiene sı́mbolos no terminales. Las derivaciones que
interesan son las que llevan del sı́mbolo inicial a secuencias de
sı́mbolos terminales.

6
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Lenguajes libres de contexto (CFL)

Dada una CFG G = (V , Σ, R, S) se define el lenguaje generado por


G , L(G ) como

L(G ) = {w ∈ Σ∗ | S =⇒∗G w }

Un lenguaje libre de contexto (CFL) es un lenguaje L tal que existe


una CFG G con L = L(G ).

7
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo
CFG que describe las secuencias de paréntesis bien balanceados:

S −→ (S)S
S −→ ε

Formalmente:
I V = {S}
I Σ = {(, )}
I R = {(S, (S)S), (S, ε)}

Una derivación de la cadena (())() a partir de S puede ser:


S =⇒ (S)S =⇒ ((S)S)S =⇒ (()S)S =⇒ (())S
(())S =⇒ (())(S)S =⇒ (())()S =⇒ (())()

8
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejercicio
Sea la siguiente CFG G = (V , Σ, R, S) :

P −→ ε
P −→ 0
P −→ 1
P −→ 0P0
P −→ 1P1

I Defina formalmente la CFG.


I ¿Pertenece la cadena 001100 al lenguaje generado?
I ¿Cuál es el lenguaje que describe esta gramática?

9
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo
Estudiemos un ejemplo más complicado: la simplificación de las
expresiones de un lenguaje de programación tı́pico.
I Primero nos limitamos a los operadores + y ∗. Establecemos
que los argumentos son identificadores, y sólo se permite las
letras a y b y los digı́tos 0 y 1.
I Todo identificador debe comenzar por a o por b y deberá ir
seguido por cualquier cadena perteneciente a {a, b, 0, 1}∗ .
I En esta gramática necesitamos dos variables:
I E , que representa expresiones.
I I , que representa los identificadores.
I Formalmente la gramática viene dada por:
I V = {E , I }
I Σ = {+, ∗, a, b, 0, 1, (, )}
I R el conjunto de las producciones:
10
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)
E −→ I
E −→ E + E
E −→ E ∗ E
E −→ (E )
I −→ a
I −→ b
I −→ Ia
I −→ Ib
I −→ I 0
I −→ I 1

Determine una derivación para a ∗ (a + b00).


11
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)
Las producciones se pueden compactar:

E −→ I | E + E | E ∗ E | (E )
I −→ a | b | Ia | Ib | I 0 | I 1

I Derivación más a la izquierda:


=⇒ (un paso) , =⇒∗ (cero o más pasos)
lm lm
se reemplaza la variable que se encuentre más a la izquierda
por una de las producciones.
I Derivación más a la derecha:
=⇒ (un paso) , =⇒∗ (cero o más pasos)
rm rm
se reemplaza la variable que se encuentre más a la derecha
por una de las producciones.
12
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)
Ejemplo derivación más a la izquierda para la cadena a ∗ (a + b00)

E =⇒ E ∗ E =⇒ I ∗ E =⇒ a ∗ E =⇒ a ∗ (E ) =⇒ a ∗ (E + E )
lm lm lm lm lm
a ∗ (E + E ) =⇒ a ∗ (I + E ) =⇒ a ∗ (a + E ) =⇒ a ∗ (a + I )
lm lm lm
a ∗ (a + I ) =⇒ a ∗ (a + I 0) =⇒ a ∗ (a + I 00) =⇒ a ∗ (a + b00)
lm lm lm

I ¿Cómo serı́a la derivación más a la derecha para la misma


cadena a ∗ (a + b00)?
I Determine la derivación más a la izquierda y más a la derecha
para la cadena b1 ∗ (b0 + a1 + b).
I Determine la derivación más a la izquierda y más a la derecha
para la cadena (b + a1) ∗ (b + a0).
13
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo
Diseñar una CFG G = (V , Σ, R, S) para el lenguaje
{ai b j c k | i 6= j ∨ j 6= k}, es decir, el conjunto de cadenas
formadas por las letras a seguidas de letras b seguidas de letras c,
tales que existe un número distinto de letras a que de letras b o un
número distinto de letras b que de letras c, o ambos casos.
La gramática viene dada por:

S −→ AB | CD
A −→ aA | ε
B −→ bBc | E | cD
C −→ aCb | E | aA
D −→ cD | ε
E −→ bE | b
14
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)

I A genera cero o más a’s.


I D genera cero o más c’s.
I E genera una o más b’s.
I B primero genera cantidades iguales de b’s y de c’s, luego
produce una o más b’s (mediante E ) o uno o más c’s
(mediante D). Entonces, B genera cadenas b ∗ c ∗ con número
distinto de b’s y de c’s.
I Similarmente, C genera número distinto de a’s y de b’s.
I Finalmente, AB genera cadenas a∗ b ∗ c ∗ con distinto número
de b’s y de c’s, mientras que CD genera cadenas a∗ b ∗ c ∗ con
distinto número de a’s y de b’s.

15
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo

La siguiente gramática genera el lenguaje representado por la


expresión regular 0∗ 1(0 + 1)∗ :

S −→ A1B
A −→ 0A | ε
B −→ 0B | 1B | ε

16
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejercicios

Construya una CFG para los siguientes lenguajes:


1. {am b n : m ≥ n}
2. {am b n c p d q : m + n = p + q}
3. {u a w b : u, w ∈ {a, b}∗ , |u| = |w |}

Sea G = ({S}, {a, b}, R, S), con


R = {S −→ aSa, S −→ aSb, S −→ bSa, S −→ bSb, S −→ ε}.
Demuestre que L(G ) es regular.

17
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

¡Gracias!

18
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Teorı́a de compiladores

19
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Teorı́a de compiladores

20
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Teorı́a de compiladores

21
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Teorı́a de compiladores

22
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Árboles de derivación

Sea G = (V , Σ, R, S) una gramática. Los árboles de derivación o


parseo para G son aquellos árboles que cumplen con:
1. Cada nodo interior está etiquetado con una variable de V .
2. Cada hoja está etiquetada con una variable, un sı́mbolo
terminal o ε. Si la hoja está etiquetada con ε, entonces tiene
que ser el único hijo.
3. Si un nodo interior está etiquetado como A y sus hijos están
etiquetados como:
X1 , X2 , ..., Xk
respectivamente, comenzando por la izquierda, entonces
A −→ X1 X2 · · · Xk es una producción de R.

23
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo
Árbol de derivación para I + E
1. E −→ I
2. E −→ E + E E
3. E −→ E ∗ E
4. E −→ (E )
E + E
5. I −→ a
6. I −→ b
7. I −→ Ia
8. I −→ Ib I
9. I −→ I 0 Determine un árbol de derivación
para a ∗ (a + b00)
5. I −→ I 1
24
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo
Árbol de derivación para
P −→ 0110

P −→ ε
P −→ 0 0 P 0
P −→ 1
P −→ 0P0
P −→ 1P1 1 P 1

25
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Gramáticas ambiguas
Una CFG G = (V , Σ, R, S) es ambigua si existen dos árboles de
derivación distintos para G que generan una misma cadena
w ∈ L(G ).

Ejemplo
Considere la siguiente gramática para subconjuntos de expresiones
aritméticas correctas:
E −→ E +E N −→ D
E −→ E ∗E N −→ DN
E −→ (E ) D −→ 0
E −→ N D −→ ...
D −→ 9

donde V = {E , N, D}, S = E , Σ = {(, ), +, ∗, 0, ..., 9}.


26
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)
Árboles de derivación para 2 + 3 ∗ 5
E
E

E + E
E ∗ E

N E ∗ E
E + E N

D N N
N N D

2 D D
D D 5

3 5
2 3

27
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Semántica y compiladores

I Lo normal es asignar semántica a una expresión a partir de su


árbol de derivación.
I En el ejemplo anterior, el resultado de la expresión anterior
puede ser 25 o 17.
I Cuando se tiene una gramática ambigua, podemos intentar
desambiguarla.
I La idea es escribir otra gramática, que genere el mismo
lenguaje, pero que no sea ambigua.

28
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)
Verifiquemos ahora la cadena 2 + 3 ∗ 5
E
E −→ E + T
E −→ T
E + T
T −→ T ∗ F
T −→ F 2 T ∗ F

F −→ (E )
F −→ N F N

N −→ D
N D
N −→ DN
D −→ 0 D 5
D −→ ...
D −→ 9 3

29
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo

Considere la gramática

S −→ aS | aSbS | ε

Esta gramática es ambigua.


Demuestre que la cadena aab tiene dos:
I Árboles de derivación.
I Derivaciones más a la izquierda.
I Derivaciones más a la derecha.
Determine una gramática no ambigua para este lenguaje.

30
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)

Árboles de derivación para aab

S
S

a S
a S b S

a S b S
a S ε

ε ε
ε

31
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejemplo (cont.)
Derivaciones más a la izquierda:
I S =⇒ aS =⇒ aaSbS =⇒ aabS =⇒ aab
lm lm lm lm
I S =⇒ aSbS =⇒ aaSbS =⇒ aabS =⇒ aab
lm lm lm lm

Derivaciones más a la derecha:


I S =⇒ aS =⇒ aaSbS =⇒ aaSb =⇒ aab
rm rm rm rm
I S =⇒ aSbS =⇒ aSb =⇒ aaSb =⇒ aab
rm rm rm rm

Gramática no ambigua

S −→ aS | aTbS | ε
T −→ aTbT | ε

32
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Ejercicio

Sea la gramática:

S −→ A1B
A −→ 0A | ε
B −→ 0B | 1B | ε

Determine una gramática para el mismo lenguaje que sea ambigua.

33
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

Lenguaje regular ⇒ Libre de contexto


Teorema
Si L ⊆ Σ∗ es un lenguaje regular, entonces L es libre del contexto.
Demostración.
I Si L = ∅, la CFG G = ({S}, Σ, ∅, S) genera L.
I Si L = {a}, la CFG G = ({S}, Σ, {S −→ a}, S) genera L.
I Si L = L1 ∪ L2 y tenemos dos CFG G1 = (V1 , Σ, R1 , S1 ) y
G2 = (V2 , Σ, R2 , S2 ) que generan L1 y L2 respectivamente, entonces
G = (V1 ∪ V2 ∪ {S}, Σ, R1 ∪ R2 ∪ {S −→ S1 , S −→ S2 }, S) genera L.
I Si L = L1 · L2 y tenemos dos CFG G1 = (V1 , Σ, R1 , S1 ) y
G2 = (V2 , Σ, R2 , S2 ) que generan L1 y L2 respectivamente, entonces
G = (V1 ∪ V2 ∪ {S}, Σ, R1 ∪ R2 ∪ {S −→ S1 S2 }, S) genera L.
I Si L = L∗1 y una CFG G1 = (V1 , Σ, R1 , S1 ) genera L1 , entonces
G = (V1 ∪ {S}, Σ, R1 ∪ {S −→ S1 S, S −→ ε}, S) genera L. 
34
Fabián Riquelme Csori Lenguajes y Autómatas
Lenguajes libres de contexto Gramáticas libres de contexto
Autómatas de pila Árboles de derivación

¡Gracias!

35
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Introducción

I Lenguajes regulares: RE, DFA y NFA


I Leguajes libres del contexto: CFG y PDA
I Los autómatas de pila (PDA, del inglés pushdown automata)
son extensiones de los NFA, que pueden almacenar una
cantidad arbitraria de sı́mbolos en una pila.
I Las transiciones involucran no sólo condiciones sobre la
cadena de entrada, sino también sobre los sı́mbolos que hay
en el tope de la pila.

36
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo

a, /# b, #/

b, #/
Inicio q0 q1

I a, /#: al leerse una a, independiente de los caracteres que


haya en el tope de la pila ( ), se apilará un sı́mbolo #.
I b, #/ : al leerse una b, si hay un sı́mbolo # en el tope de la
pila, se desapilará.
I El PDA aceptará una cadena si se encuentra en un estado final
habiendo consumido toda la cadena y la pila quedando vacı́a.
I ¿Qué lenguaje acepta este PDA?
37
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo
Construyamos un PDA que reconozca las cadenas

{wcw R | w ∈ {a, b}∗ }

donde w R es la cadena w pero escrita al revés.

a, /a a, a/

c, /
Inicio q0 q1

b, /b b, b/

¿Cómo podemos ahora aceptar el lenguaje {ww R | w ∈ {a, b}∗ }?


38
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo (cont.)

{ww R | w ∈ {a, b}∗ }

a, /a a, a/

ε, /
Inicio q0 q1

b, /b b, b/

Simplemente, explotamos el no determinismo intrı́nseco de los


PDA. Ası́ el autómata adivina qué transición elegir, es decir,
cuándo comenzar a desapilar, tal como lo hacı́an los NFA’s.
39
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo

Consideremos la siguiente gramática:

S −→ ε | aSbS | bSaS

la cual genera el lenguaje de todas las cadenas de igual número de


a’s y b’s.
Construyamos un PDA para este lenguaje es relativamente sencillo,
ya que en la pila se almacena el exceso de a’s sobre b’s o viceversa.

40
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo (cont.)

a, b/
a, b/ a, a/a
a, /a a, Z /a

ε, /Z ε, Z /
Inicio q0 Inicio q0 q1 q2

b, a/ b, a/
b, /b b, b/b
b, Z /b

41
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Autómatas de pila

Un autómata de pila (PDA) es una tupla P = (Q, Σ, Γ, ∆, s, F )


tal que:
I Q es un conjunto finito de estados.
I Σ es un alfabeto finito.
I Γ es el alfabeto de la pila, finito.
I s ∈ Q, es el estado inicial.
I F ⊆ Q son los estados finales.
I ∆ ⊆ (Q × Σ∗ × Γ∗ ) × (Q × Γ∗ ), conjunto finito de transiciones.

42
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo

Q = {q0 , q1 }
Σ = {a, b}
a, /a a, a/ Γ = {a, b}
s = q0
ε, / F = {q1 }
Inicio q0 q1
∆ = {((q0 , a, ε), (q0 , a)),
((q0 , b, ε), (q0 , b)),
b, /b b, b/ ((q0 , ε, ε), (q1 , ε)),
((q1 , a, a), (q1 , ε)),
((q1 , b, b), (q1 , ε))}

43
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Configuraciones

Una configuración de un PDA P = (Q, Σ, Γ, ∆, s, F ) es un


elemento de CP = Q × Σ∗ × Γ∗ .
La configuración (q, x, γ) indica que P está en el estado q, le falta
leer la cadena x de la entrada, y el contenido de la pila es γ.

La relación “lleva en un paso”, `P ⊆ CP × CP se define como:

(q, xy , αγ) `P (q 0 , y , βγ) ⇐⇒ ((q, x, α), (q 0 , β))

La relación “lleva en cero o más pasos” `∗P es la clausura reflexiva


y transitiva de `P .

44
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Lenguajes libres de contexto


El lenguaje aceptado por un PDA P = (Q, Σ, Γ, ∆, s, F ) es:

L(P) = {x ∈ Σ∗ | ∃f ∈ F , (s, x, ε) `∗P (f , ε, ε)}

Ejemplo Q = {q0 , q1 }
Σ = {a, b}
a, /a a, a/ Γ = {a, b}
s = q0
ε, / F = {q1 }
Inicio q0 q1
∆ = {((q0 , a, ε), (q0 , a),
((q0 , b, ε), (q0 , b),
b, /b b, b/ ((q0 , ε, ε), (q1 , ε),
((q1 , a, a), (q1 , ε),
((q1 , b, b), (q1 , ε)}
45
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo

Desarrollemos un PDA que acepte el conjunto de todas las cadenas


con doble de ceros que de unos.
Comencemos con un PDA para el lenguaje {0n 1n | n ≥ 1}

0, 0/0
0, Z /0 1, 0/

ε, /Z 1, 0/ ε, Z /
Inicio q0 q1 q2 q3

En este caso no utilizamos un contador #, simplemente apilamos


los ceros y luego desapilamos los ceros ya almacenados cuando
comiencen a aparecer los unos.

46
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo (cont.)

Sigamos ahora con un PDA para el lenguaje {02n 1n | n ≥ 1}

0, 0/0
0, Z /0

ε, /Z
Inicio q0 q1 q4

1, 0/ ε, Z /
ε, 0/
q2 q3

1, 0/

47
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo (cont.)
Finalmente un PDA para cadenas w con doble ceros que de unos
(sin importar el orden) donde w ∈ {0, 1}∗
0, Z /0
0, 0/0
ε, Z /

1, 0/
Inicio q0 q2 q4 q6

ε, 0/
/0
ε, /Z ,Z 1, Z /1 0, ε, Z /1
0
Z Z/
/0 ε,
ε, 1/1

q1 q3 q5
1, Z /1

1, Z /1
1, 1/1
0, 1/

48
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejercicios

Construya los siguientes PDA:


1. {an b m an | m ≥ 0, n ≥ 0}
2. {ai b j c k | i, j, k ≥ 0, i + j = k}
3. {an b m c m | m ≥ 0, n ≥ 0}
4. {0m 1m 2n | n ≥ 1 , m ≥ 0 }
5. {12n 0m 2n | n > 0, m ≥ 0}
6. {an b m c m d n | n > 0, m ≥ 0}
7. {(ab)i c i aj | i, j ≥ 1}
8. {an b 2n+2 | n ≥ 0}
9. {ai b j c k | i = j ∨ j = k}

49
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

¡Gracias!

50
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Conversión CFG → PDA


Sea G = (V , Σ, R, S) una CFG, podemos definir
PDA(A) = (Q, Σ, Γ, ∆, s, F ) de la siguiente manera:
I Q = {s, f } (i.e. el PDA tiene sólo dos estados)

I Γ = V ∪ Σ (podemos apilar sı́mbolos terminales y no terminales)

I F = {f }, y

∆ = {((s, ε, ε), (f , S))


∪{((f , a, a), (f , ε)), a ∈ Σ}
∪{((f , ε, A), (f , z)), A −→ z ∈ R}}
Observaciones:
I PDA(G ) mantiene apilado lo que aún espera leer.
I Bastan dos estados para simular cualquier CFG ⇒ los estados no
son lo importante de la memoria de un PDA, sino su pila.
51
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo
Sea la CFG S −→ aSb | ε, donde S es el sı́mbolo no terminal y
Σ = {a, b} los sı́mbolos terminales. Las cadenas que se pueden
generar con esta CFG forman el conjunto {an b n | n ≥ 0}

a, a/
b, b/

ε, /S
Inicio q0 q1

ε, S/aSb
ε, S/

52
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo
Sea la CFG S −→ aSb | aSbb | ε, donde S es el sı́mbolo no
terminal y Σ = {a, b} los sı́mbolos terminales. Las cadenas que se
pueden generar con esta CFG forman el conjunto
{am b n | m ≤ n ≤ 2m}
a, a/
b, b/

ε, /S
Inicio q0 q1

ε, S/aSb
ε, S/aSbb
ε, S/
53
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejercicios

Convierta las siguientes CFG a PDA:


1. S −→ 0 S 1 | A
A −→ 1 A 0 | S | ε

2. S −→ a A A
A −→ a S | b S | a

3. S −→ AA
A −→ AAA | a | bA | Ab

4. S −→ aAa | bAb | ε
A −→ SS

54
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Teorema
Sea L un lenguaje libre de contexto, entonces existe un número
N > 0 tal que toda cadena w ∈ L de largo |w | > N se puede
escribir como w = xuyvz de modo que:
I uv 6= ε,
I |uyv | ≤ N, y
I ∀m ≥ 0, xu m yv m z ∈ L.

55
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo

Demostrar que L = {an b n c n | n ≥ 0} no es libre de contexto.


I Tomemos la cadena w = aN b N c N para un N ≥ 0 y la
descomponemos en w = xuyvz.
I Como deberı́a cumplirse que uv 6= ε y |uyv | ≤ N, una posible
descomposición es:

x = aN u=b y = b N−2 v =b z = cN

I El teorema del bombeo nos dice que xyz ∈ L, si L es libre de


contexto, lo que corresponde a tomar m = 0, sin embargo
xyz = aN b N−2 c N , cadena que no pertenece a L, por lo tanto
el lenguaje no es libre de contexto.

56
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejemplo

Demostrar que L = {ww | w ∈ {a, b}∗ } no es de libre contexto.


I Tomemos la cadena w = aN b N aN b N para un N ≥ 0 y la
descomponemos en w = xuyvz.
I Como deberı́a cumplirse que uv 6= ε y |uyv | ≤ N, una posible
descomposición es:

x = aN b N u=a y = aN−2 v =a z = bN

I El teorema del bombeo nos dice que xyz ∈ L, si L es libre de


contexto, lo que corresponde a tomar m = 0, sin embargo
xyz = aN b N aN−2 b N , cadena que no pertenece a L, por lo
tanto el lenguaje no es libre de contexto.

57
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Ejercicios

Mediante el teorema del bombeo demuestre que los siguientes


lenguajes no son libres de contexto:
1. {ap | p es primo}
2
2. {an | n ≥ 0}
3. {www | w ∈ {a, b}∗ }
4. {am b n c p | m = n ∧ n = p ∧ m = p}

58
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Propiedades de clausura

Lema
La unión, concatenación y clausura de Kleene de lenguajes libre de
contexto es libre de contexto.
Demostración. Análoga a la de los lenguajes regulares (Cap. 1). 

Lema
La intersección de dos lenguajes libres del contexto no
necesariamente es libre del contexto.
Demostración. Los lenguajes Lab = {an b n c m | n, m ≥ 0} y
Lbc = {am b n c n | n, m ≥ 0} son libres de contexto, pues
Lab = {an b n } · c ∗ y Lbc = a∗ · {b n c n }, sin embargo,
Lab ∩ Lbc = {an b n c n | n ≥ 0}
como hemos visto anteriormente, no es libre de contexto. 

59
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Propiedades de clausura

Lema
El complemento de un lenguaje libre de contexto no
necesariamente es libre de contexto.

Demostración. L1 ∩ L2 = (LC1 ∪ LC2 )C , de manera que si el


complemento de un lenguaje libre de contexto fuera siempre libre
de contexto, entonces el Lema anterior serı́a falso. 

60
Fabián Riquelme Csori Lenguajes y Autómatas
Autómatas de pila
Lenguajes libres de contexto
Conversión de CFG a PDA
Autómatas de pila
Teorema del bombeo

Referencias

Estos apuntes están en parte basados en los del profesor y colega,


Dr. Roberto León Vásquez.

Recuerden utilizar la bibliografı́a sugerida para el curso, disponible


en las Bibliotecas de la Universidad.

61
Fabián Riquelme Csori Lenguajes y Autómatas

S-ar putea să vă placă și