Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 3 Gramáticas
• Sintaxis.
Diccionario de la RAE
Repetir:
Para cada regla unitaria A→B
Sean B→w1| w1| …| wn
Entonces ℘’= ℘ - {A→B} {A→w1| w1| …| wn}
Hasta que no haya más reglas unitarias
Autómatas Ingeniería Matemática. Curso 3º
8
Conceptos de Gramáticas, VII
• Orden de aplicación de los Algoritmos
de limpieza y bien formar GIC
1. Eliminación de Reglas innecesarias
2. Eliminación de Reglas no generativas
3. Eliminar Reglas de Redenominación
(Menos la regla del axioma S→λ)
4. Eliminación de S. Superfluos
5. Eliminación de S. Inaccesibles
equivale
Gramática Autómatas
describe reconoce
genera
Lenguajes
14
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición: Concepto formal de gramática. Se llama gramática
formal a la cuádrupla
G = (ΣT,ΣN, S, P)
donde:
• ΣT, alfabeto de símbolos terminales
• ΣN, alfabeto de símbolos no terminales
– Notación: Σ = ΣT ΣN
• S ΣN, es el axioma, símbolo inicial o símbolo distinguido
• P es un conjunto finito de reglas de producción de la forma u
v, donde u Σ+ y v Σ*
• Se verifica además que ΣT ∩ ΣN = φ y el alfabeto sobre el que
trabajaremos será Σ = ΣT ΣN
15
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición: Derivación
– Dada una gramática G=(ΣT,ΣN, S, P) y dos
palabras a,b Σ*, decimos que b es derivable a
partir de a en un paso (a − b) si y solo si existen
palabras d1,d2 Σ* y una producción j->g tales que
b= d1gd2 y a= d1jd2
– Dada una gramática G=(V,T,P,S) y dos palabras
a,b Σ*, decimos que b es derivable a partir de a
(a −*b) si y solo si existen una sucesión de
palabras d1,, d2,..., dn Σ* tales que a=d1 − d2 −...
− dn=b.
• En este caso se dice que existen una relación de
Thue entre a y b
16
Autómatas Ingeniería Matemática. Curso 3º
3.1 Gramáticas Formales.
Derivaciones
17
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
Definición: Formas sentenciales y sentencias
– Sea una gramática G = (ΣT,ΣN, S, P). Una palabra x
Σ* se denomina forma sentencial de G si se
verifica que
S |-* x
es decir, existe una relación de Thue entre el
axioma de la gramática y la palabra.
– Si una forma sentencial x cumple que x ΣT*, se
dice que x es una sentencia o instrucción de G. Es
decir, las sentencias estarán compuestas
únicamente por símbolos terminales.
18
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición: Sea G una gramática y v = xuy una
de sus formas sentenciales. Se dice que u es
una frase de la forma sentencial v, respecto
del símbolo no terminal U, si
S |―* xUy
U |―+u
19
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición 3.5: Se dice que u es una frase simple de
la forma sentencial v = xuy, respecto del símbolo no
terminal U, si
S |―* xUy
U →u
• Notación simplificada
Si existen dos reglas de la forma:
u→v
u→w
Se pueden representar de la forma :
u→v| w
20
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Ejemplo: Consideremos la gramática definida por:
ΣT = {0, 1, 2 ,3 ,4 ,5 ,6 ,7 8, 9, 0}
ΣN = {N, C}
S=N
P = { N::=NC, N::=C, C::=0, C::=1, C::=2, C::=3,
C::=4, C::=5, C::=6, C::=7, C::=8, C::=9}
21
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Árboles de derivación: Algunas gramáticas se pueden
representar mediante un árbol de derivación. Este
árbol se construye así:
a) La raíz del árbol corresponde al axioma de la
gramática
b) Una derivación directa se representa por un
conjunto de ramas que salen de un nodo
determinado. Al aplicar una regla, uno de los símbolos
de la parte izquierda de la producción deriva en la
palabra de la parte derecha. Se dibuja una rama por
cada símbolo de la parte dcha., que parte del nodo
correspondiente al símbolo de la izda.
22
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• En cada rama, el nodo de partida se denomina padre.
El final se denomina hijo del primero
• A lo largo del proceso de construcción del árbol, los
nodos finales de cada paso, leídos de izquierda a
derecha, forman la forma sentencial obtenida por la
derivación representada por el árbol.
• Será rama terminal aquella dirigida hacia un símbolo
terminal. Este nodo se llama hoja. El conjunto de
hojas, leído de izquierda a derecha, forma la
sentencia generada por la derivación.
23
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Ejemplo: Sea la gramática
G=( {0, 1, 2 ,3 ,4 ,5 ,6 ,7 8, 9, 0},
{N, C},
N,
{N NC | C,
C 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9} )
24
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Subárbol: Dado un árbol correspondiente a
una derivación, se denomina subárbol al
árbol cuya raíz es un nodo cualquiera y cuyos
nodos son los descendientes de éste.
26
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición:
– Ambigüedad: Si para una misma sentencia
podemos tener varios árboles de derivación
diferentes, se dice que la sentencia es
ambigua.
– Ejemplo:
G = ({i, +, *, (, )}, {E}, E, E ::= E + E | E * E | ( E ) | i })
– Consideremos la sentencia : i+i*i.
27
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Ejemplo:
G = ({i, +, *, (, )}, {E}, E, E ::= E + E | E * E | ( E ) | i })
• Consideremos la sentencia : i+i*i
28
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definiciones:
– Gramática ambigua: si tiene dos o más
árboles de derivación distintos para la
misma cadena.
– Leguaje ambiguo: Si existe al menos una
gramática ambigua que lo genere.
– Lenguaje inherentemente ambiguo: si todas
las gramáticas que lo generan son
ambiguas.
29
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición:
– Lenguaje generado por una gramática G:
Se representa por L(G) y es el conjunto de
todas las sentencias de la gramática; es
decir, todas las palabras se pueden obtener
desde el axioma por aplicación de
derivaciones.
L(G)= {x | S |―*x, x ∑T*}
30
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición:
– Equivalencia de gramáticas: Dadas dos
gramáticas G1 y G2 decimos que son
equivalentes, si L(G1) = L(G2), es decir, si
generan el mismo lenguaje.
31
Autómatas Ingeniería Matemática. Curso 3º
3.1. Gramáticas Formales
• Definición:
– Regla compresora: Es aquella cuya parte
derecha está formada por menos
elementos que la parte izquierda
– Ejemplos:
• 0C0 1
• Palabra vacía a la derecha:
Aλ
32
Autómatas Ingeniería Matemática. Curso 3º
Jerarquía de Chomsky
33
Autómatas Ingeniería Matemática. Curso 3º
Jerarquía de Chomsky
34
Autómatas Ingeniería Matemática. Curso 3º
Gramáticas de Tipo 0
(Con estructura de frase o sin restricciones)
35
Autómatas Ingeniería Matemática. Curso 3º
Gramáticas de Tipo 1
(Dependientes o sensibles del contexto)
A ΣN
β ( ΣN ΣT)+
36
Autómatas Ingeniería Matemática. Curso 3º
Gramáticas de Tipo 2
(Gramáticas Libres de Contexto)
• Sus producciones son de la forma:
A→α
donde
A ΣN
α ( ΣN ΣT)+
A,B ΣN y u ΣT
Se suelen permitir producciones de la forma S→λ
38
Autómatas Ingeniería Matemática. Curso 3º
ER GR AF
• El método de las derivadas va a permitir
resolver el problema de síntesis de Kleene
(se verá más adelante), generando el
autómata que acepta el lenguaje descrito
por cualquier expresión regular (ERAF) en
tres pasos:
1) Calcular derivadas de la ER
2) Calcular gramática de tipo 3 que genera el
lenguaje representado por la ER (ERG)
3) Transformar la gramática al AF (GRAF)
39
Autómatas Ingeniería Matemática. Curso 3º
Cálculo de derivadas
40
Autómatas Ingeniería Matemática. Curso 3º
Cálculo de derivadas
• Composición de derivadas:
– Dab(α) = Db(Da(α))
1) Calcular derivadas de la ER=α0:
a) a Σ:
Calcular de αi=Da(α0), empezando por i=1.
b) Para cada αi nuevo generado:
Calcular a Σ, calcular αj=Da(αi)
c) Hasta que no se generen nuevos αi
41
Autómatas Ingeniería Matemática. Curso 3º
Creación de una gramática
2) Construiremos una gramática G a partir de una ER (ERG)
G = (Σ, α0 αi, α0, P)
Donde P se construye así:
a) Si Da(α) = β, β≠λ, β≠
Crear regla: α aβ
b) Si λ Da(α)
Crear regla: α a
c) Si λ α0
Crear regla: α0 λ
d) Si Da(α) =
No generar ninguna regla
42
Autómatas Ingeniería Matemática. Curso 3º
Obtención del AF
43
Autómatas Ingeniería Matemática. Curso 3º
Obtención del AF
44
Autómatas Ingeniería Matemática. Curso 3º
Estado actual de la asignatura
45
Autómatas Ingeniería Matemática. Curso 3º
Esquema general de la asignatura
LR ER
GR L-AFND AFND
AFD
mini
GR GR mo
G-AFND AFD
I D
46
Autómatas Ingeniería Matemática. Curso 3º
Autómatas
Lenguajes Independientes del Contexto
(LIC)
(Simplificación de gramáticas)
▪ Derivaciones.
▪ Ejemplo:
– Gramática:
E --> E O E | ( E ) | - E | num
O --> + | * | -
– Entrada:
34 * ( 26 + 12 )
– Cadena de tokens:
num * (num + num)
– Secuencia de derivaciones.
E
E --> E O E EOE
E --> num num O E
O --> * num * E
E --> ( E ) num * ( E )
E --> E O E num * ( E O E )
E --> num num * ( num O E )
O --> + num * ( num + E )
E --> num num * ( num + num )
▪ Hay dos tipos de errores que se cometen con los símbolos: símbolos superfluos y
símbolos inaccesibles.
▪ Símbolos superfluos: Depende del conjunto al que pertenezcan (terminales o no
terminales)
– Símbolo no terminal superfluo: Es aquel del que se derivan sentencias que no
contienen ningún terminal
– Símbolo terminal superfluo: Es aquel que no puede ser alcanzado por derivación
desde el axioma
▪ Símbolos inaccesibles: Son aquellos símbolos no terminales que no pueden ser
alcanzados por derivaciones desde el axioma de la gramática.
Hay tres tipos de errores que se cometen con la reglas y son aquellas que no generan
derivaciones útiles: reglas innecesarias, reglas no generativas y reglas de
redenominación
▪ Reglas innecesarias: Son reglas del tipo A --> A, donde A pertenece a los no
terminales
▪ Reglas no generativas: Son reglas del tipo A --> λ, cuando A es distinta de S (el
axioma de la gramática)
▪ Reglas de redenominación: Son reglas del tipo A --> B, donde tanto A como B
pertenecen a los no terminales.
Ejemplo: G: ({a, b, c, d},{X, Y, V, W, Z}, X, P}, donde P está compuesto por las siguientes
reglas o producciones
X--> Wa| Zba | λ
Y --> aVa
V --> Y
W --> bX
Z --> Za
Obteniéndose finalmente:
X--> Wa| λ
W --> bX
E --> T E’
E’--> + T E’ | λ
T --> F T’
T’ --> * F T’ | λ
F --> ( E ) | id
71
Autómatas Ingeniería Matemática. Curso 3º
Recursividad y Factorización
72
Autómatas Ingeniería Matemática. Curso 3º
Recursividad y Factorización
73
Autómatas Ingeniería Matemática. Curso 3º
Recursividad y Factorización
Algoritmo para eliminar la recursividad por la
izquierda (recursividad en un paso)
Para cada A ΣN
- Si las producciones de A son de la forma:
P: { AA·α1 | A·α2 | ... | A·αn | β1 | β2 | ... | βm }
αi, βi (ΣT ΣN)* y βi no comienza por A
- Añadir nuevo símbolo: ΣN = ΣN {A’}
- Sustituir P por:
P’: { Aβ1·A’ | β2 ·A’ | ... | βm ·A’ | β1 | β2 | ... | βm
A’α1·A’ | α2·A’ | ... | αn·A’ | α1| α2| ... | αn }
74
Autómatas Ingeniería Matemática. Curso 3º
Recursividad y Factorización
75
Autómatas Ingeniería Matemática. Curso 3º
Recursividad y Factorización
• Factorización a izquierdas
– Problema: existen producciones de un
mismo símbolo no terminal en cuya parte
derecha, la primera parte sea común:
A β·α1 | β·α2 | ... | β·αn
– Solución: Factorizar a izquierdas mediante
el algoritmo para factorizar una GIC
76
Autómatas Ingeniería Matemática. Curso 3º
Recursividad y Factorización
Algoritmo para factorizar una GIC
Para cada A ΣN
- Si las producciones de A son de la forma:
P: { A β·α1 | β·α2 | ... | β·αn }
β, αi (ΣT ΣN)*
- Añadir nuevo símbolo: ΣN = ΣN {A’}
- Sustituir P por:
P’: { A β·A’
A’ α1| α2| ... | αn }
77
Autómatas Ingeniería Matemática. Curso 3º
Limpieza o Simplificación
de gramáticas
• Se trata de llegar a una forma normal o estándar para
las producciones, evitando que la gramática sea
inútilmente sencilla o inútilmente profunda.
• 4 algoritmos
1- Eliminar No Terminales que no deriven cadenas terminales
2- Eliminar Reglas y Producciones que no deriven del axioma
3- Eliminar las λ-producciones
4- Eliminar las producciones unitarias
NOTA: Los algoritmos se pueden aplicar en distinto orden
siempre que se respete 1-2 por un lado (alg. 1 antes que el
alg. 2) y 3-4 por otro (alg. 3 antes que el alg. 4)
78
Autómatas Ingeniería Matemática. Curso 3º
Limpieza - Algoritmo 1
Eliminar No Terminales que no deriven
cadenas terminales
– Sea G=(ΣT,ΣN, S, P) una GIC. Transformar G en
G’=(ΣT,ΣN’,S,P’), tal que L(G) = L(G’)
1. Inicializar ΣN’ = {A ∑N / (A w) P y w ∑T*}
2. Inicializar P’ = {(A w) P / A ∑N’ y w ∑T*}
3. Repetir
Añadir No Terminales a ΣN’:
ΣN’= ΣN’ {A ∑N / (A w) P y w (ΣT ∑N’)*}
Hasta que no se puedan añadir más elementos No
Terminales a ΣN’
79
Autómatas Ingeniería Matemática. Curso 3º
Limpieza - Algoritmo 2
Eliminar Reglas y Producciones que no deriven
del axioma.
– Sea G=(ΣT,ΣN, S, P) una GIC. Transformar G en
G’=(ΣT’,ΣN’,S,P’), tal que L(G) = L(G’)
1. Inicializar ΣN’ = {S}, P’ = , ΣT’ =
2. Repetir
A ΣN’ / (A w) P
2.1. Añadir (A w) P’
2.2. B ΣN / B w: Añadir B ΣN’
2.3. a ΣT / a w: Añadir a ΣT’
ΣN’ = ΣN’ {A ∑N / (A w) P y w (ΣT ∑N’)*}
Hasta que no se puedan añadir nuevas producciones a P’
80
Autómatas Ingeniería Matemática. Curso 3º
Limpieza - Algoritmo 3
81
Autómatas Ingeniería Matemática. Curso 3º
Limpieza - Algoritmo 3
b) Eliminar las λ-producciones.
Sustituir producciones B-->X1X2...Xn, eliminando
subconjuntos Xi anulables. No incluir B-->λ
b.1) Crear P’=
b.2) Si B X1X2...Xn P
Entonces Añadir a P’: B Y1Y2...Yn donde:
- Yi = Xi , si Xi no es anulable
- Yi = Xi ó λ, si Xi es anulable (combinaciones)
- No introducir B λ
NOTA: Pueden aparecer nuevas producciones al combinar
todas las soluciones Yi = Xi ó λ
c) Si S η Añadir S λ a P
82
Autómatas Ingeniería Matemática. Curso 3º
Limpieza - Algoritmo 4
• Eliminar las producciones unitarias
– Sea G=(ΣT,ΣN, S, P) una GIC sin λ-transiciones.
Transformar G en G’=(ΣT,ΣN’,S,P’), tal que L(G) = L(G’)
a) Construir conjuntos unitarios
A ΣN construir:
Unitario(A) = {B ∑N / A *B}.
b) Eliminar Unitarios:
1. Inicializar P’ = P
2. A ΣN / Unitario(A) ≠ {A}
B Unitario(A)
producción no unitaria (B w) P
Añadir (A w) P
3. Eliminar todas las producciones no unitarias.
83
Autómatas Ingeniería Matemática. Curso 3º
Formas normales para GIC
84
Autómatas Ingeniería Matemática. Curso 3º
Forma Normal de Chomsky
(FNC)
• Una gramática G=(ΣT,ΣN, S, P), G.I.C. está en
FNC si no contiene λ y todas las producciones
son de la forma:
A a / A ΣN, a ΣT
ó
A BC / A,B,C ΣN
85
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo FNC
Sea G=(ΣT,ΣN, S, P) / λ L(G)
1. Limpiar gramática.
Obtener G’=(ΣT’,ΣN’, S, P’) limpia / L(G) = L(G’)
Resultado P’: A w
si |w|=1 w ΣT
si |w|>1 w (ΣT ΣN)+
2. Quitar ΣT a la derecha, cuando |w|>1
A w / |w|>1, donde A X1X2...Xn
Xi=a ΣT, hacer:
Crear símbolo Ca ΣN’
Transformar a ΣT por Ca ΣN
Crear producción: Ca a P’
Resultado:
P’: A B1B2… Bn v A a
86
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo FNC
3. Eliminar cadenas a la derecha con |w|>2
Si A --> B1B2...Bn
Entonces Transformar producción en:
A-->B1D1
D1-->B2D2
...
Dn-2-->Bn-1Bn
87
Autómatas Ingeniería Matemática. Curso 3º
Forma Normal de Greibach
(FNG)
• Una gramática G=(ΣT,ΣN, S, P), G.I.C.
está en FNG si no contiene λ y todas las
producciones son de la forma:
A -->aα / A ΣN, a ΣT, α (ΣT ΣN)*
• FNG alternativa (la que nos gusta):
A -->aα / A ΣN, a ΣT, α ΣN*
88
Autómatas Ingeniería Matemática. Curso 3º
Forma Normal de Greibach
(FNG)
Teoremas necesarios:
• Teorema 1: Propagar producciones
Si A-->αβγ
y β--> β1 | β2 |... |βn
Entonces Transformar A-->αβγ en:
A--> αβ1γ | αβ2γ |... | αβnγ
89
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo FNG
Una gramática G=(ΣT,ΣN, S, P), GIC limpia, y
supongamos ΣN={A1,A2,...,An} con un orden
establecido / A1=S
• Objetivo: Dejar producciones: Ar--> Asα / r< s
1. Repetir Aj ΣN
1. Si Ak--> Aj α, con k>j Aplicar Teorema 1
2. Si Ak--> Aj α, con k=j (recursiva) Aplicar Teorema 2
Hasta que todas las producciones: Ar--> Asα / r< s
90
Autómatas Ingeniería Matemática. Curso 3º
Forma Normal de Greibach
• Operación para eliminar una producción Ai → Ajα, con
i<j
1. Sacar A → Bα de P.
2. p P / B → β, añadir A → βα
91
Autómatas Ingeniería Matemática. Curso 3º
Forma Normal de Greibach
92
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo CYK
93
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo CYK
94
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo de Cocke-Younger-Kasami
(CYK)
Este algoritmo se aplica a gramáticas libres de contexto en forma normal de Chomsky.
Supongamos que n es la longitud de la palabra.
95
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo de Cocke-Younger-Kasami
(CYK)
96
Autómatas Ingeniería Matemática. Curso 3º
Algoritmo de Cocke-Younger-Kasami
97
Autómatas Ingeniería Matemática. Curso 3º