Escolar Documentos
Profissional Documentos
Cultura Documentos
S abc
S S S
S S S
cadena de producciones
S S S S S S a S S
a b S a b c
( * S )
S
S ) c
( S +
S aAS S a A SbA A SS A ba
a A S
a
S b A
a b a
Modelos de Computación I– p.4/54
Árboles y Derivaciones
a A S
a
S b A
a b a
Derivación por la izquierda:
S aAS aSbAS aabAS aabbaS aabbaa
Derivación por la derecha:
S aAS aAa aSbAa aSbbaa aabbaa
A A A A
a a S a a S a a
A A A A
a a a a
Modelos de Computación I– p.7/54
Lenguaje inherentemente ambiguo
generado por la gramática:
S aa S aaU U aaaU U aaa, que no es
ambigua.
Único árbol para a5 :
S
a a U
E I E I E E E I I abcd
es ambigua, ya que la palabra a b c admite dos árboles
de derivación distintos:
E E
I − E E − I
a I − E I
E − c
b I
I b
c
a
L 1m 1 1m 1
Gramática:
S AB A ab A aAb B cd B cBd
S aCd C aCd C bDc C bc D bDc D b
La palabra aabbccdd tiene dos árboles de derivación
distintos:
S S
a C d
A B
a b c B d a C d
A
a b c d b D c
Un símbolo X V T se dice útil si y solo si existe una
cadena de derivaciones en G tal que
αXβ
S w T
Una producción se dice útil si y solo si todos sus símbolos
son útiles. Esto es equivalente a que pueda usarse en la
derivación de alguna palabra del lenguaje asociado a la
gramática.
Eliminando todos los símbolos y producciones inútiles el
lenguaje generado por la gramática no cambia.
que aparezcan.
2. Eliminar aquellos símbolos que no sean alcanzables
desde el símbolo inicial, S, y las producciones en las
que estos aparezcan.
S AB S a A a
u u Vt
Condición Recursiva: Si A β1 βk y cada β j está en T Vt ,
entonces A Vt .
1. Vt 0/
S gAe S aY B S cY A bBY
A ooC B dd B D C jV B
C gi D n U kW V baXXX
V oV W c X fV Y Y hm
Vt BC DW AU S V Vt VX Y
S gAe
A ooC B dd B D
C gi D n U kW
W c
S aAd S fX A b A CEd
VS variables obtenidas
S TS símbolos terminales obtenid
J variables por analizar
a A d f X
S , TS 0/
1. J S , VS
2. Mientras J 0/
3. Extraer un elemento de J : A, (J J A ).
4. Para cada produccion de la forma A α
5.Para cada variable B en α
6. Si B no est en VS añadir B a J y a VS
7. Poner todos los simbolos terminales de α en TS
8. Eliminar todas las variables que no estén en VS
y todos los simbolos terminales que no esten en TS .
9. Eliminar todas las producciones donde aparezca
un simbolo o variable de los eliminados en el paso anterior.
Modelos de Computación I– p.17/54
Ejemplo
S gAe A ooC
B ×dd B ×D C gi
D ×n U ×kW W× c
VS SAC
J SAC
TS geoi
Variable analizada: S A C Única derivación
posible: S gAe gooCe googie
Ejemplo:
0/
VT FE LG
Producciones nulas
Producciones unitarias
Forma normal de Chomsky
Forma normal de Greibach
contexto G y una palabra u, ¿pertenece u a L G ?
S
α1 α2 α3
β1 β2 β3 β4 β5
Si la palabra es generada, nos sale en esta búsqueda.
Si la palabra no es generada, ¿Hasta qué profundidad
tenemos que generar para convencernos de que no se
puede? Modelos de Computación I– p.21/54
Producciones Nulas
A ε.
nulas y tal que L Gn LG
Si tenemos, A ε D aABc
D
aABc aBc
Añadimos D aBc
Si B ε, entonce habría que añadir
D aBc D aAc D ac
Modelos de Computación I– p.22/54
Variables Anulables
C A C B C ε
Y después habría que eliminar C ε
que E
1. H 0/
2. Para cada produccion A ε, se hace H H
A
3. Mientras H cambie
4. Para cada produccion B A1 A2 An ,
donde Ai H para todo i 1 n, se hace H H B
Eliminar y Añadir:
β i αi βi ε si α H
y no todos los βi puedan ser nulos al mismo tiempo
Sv S Sv ε
Cálculo de H {A B C S
H ABC S
A B AB V
A B α
Para eliminar A B, añadimos todas las producciones
A α donde B α es una producción.
H conjunto de parejas A B tales que B derivable a partir
de A.
1. H 0/
2. Para toda produccion de la forma A B,
la pareja A B se introduce en H.
3. Mientras H cambie
4. Para cada dos parejas A B B C H
5. Si la pareja A C no esta en H
A C se introduce en H
6. Se eliman las producciones unitarias
S aBc S × A A aAb
A × B A cd B ccBS
B dc
Cálculo de H SA AB
Cálculo de H SA AB
Cálculo de H SA AB SB
S aBc A aAb A cd
B ccBS B dc S aAbS aAb
S cdS cd A ccBSA ccBS A dcA dc
S ccBSS ccBS S dcS dc
H SA AB SB
H SA AB SB
longitud n, ¿pertenece u a L G ?
α1 α2 α3
β1 β2 β3 β4 β5
Si la palabra no es generada, ¿Hasta qué profundidad tenemos que
generar para convencernos de que no se puede? 2n 1 (en cada
paso o sacamos al menos un nuevo símbolo terminal (n) o aumenta
Modelos de Computación I– p.33/54
al menos en 1 la longitud (n 1))
Forma Normal de Chomsky
A BC A a
donde A B C V, a T.
A BD1 D1 EFG
D1 ED2 D2 FG
2. Para cada αi , si αi es terminal: αi a T
3. Se añade la produccion Ca a
4. Se cambia αi por Ca en A α1 αn
5. Para cada produccion de la forma A B1 Bm m 3
6. Se añaden m 2 variables D1 D2 Dm 2
(distintas para cada produccion)
7. La produccion A B1 Bm se reemplaza por
A B 1 D1 D1 B 2 D2 Dm 2 B m 1 B m
Modelos de Computación I– p.36/54
Ejemplo
S bA S aB A bAA A AS
A a B aBB B bS B b
S Cb A S Ca B A Cb AA A AS
A a B Ca BB B Cb S B b
Ca a Cb b
S Cb A S Ca B A Cb AAA Cb AA A AS
A a B Ca BB B Cb S B b
Ca a Cb b A Cb D1 D1 AA
S Cb A S Ca B A AS
A a B Ca BBB Ca BB B Cb S B b
Ca a Cb b A Cb D1 D1 AA
B Ca E1 E1 BB
Resultado:
S Cb A S Ca B A AS
A a B Cb S B b
Ca a Cb b A Cb D1 D1 AA
B Ca E1 E1 BB
Modelos de Computación I– p.39/54
Forma Normal de Greibach
T α
A aα a V
– A T α V .
aα a
α α α
– A
V 2.
A Bα B β1 B β2 B β3
Concentramos las dos reglas en una:
A Bα β2 α
Pasamos a:
A β1 α A β2 α A β3 α
B β1 B β2 B β3
ELIMINA1 (A Bα)
1. Eliminar A Bα
2. Para cada produccion B β
3. Añadir A βα
Modelos de Computación I– p.41/54
Segunda Operación
ELIMINA2 (A)
1. Añadir una nueva variable BA
2. Para cada produccion A Aα
3. Añadir BA α y BA αBA
4. Eliminar A Aα
5. Para cada produccion A β, β no empieza por A
6. Añadir A βBA .
– A T α V .
aα a
– Ai A jα iα V .
j
– Bj Ai α α
V
1. Para cada k 1 m
2. Para cada j 1 k 1
3. Para cada produccion Ak A j α
4. ELIMINA1 (Ak A j α)
5. Si existe alguna produccion de la forma Ak Ak α
6. ELIMINA2 (Ak ) Modelos de Computación I– p.44/54
Segunda parte
1. Para cada i m 1 1
2. Para cada produccion de la forma Ai A jα j i
3. ELIMINA1 (Ai A j α)
4. Para cada i 1 2 m
5. Para cada produccion de la forma B j Ai α.
6. ELIMINA1 (B j Ai α)
A1 A2 A3 A2 A3 A1 A2 b
A3 A1 A2 A3 a
Aplicamos ELIMINA1 a A3 A1 A2
Se elimina esta producción y se añade: A3 A2 A3 A2
Queda:
A1 A2 A3 A2 A3 A1 A2 b
A3 a A3 A2 A3 A2
A1 A2 A3 A2 A3 A1 A2 b
A3 a A3 A2 A3 A2
Aplicamos ELIMINA1 a A3 A2 A3 A2
Se elimina esta producción y se añaden:
A3 A3 A1 A3 A2 A3 bA3 A2
Queda:
A1 A2 A3 A2 A3 A1 A2 b
A3 a A3 A3 A1 A3 A2 A3 bA3 A2
A1 A2 A3 A2 A3 A1 A2 b A3 a
A3 A3 A1 A3 A2 A3 bA3 A2
Aplicamos ELIMINA2 a A3
Se añade B3 y las producciones
B3 A1 A3 A2 B3 A1 A3 A2 B3
Se elimina A3 A3 A1 A3 A2 .
Se añaden las producciones: A3 aB3 A3 bA3 A2 B3
Queda:
A1 A2 A3 A2 A3 A1 A2 b A3 a
A3 bA3 A2 B3 A1 A3 A2 B3 A1 A3 A2 B3 A3 aB3
A3 bA3 A2 B3
Modelos de Computación I– p.48/54
Ejemplo
A1 A2 A3 A2 A3 A1 A2 b A3 a
A3 bA3 A2 B3 A1 A3 A2 B3 A1 A3 A2 B3 A3 aB3
A3 bA3 A2 B3
Se aplica ELIMINA1 a A2 A3 A1
Se elimina esta producción y se añaden:
A1
A2 A3 A2 b A2 aA1 A2 aB3 A1
A2 bA3 A2 B3 A1 A2 bA3 A2 A1 A3 a A3 bA3 A2
B3 A1 A3 A2 B3 A1 A3 A2 B3 A3 aB3 A3 bA3 A2 B3
Se aplica ELIMINA1 a A1 A2 A3 :
Se elimina esta producción y se añaden:
A1 bA3 A2 B3 A1 A3 A1 bA3 A2 A1 A3
A2 b A2 aA1 A2 aB3 A1
A2
bA3 A2 B3 A1 A2 bA3 A2 A1 A3 a
A3 bA3 A2 B3 A1 A3 A2 B3 A1 A3 A2 B3
A3 aB3 A3 bA3 A2 B3 A1 bA3
A1 aA1 A3 A1 aB3 A1 A3 A1 bA3 A2 B3 A1 A3
A1 bA3 A2 A1 A3
y se añaden:
B3 bA3 A2 B3 A1 A3 A3 A2 B3 aB3 A1 A3 A3 A2
Ejemplo
A2 b A2 aA1 A2 aB3 A1
A2 bA3 A2 B3 A1 A2 bA3 A2 A1 A3 a
A3 bA3 A2
B3 A1 A3 A2 B3 A3 aB3
A3 bA3 A2 B3 A1 bA3 A1 aA1 A3
A1 aB3 A1 A3 A1 bA3 A2 B3 A1 A3 A1 bA3 A2 A1 A3
B3 bA3 A3 A2 B3 aA1 A3 A3 A2 B3 aB3 A1 A3 A3 A2
B3 bA3 A2 B3 A1 A3 A3 A2 B3 aB3 A1 A3 A3 A2
Se aplica ELIMINA1 a B3 A1 A3 A2 B3 . Se elimina esta producción y
se añaden:
B3 bA3 A2 B3 A1 A3 A3 A2 B3 B3 aB3 A1 A3 A3 A2 B3 Modelos de Computación I– p.52/54
Ejemplo: Resultado
A2 b A2 aA1 A2 aB3 A1
A2 bA3 A2 B3 A1 A2 bA3 A2 A1 A3 a
A3 bA3 A2 A3 aB3 A3 bA3 A2 B3
A1 bA3 A1 aA1 A3 A1 aB3 A1 A3
A1 bA3 A2 B3 A1 A3 A1 bA3 A2 A1 A3 B3 bA3 A3 A2
B3 aA1 A3 A3 A2 B3 aB3 A1 A3 A3 A2 B3 bA3 A2 B3 A1 A3 A3 A2
B3 aB3 A1 A3 A3 A2 B3 bA3 A3 A2 B3 B3 aA1 A3 A3 A2 B3
B3 aB3 A1 A3 A3 A2 B3 B3 bA3 A2 B3 A1 A3 A3 A2 B3 B3 aB3 A1 A3 A3 A2 B3
¿pertenece u a L G ?
α1 α2 α3
β1 β2 β3 β4 β5
Si la palabra no es generada, ¿Hasta qué profundidad tenemos que
generar para convencernos de que no se puede? n (en cada paso o
sacamos al menos un nuevo símbolo terminal (n)) Además suele haber
menos ramificación.
Modelos de Computación I– p.54/54