• Tidak ada hasil yang ditemukan

Gram´ aticas independientes del contexto

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.

EjemploSeaG 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|λ.

EjemploLa 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) =ab.

4.2. GRAM ´ATICAS INDEPENDIENTES DEL CONTEXTO 85 Las siguientes gram´aticas tambi´en generan el lenguaje ab 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.

EjemploEncontrar una GIC que genere el lenguaje 01010 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 |λ

EjemploEncontrar una GIC que genere el lenguaje L= {aibi :i≥0}

sobre Σ={a, b}, el cual no es un lenguaje regular.

Soluci´on.

S →aSb|λ.

EjemploEncontrar 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|λ.

EjemploEncontrar 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

EjemploEncontrar 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) ab∪a.

(iv) ab∪ba.

(v) (ab∪ba). (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.

EjemploSeaG 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.

EjemploSeaG 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.