Documente Academic
Documente Profesional
Documente Cultură
Facultad de Ingenierı́a
Lenguajes y Autómatas
Capı́tulo II: Lenguajes libres de contexto y autómatas de pila
2018-II
1
Lenguajes libres de contexto
Autómatas de pila
Index
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
Ejemplo
Consideremos las siguientes reglas:
S −→ aSb
S −→ ε
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
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
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
L(G ) = {w ∈ Σ∗ | S =⇒∗G w }
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, ε)}
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
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
Ejemplo (cont.)
Las producciones se pueden compactar:
E −→ I | E + E | E ∗ E | (E )
I −→ a | b | Ia | Ib | I 0 | I 1
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
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.)
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
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
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
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
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
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 | ε
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.)
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
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 | ε
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
¡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
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
Ejemplo
Construyamos un PDA que reconozca las cadenas
a, /a a, a/
c, /
Inicio q0 q1
b, /b b, b/
Ejemplo (cont.)
a, /a a, a/
ε, /
Inicio q0 q1
b, /b b, b/
Ejemplo
S −→ ε | aSbS | bSaS
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
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
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
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
0, 0/0
0, Z /0 1, 0/
ε, /Z 1, 0/ ε, Z /
Inicio q0 q1 q2 q3
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.)
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
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
I F = {f }, y
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
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
x = aN u=b y = b N−2 v =b z = cN
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
x = aN b N u=a y = aN−2 v =a z = bN
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
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.
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
61
Fabián Riquelme Csori Lenguajes y Autómatas