4. Lenguajes y gram´ aticas independientes del contexto 81
4.2. Gram´ aticas independientes del contexto
Una gram´atica independiente del contexto (GIC), tambi´en llamada gram´atica no-contextual o gram´atica de tipo 2, es una cu´adrupla, G= (V,Σ, S, P) formada por:
1. Un alfabetoV cuyos elementos se llamanvariablesos´ımbolos no- terminales.
4.2. GRAM ´ATICAS INDEPENDIENTES DEL CONTEXTO 83 2. Un alfabeto Σ cuyos elementos se llamans´ımbolos terminales. Se
exige que los alfabetos ΣyV sean disyuntos.
3. Una variable especialS∈V, llamadas´ımbolo inicialde la gram´ati- ca.
4. Un conjunto finito P ⊆ V ×(V ∪Σ)∗ de producciones o reglas de re-escritura. Una producci´on (A, w) ∈ P de G se denota por A → w y se lee “A produce w”; su significado es: la variable A se puede reemplazar (sobre-escribir) por la cadenaw. En la producci´on A→w,A se denomina lacabeza ywelcuerpo de la producci´on.
Notaci´on y definiciones.Las variables se denotan con letras may´usculas A, B, C, . . .Los elementos deΣo s´ımbolos terminales se denotan con letras min´usculas a, b, c, . . .. Si u, v ∈ (V ∪Σ)∗ y A → w es una producci´on, se dice queuwv sederiva directamente deuAv, lo cual se denota por
uAv=⇒uwv.
Si se quiere hacer referencia a la gram´aticaG, se escribe uAv=G⇒uwv ´o uAv=⇒Guwv.
Siu1, u2, . . . , unson cadenas en (V∪Σ)∗y hay una sucesi´on de derivaciones directas
u1 =G⇒u2, u2 =G⇒ u3, . . . , un−1 =G⇒ un
se dice que un se deriva de u1 y se escribe u1=∗⇒ un. La anterior sucesi´on de derivaciones directas se representa como
u1 =⇒u2 =⇒u3 =⇒· · ·=⇒un−1 =⇒un
y se dice que es una derivaci´on o una generaci´on de un a partir de u1. Para toda cadena w se asume que w =∗⇒ w; por lo tanto, u =∗⇒ v significa que v se obtiene de u utilizando cero, una o m´as producciones de la gram´atica. An´alogamente, u =+⇒ v significa que v se obtiene de u utilizando una o m´as producciones.
El lenguaje generado por una gram´atica G se denota porL(G) y se define como
L(G) :={w∈Σ∗ :S =+⇒w}.
Un lenguaje Lsobre un alfabeto Σse dice que es un lenguaje indepen- diente del contexto (LIC) si existe una GIC G tal que L(G) =L. Dos GICG1 y G2 sonequivalentes siL(G1) =L(G2).
La denominaci´on “independiente del contexto” proviene del hecho de cada producci´on o regla de re-escritura A → w se aplica a la variable A independientemente de los caracteres que la rodean, es decir, independien- temente del contexto en el que aparece A.
✞
✝
☎
Ejemplo✆SeaG una gram´atica (V,Σ, S, P) dada por:
V ={S}
Σ={a}
P ={S →aS, S →λ}
Se tiene S=⇒λy
S=⇒aS=∗⇒a· · ·aS =⇒a· · ·a.
Por consiguiente, L(G) =a∗.
De manera m´as simple, podemos presentar una gram´atica GIC listando sus producciones y separando con el s´ımbolo | las producciones de una misma variable. Se supone siempre que las letras may´usculas representan variables y las letras min´usculas representan s´ımbolos terminales. As´ı la gram´atica del ejemplo anterior se presenta simplemente como:
S→aS|λ.
✞
✝
☎
Ejemplo✆La gram´aticaG= (V,Σ, S, P) dada por:
V ={S, A}
Σ={a, b}
P ={S →aS, S →bA, S→λ, A→bA, A→b, A→λ}
se puede presentar como
9S →aS|bA|λ A→bA|b|λ
Se tieneS =⇒λ. Todas las dem´as derivaciones enGcomienzan ya sea con la producci´onS →aS o conS →bA. Por lo tanto, tenemos
S =⇒aS =∗⇒a· · ·aS=⇒a· · ·a.
S =⇒bA=∗⇒b· · ·bA=⇒b· · ·b.
S =⇒aS =∗⇒a· · ·aS=⇒a· · ·abA=∗⇒a· · ·ab· · ·bA=⇒a· · ·ab· · ·b.
Por consiguienteL(G) =a∗b∗.
4.2. GRAM ´ATICAS INDEPENDIENTES DEL CONTEXTO 85 Las siguientes gram´aticas tambi´en generan el lenguaje a∗b∗ y son, por lo tanto, equivalentes aG:
⎧⎪
⎨
⎪⎩
S →AB A→aA|λ B →bB |λ
⎧⎪
⎨
⎪⎩
S→AB|λ A→aA|a|λ B→bB |b|λ
9S→aS |A A→bA|λ
✞
✝
☎
Ejemplo✆ La gram´atica
9S→aS |aA A→bA|b
genera el lenguajea+b+. Otra gram´atica equivalente es:
⎧⎪
⎨
⎪⎩
S →AB A→aA|a B →bB |b
✞
✝
☎
Ejemplo✆ La gram´atica
9S→1A|0 A→0A|1A|λ
genera el lenguaje de los n´umeros naturales en numeraci´on binaria. N´otese que la ´unica cadena que comienza con 0, generable con esta gram´atica, es la cadena 0.
✞
✝
☎
Ejemplo✆Encontrar una GIC que genere el lenguaje 0∗10∗10∗ sobre Σ={0,1}, es decir, el lenguaje de todas las cadenas con exac- tamente dos unos.
Soluci´on.
G:
9S→A1A1A A→0A|λ Una gram´atica equivalente es
⎧⎪
⎨
⎪⎩
S →0S|1A A→0A|1B B →0B |λ
✞
✝
☎
Ejemplo✆Encontrar una GIC que genere el lenguaje L= {aibi :i≥0}
sobre Σ={a, b}, el cual no es un lenguaje regular.
Soluci´on.
S →aSb|λ.
✞
✝
☎
Ejemplo✆Encontrar una GIC que genere el lenguaje de todos los pal´ındromos sobre Σ={a, b}, el cual no es lenguaje regular.
Soluci´on.
S→aSa|bSb|a|b|λ.
✞
✝
☎
Ejemplo✆Encontrar una GIC que genere el lenguaje de todas las cadenas sobre Σ={a, b} que tienen un n´umero par de s´ımbolos.
Soluci´on.
S →aSa|bSb|aSb|bSa|λ Dos gram´aticas equivalentes son:
7
S →aaS |bbS|abS|baS|λ
9S→AAS|λ A→a|b
✞
✝
☎
Ejemplo✆Encontrar una GIC que genere el lenguaje (ab ∪ ba)∗ sobre Σ={a, b}.
Soluci´on.
S →abS|baS|λ.
✞
✝
☎
Ejemplo✆ Demostrar que la gram´aticaGdada por:
S →(S)S |λ
genera el lenguaje de todas las cadenas de par´entesis anidados y equilibra- dos; es decir, cadenas como(()),()()(),(())((())).
Soluci´on. Es f´acil ver queGgenera cadenas de par´entesis anidados y equi- librados ya que cada aplicaci´on de la producci´on S→(S)S da lugar a un par de par´entesis equilibrados.
Para establecer la direcci´on rec´ıproca demostraremos por inducci´on so- bre n la siguiente afirmaci´on: “Toda cadena con 2n par´entesis anidados y equilibrados se puede generar enG”.
n= 1: () se genera conS=⇒(S)S=2⇒().
n= 2: ()() se genera conS =⇒ (S)S=⇒ (S)(S)S=3⇒ ()().
(()) se genera conS =⇒ (S)S=⇒ ((S)S)S=3⇒ (()).
4.2. GRAM ´ATICAS INDEPENDIENTES DEL CONTEXTO 87 Paso inductivo: una cadena con 2n par´entesis anidados y equilibrados es de la forma (u) ´o (u)v donde u y v tienen estrictamente menos de 2n par´entesis anidados y equilibrados. Por hip´otesis de inducci´on S =+⇒ u y S =+⇒v. Por lo tanto,
S=⇒(S)S=+⇒(u)S=⇒(u).
S=⇒(S)S=+⇒(u)S=+⇒(u)v.
✞
✝
☎ Ejercicios de la secci´on 4.2✆
➀ Encontrar GIC que generen los siguientes lenguajes sobreΣ={a, b}:
(i) El lenguaje de las cadenas que tienen un n´umero par debes.
(ii) El lenguaje de las cadenas que comienzan conby terminan con ba.
(iii) a∗b∪a.
(iv) a∗b∪b∗a.
(v) (ab∗∪b∗a)∗. (vi) {aib2i:i≥0}.
(vii) {abiabi :i≥1}.
➁ Encontrar GIC que generen los siguientes lenguajes sobreΣ={a, b, c, d}:
(i) {aibjcjdi :i, j≥1}.
(ii) {aibicjdj :i, j≥1}.
(iii) {aibjcjdi :i, j≥1}∪{aibicjdj :i, j≥1}.
(iv) {aibjci+j :i≥0,j≥1}.
➂ Demostrar que la gram´atica S → SS | (S) | λ tambi´en genera el lenguaje de todas las cadenas de par´entesis anidados y equilibrados.
➃ Encontrar una gram´atica que genere el lenguaje de todas las cadenas de par´entesis circulares y/o angulares, anidados y equilibrados. Es de- cir cadenas como ([()]),([])[()],[()([[()()]])], etc. Cadenas como([)] ´o [([)]]tienen par´entesis equilibrados pero no anidados y, por lo tanto, no pertenecen a este lenguaje.
!➄ Sea Σ = {0,1}. Encontrar una GIC que genere el lenguaje de las cadenas que tienen igual n´umero de ceros que de unos.
4.3. Arbol de una derivaci´ ´ on
Un´arbol con ra´ızes un tipo muy particular de grafo no-dirigido; est´a for- mado por un conjunto de v´ertices o nodos conectados entre s´ı por arcos o aristas, con la siguiente propiedad: existe un nodo especial, llamado lara´ız del ´arbol, tal que hay una ´unica trayectoria entre cualquier nodo y la ra´ız.
De esta manera, la ra´ız se ramifica en nodos, llamados descendientes inmediatos, cada uno de los cuales puede tener, a su vez, descendientes inmediatos, y as´ı sucesivamente.
La propiedad que caracteriza a un ´arbol garantiza que un nodo puede tener 0, 1, o m´as descendientes inmediatos pero un ´unico antecesor inmedia- to. El ´unico nodo que no tiene antecesores es la ra´ız. Los nodos que tienen descendientes, excepto la ra´ız, se denominannodos interiores. Los nodos que no tienen descendientes se llaman hojasdel ´arbol. En la terminolog´ıa usualmente utilizada, los descendientes de un nodo tambi´en se denominan hijos y los antecesorespadreso ancestros. El n´umero de v´ertices (y por lo tanto, el n´umero de arcos) de un ´arbol puede ser infinito.
✞
✝
☎
Ejemplo✆ Algunos ´arboles con ra´ız:
4.3. ´ARBOL DE UNA DERIVACI ´ON 89 El´arbol de una derivaci´onS=∗⇒w,w∈Σ∗, en una GIC es un ´arbol con ra´ız que se forma de la siguiente manera:
1. La ra´ız est´a etiquetada con el s´ımbolo inicialS.
2. Cada nodo interior est´a etiquetado con un no terminal.
3. Cada hoja est´a etiquetada con terminal o conλ.
4. Si en la derivaci´on se utiliza la producci´on A → s1s2· · ·sk, donde si∈(V ∪Σ)∗, el nodoAtienekdescendientes inmediatos:s1,s2,. . . , sk, escritos de izquierda a derecha.
De esta forma, las hojas del ´arbol de derivaci´on deS =∗⇒wson precisamen- te los s´ımbolos de la cadenaw, le´ıdos de izquierda a derecha y, posiblemente, algunosλ.
La b´usqueda de un ´arbol de derivaci´on para una cadena w ∈ Σ∗ se denomina an´alisis sint´actico de w. Los ´arboles de derivaci´on tambi´en se suelen llamar ´arboles sint´acticos o ´arboles de an´alisis sint´actico.
✞
✝
☎
Ejemplo✆SeaG la gram´atica:
⎧⎪
⎨
⎪⎩
S →AB|AaB A→aA|a B →bBa|b El ´arbol de la derivaci´on
S=⇒AB=⇒AbBa=⇒abBa=⇒abba es
S
A a
B
b B
b
a
El anterior es tambi´en el ´arbol de la derivaci´on
S=⇒AB=⇒aB =⇒abBa=⇒abba.
Esto muestra que dos derivaciones diferentes pueden tener el mismo ´arbol de derivaci´on ya que en el ´arbol aparecen las producciones utilizadas pero no el orden en que han sido aplicadas.
✞
✝
☎
Ejemplo✆SeaG la gram´atica:
⎧⎪
⎪⎪
⎪⎨
⎪⎪
⎪⎪
⎩
S→BAa A→bBC |a B→bB |b|λ C→aB|aa El ´arbol de la derivaci´on
S =⇒BAa=⇒bAa=⇒bbBCa=⇒bbbCa=⇒bbbaBa=⇒bbbaa es
S
B b
A
b B
b
C
a B
λ a
✞
✝
☎ Ejercicios de la secci´on 4.3✆
➀ SeaGsiguiente gram´atica:
G:
⎧⎪
⎨
⎪⎩
S−→aS |AaB A−→aA|a B −→bBbB|b
Encontrar una derivaci´on de la cadena aaaabbbby hallar el ´arbol de tal derivaci´on.