Sunteți pe pagina 1din 24

Teora de Lenguajes

Gramticas incontextuales

Jos M. Sempere
Departamento de Sistemas Informticos y Computacin
Universidad Politcnica de Valencia

Gramticas incontextuales
1.
2.
3.
4.
5.
6.

Definiciones bsicas.
Simplificacin de gramticas incontextuales.
Formas normales. Algoritmos de normalizacin.
Anlisis de cadenas en gramticas incontextuales.
Propiedades de decisin.
Subclases de gramticas incontextuales

Bibliografa

M. A. Harrison. Introduction to Formal Language Theory. Addison-Wesley. 1978.

J. E. Hopcroft, J. D. Ullman. Introduction to Automata Theory, Languages and


Computation. Addison-Wesley.1979.

G. Rozenberg, A. Salomaa (Eds.). Handbook of Formal Languages (Vol.1)


Springer. 1997.

Definiciones bsicas
Gramtica incontextual: G=(N, , P, S) con las producciones de la forma
A AN, (N)*
Derivaciones directas

S AB
A aAb |
B cBd |

S AB aAbB abB abcBd abcd


Derivaciones (por la izquierda, por la derecha, arbitrarias)

rboles de derivacin
* abcd
S

S
A

B
Lenguaje generado por la gramtica G

Ambigedad, lenguaje
inherentemente ambiguo

* w}
L(G) = { w : S
Jerarqua de Chomsky

Lreg Lcf Lcs

Simplificacin de gramticas incontextuales


G=(N, , P, S) diremos que est simplificada si
(1) Todos sus smbolos son tiles
* w
(1.1) Generativos A N : A
(1.2) Alcanzables A (N):

w *

S
* A

, ( N)*

(2) No contiene producciones unitarias A B A,B N


(3) No contiene producciones vacas

A A N

Para toda gramtica incontextual G existe una gramtica incontextual


G simplificada tal que L(G) = L(G) {}

Forma Normal de Chomsky


G=(N, , P, S) diremos que est en forma normal de Chomsky si todas sus
producciones toman una de las dos siguientes formas
(1) A BC A, B, C N
(2) A a

Para toda gramtica incontextual G existe una gramtica incontextual


G en forma normal de Chomsky tal que L(G) = L(G) {}

Algoritmo para la obtencin de la Forma Normal de Chomsky


Entrada G=(N, , P, S) gramtica incontextual arbitraria con L(G)
Salida G1=(N1, 1, P1, S) gramtica en FNC tal que L(G1) = L(G) {}
Mtodo

/* Pasos preliminares */
Obtener G2=(N2, 2, P2, S) simplificada tal que L(G2) = L(G) {}
/* Fase 1 */
Para toda produccin A X1 X2 Xn P2 con n 2
Si Xi 2 sustituir Xi por Cxi en la anterior produccin
y aadir la produccin Cxi Xi
El resto de producciones permanecen igual
Se obtiene la gramtica G3 = (N3, 3, P3, S) con L(G3) = L(G2)
/* Fase 2 */
Para toda produccin A X1 X2 Xn P3 con n 3
Sustituir la anterior produccin por el conjunto de producciones
A X1 D1

D1 X2 D2
Dn-2 Xn-1 Xn
El resto de producciones permanecen igual
Se obtiene la gramtica G1 = (N1, 1, P1, S) con L(G1) = L(G2) = L(G) {}

Ejemplo
G=(N, , P, S) (simplificada)
S AaBb | ABB | Aa
A aA | ab
B a | BB
/* Fase 1 */
G3=(N3, 3, P3, S)
S ACaBCb | ABB | ACa
A CaA | CaCb
B a | BB
Ca a
Cb b

/* Fase 2 */
G1=(N1, 1, P1, S)
S AD1 | AD3 | ACa
D1 Ca D2
D2 BCb
D3 BB
A CaA | CaCb
B a | BB
Ca a
Cb b

Forma Normal de Greibach


G=(N, , P, S) diremos que est en forma normal de Greibach si todas sus
producciones son de la forma
A a a

N*

Para toda gramtica incontextual G existe una gramtica incontextual


G en forma normal de Greibach tal que L(G) = L(G) {}

Algoritmo para la obtencin de la Forma Normal de Greibach (1)


Entrada G=(N, , P, S) gramtica incontextual arbitraria con L(G)
Salida G1=(N1, 1, P1, S) gramtica en FNG tal que L(G1) = L(G) {}
Mtodo

/* Pasos preliminares */
Obtener G2=(N2, 2, P2, S) simplificada y en FNC tal que L(G2) = L(G) {}
/* Fase 1 */ N2 = { A1 , A2, , Am }
Para k=1 hasta m
Para j=1 hasta k-1
Para cada produccin Ak Aj
Para cada produccin Aj
Aadir la produccin Ak
finPara
Eliminar la produccin Ak Aj
finPara
Para cada produccin Ak Ak
Aadir la produccin Bk
Aadir la produccin Bk Bk
Eliminar la produccin Ak Ak
finPara
Para cada produccin Ak
Si no comieza por Ak
Aadir la produccin Ak Bk
finPara
finPara

Algoritmo para la obtencin de la Forma Normal de Greibach (2)


Al final de la Fase 1 las producciones estn en una de las tres formas
(1) Ai Aj con j > i
(2) Ai a
(3) Bi
con a (N { B1, B2, , Bi-1})*
Las producciones de la forma (2) ya estn en FNG
Todas las producciones de Am ya estn en FNG
Las producciones de los nuevos smbolos Bi comienzan por smbolos Aj
/* Fase 2 */
Para k = m-1 hasta 1
Para cada produccin Ak Aj
Para cada produccin Aj
Aadir la produccin Ak
finPara
Eliminar la produccin Ak Aj
finPara
finPara
Para cada produccin Bk Aj
Para cada produccin Aj
Aadir la produccin Bk
finPara
Eliminar la produccin Bk Aj
finPara

Ejemplo
G=(N, , P, A1) (simplificada y en FNC)

A1 A2 A3
A2 A1 A2 | a
A3 A1 A3 | b

/* Fase 1 */ G2=(N2, 2, P2, A1)


(1)

A1 A2 A3
A2 A2 A3 A2 | a
A3 A1 A3 | b
(4)

(3)
(2) A A A
A1 A2 A3
1
2 3
A2 a | a B2
A2 a | a B2
B2 A3 A2 B2 | A3 A2
B2 A3 A2 B2 | A3 A2
A3 A1 A3 | b
A3 A2 A3 A3 | b

A1 A2 A3
A2 a | aB2
B2 A3 A2 B2 | A3 A2
A3 a A3 A3 | a B2 A3 A3 | b

/* Fase 2 */ G1=(N1, 1, P1, A1)


(1)

A1 a A3 | a B2 A3
A2 a | a B2
B2 A3A2 B2 | A3A2
A3 a A3A3 | a B2 A3 A3 | b

(2)

A1 a A3 | a B2 A3
A2 a | a B2
B2 a A3 A3 A2 B2 | a B2 A3 A3 A2 B2 | b A2B2
a A3 A3 A2 | a B2 A3 A3 A2 | b A2
A3 a A3A3 | a B2 A3 A3 | b

Otras formas de gramticas


Forma m-estndar
G=(N, , P, S) diremos que est en forma m-estndar si todas sus producciones
son de la forma
A a a N* || m

Para toda gramtica incontextual G y para todo valor m 2 existe una gramtica
incontextual G en forma m-estndar tal que L(G) = L(G) {}

Algoritmo para la obtencin de la Forma Normal m-estndar


Entrada G=(N, , P, S) gramtica incontextual en Forma Normal (m+1)-estndar
Salida G1=(N1, , P1, S) gramtica en Forma Normal m-estndar tal que L(G1) = L(G)
Mtodo

N1 = N {(A,B) : A,B N }
/* Definicin de las producciones de P1 */
P1 = {A : A P, || m+1 }
{A aB1Bm-1(Bm, Bm+1) : A aB1Bm Bm+1 P }
{(A,B) B : A P, || m }
{(A,B) aB1Bm-1(Bm, B) : A aB1Bm-1Bm P}
{(A,B) aB1Bm-2(Bm-1, Bm)(Bm+1,B) : A aB1BmBm+1 P}

Ejemplo
G=(N, , P, A1) (en FN 3-estndar)

A1 a A3 | a A4 A3
A2 a | a A4 | aA2A2
A3 a A3A3 | a A4 A3 A3 | b
A4 a A3 A3 A4 | b A2A4 | a

G1=(N1, , P1, A1) (en FN 2-estndar)


N1 = { A1, A2, A3, A4, (A1,A1), (A1,A2), (A1, A3), (A1,A4),
(A2,A1), (A2,A2), (A2, A3), (A2,A4), (A3,A1), (A3,A2), (A3, A3), (A3,A4),
(A4,A1), (A4,A2), (A4, A3), (A4,A4) }
P1 :
A1 a A3 | a A4 A3
A2 a | a A4 | aA2A2
A3 a A3A3 | b
A4 b A2A4 | a

A3 a A4 A3 A3

A4 a A3 A2 A4

A3 a A4 (A3, A3)

A4 a A3 (A2, A4)

(A3,A3) b A3
(A3,A3) a A3 (A3,A3)

(A2,A4) a A4 | a A4 A4 | a A2 (A2, A4)

Otras formas de gramticas


Gramticas invertibles
G=(N, , P, S) diremos que es invertible si se cumple la siguiente propiedad
( A, B N) ( ( N)*) [((A ) P) ((B ) P)] A=B
Para toda gramtica incontextual G existe una gramtica incontextual
G invertible tal que L(G) = L(G)

Una solucin no prctica


Ai
Ak

Ai Ri
Ak Rk
R

Algoritmo para la obtencin de la Forma Normal invertible


Entrada G=(N, , P, S) gramtica incontextual simplificada
Salida G1=(N1, , P1, S1) gramtica invertible tal que L(G1) = L(G)
Mtodo

N1 = {S1} 2N -
S1 N
/* Definicin de las producciones de P1 */
S1 si es un subconjunto de N que contenga a S
Para cada produccin B x0B1x1 Bnxn P donde Bi, N, xi *
Para cada auxiliar A1, , An N1 {S1} aadir la produccin
A x0A1x1 Anxn
donde A = {C : C x0C1x1 Cnxn P, Ci Ai }

Ejemplo
G=(N, , P, S)

S 0A | 1B
A 0A | 0S | 1B
B1|0

G1=(N1, , P1, S1) (invertible)


N1 = { S1, {S}, {A}, {B}, {S,A}, {S,B}, {A,B}, {S,A,B} }
P1 :
S1 {S} | {S,A} | {S,B} | {S,A,B}
B1|0
S 0A
A 0A
A 1B

{B} 1 | 0
{S,A} 0{A} | 0{A,B} | 0{S,A} | 0{S,A,B}
{S,A} 1{B} | 1{A,B} | 1{S,B} | 1{S,A,B}

S 1B
A 0S

{A} 0{S} | 0{S,B}

Anlisis de cadenas en gramticas incontextuales


El problema de la pertenencia (Membership Problem)
Dada una gramtica incontextual arbitraria G=(N, , P, S) y una
cadena w * w L(G) ?
Si w = el problema se reduce a comprobar si S es anulable
En el caso de w podemos trabajar con una gramtica simplificada y
en forma normal G tal que L(G) = L(G) {}. El problema se reduce a
comprobar si w L(G)

Anlisis de cadenas mediante exploracin exhaustiva


Entrada : G=(N, , P, S) en FNG y w = w1 w2 wn (w )
Salida : Cierto (si w L(G)) o Falso (si w L(G))
Mtodo :
Explorar sistemticamente todos los rboles de derivacin que sigan
el orden de los smbolos de la cadena
S
w1

w2

A1

A2

Ap

Aq

Complejidad temporal: O(kn)


(siendo k el nmero mximo de producciones
que tiene cualquier auxiliar de la gramtica)

Algoritmo de anlisis CYK (Cocke-Younger-Kasami)


Entrada : G=(N, , P, S) en FNC y w = w1 w2 wn (w )
Salida : Cierto (si w L(G)) o Falso (si w L(G))
Mtodo :
Para i=1 hasta n
Vi1 = { A : A wi P }
finPara
Para j=2 hasta n
Para i=1 hasta n-j+1
Vij =
Para k=1 hasta j-1
Vij = Vij { A : A BC P, B Vik, C Vi+k, j-k }
finPara
finPara
finPara
Complejidad temporal: O(n3)
Si S V1n devolver Cierto
Complejidad espacial: O(n2)
sino devolver Falso
(siendo G un parmetro externo)

Ejemplo
G=(N, , P, S) (simplificada y en FNC)
S AB |BC
A BA | a
B CC | b
C AB | a
b

w = baaba

A,C

A,C

A,C

S,A

S,C

S,A

S,A,C

S,A,C

S V15
Cierto (w L(G))

Propiedades de decisin
Un problema de decisin (expresado en trminos formales) es decidible
si existe un algoritmo que lo resuelva. (En caso contrario es indecidible)
Algunos problemas decidibles referentes a gramticas incontextuales

El problema de la vacuidad : L(G) = ?

El problema de la infinitud : |L(G)| = ?

El problema de la pertenencia : w L(G) ?

El problema de la equivalencia estructural : str(G1) = str(G2) ?


(str(Gi) denota el conjunto de esqueletos de Gi, rboles de derivacin
donde los nodos internos no tienen etiquetas )

Algunos problemas indecidibles referentes a gramticas incontextuales

El problema de la inclusin : L(G1) L(G2) ?

El problema de la equivalencia : L(G1) = L(G2)?

El problema de la exhaustividad : L(G) = * ?

El problema de la regularidad : Es L(G) regular ?

El problema de la ambigedad : Es G ambigua ?

El problema de la ambigedad inherente : Es L(G) inherentemente ambiguo ?

El problema de la complementariedad : Es L(G) incontextual ?

El problema de la interseccin : Es L(G1) L(G2) incontextual ?

Algunas subclases de gramticas incontextuales


Gramticas lineales pares
G=(N, , P, S)

A u B v
A w

A, B N
u, v, w * |u| = |v|

Lreg Lel Lcf


Gramticas lineales
G=(N, , P, S)

A u B
A B v
A w

A, B N
u, v, w *

Lreg Lel Llin Lcf

S-ar putea să vă placă și