You are on page 1of 23

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Algoritmos de Parsing Genricos


El Anlisis CYK

Universidad de Cantabria

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Outline

El Problema

Descripcin del Anlisis

rbol de Derivacin y CYK

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

El Problema

En nuestra busqueda por encontrar la estructura exploraremos como hallar una derivacin.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

El Problema

Queremos que sea aplicable a cualquier lenguaje, que este dado por una gramtica libre de contexto.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

El Problema

Tambin queremos que sea rpido y que no consuma muchos recursos (recordad que con una gramtica libre esto se puede hacer utilizando busquedas).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

El Problema

Aqu utilizaremos una gramtica en forma normal de Chomsky, ya que esta tiene mejores propiedades a la hora de calcular la eciencia.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Idea

La idea es explorar todas las posibles formas de derivar partes de la palabra

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

La Tabla CYK

El input del algoritmo est formado por una gramtica libre de contexto G = (V , , q0 , P), y por una forma terminal, es decir, := a1 a2 an1 an .

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

La Tabla CYK

El output del algoritmo es una tabla triangular. Para interpretarlo, podemos entender la tabla de output como una aplicacin: t : {(i, j) : 1 i n, 1 j n i + 1} P(V ), donde V son los smbolos no terminales de la gramtica y P(V ) son los subconjuntos de V . A la imagen t(i, j) P(V ) la denotaremos con sub-ndices. Es decir, escribiremos ti,j P(V ).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

La Tabla CYK

En el conjunto ti,j escribiremos todas las variables A V tales que A G ai ai+1 ai+j1 . Ntese que, en realidad, t depende de G y de . Tambin hay que hacer notar que el algoritmo necesitar una cantidad de memoria de O(n2 ).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

La Tabla CYK

En el conjunto ti,j escribiremos todas las variables A V tales que A G ai ai+1 ai+j1 . Ntese que, en realidad, t depende de G y de . Tambin hay que hacer notar que el algoritmo necesitar una cantidad de memoria de O(n2 ).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

La Tabla CYK: Algoritmo


Inicializar: Para i, 1 i n, ti,1 := {A : A ai P}. Para j = 1 hasta n hacer Para i = 1 hasta n j + 1 hacer ti,j := {A : k , 1 k < j, B ti,k , C ti+k ,jk , and A BC P}. siguiente i n hacer siguiente j n hacer n

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Ejemplo de Algoritmo CYK

Hallar la tabla para la gramtica G cuyas producciones son: Q0 AA | AQ0 | b, A Q0 A | AQ0 | a. y la palabra = abaab.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Ejemplo de Algoritmo CYK

Q0 AA | AQ0 | b, A Q0 A | AQ0 | a, = abaab. Aqu est la tabla CYK: ti,j 1 2 3 1 A Q0 , A Q0 , A 2 Q0 A Q0 3 A Q0 Q0 , A 4 A Q0 ,A 5 Q0

4 Q0 , A Q0 , A

5 Q0 , A

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Complejidad del Algoritmo

Theorem El algoritmo calcula la tabla de anlisis sintctico CYK en tiempo polinomial. Mas concretamente, el tiempo de ejecucin del algoritmo es O(n3 ) y la memoria usada es O(n2 ).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

El Problema de la Palabra

Theorem L(G) si y solamente si Q0 t1,n . En particular, el clculo de la tabla por el mtodo CYK resuelve el problema de palabra para gramticas en forma normal de Chomsky y libres en tiempo O(n3 ) y espacio O(n2 ).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

rbol de Derivacin

Nuestra pregunta es, ahora que podemos resolver el problema de la palabra queremos dar un algoritmo que devuelva el rbol de derivacin de la palabra con esa gramtica.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

rbol de Derivacin

Lo que haremos ser denir una serie de aplicaciones: gen(i, j, ) denidas en los subconjuntos ti,j de la tabla construida a partir del algoritmo CYK antes denido. La idea es que gen(i, j, ) de una derivacin a la derecha de la subpalabra de desde la posicin i con longitud j.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Observaciones

Una dicultad es que no es aplicacin puesto que podra haber ms de una produccin A BC con las propiedades prescritas.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Observaciones

Para evitarlo, se introduce una enumeracin del conjunto de las producciones. As, podremos hablar de la produccin msima como el elemento de P que ocupa el lugar m.

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Observaciones

Si A ti,j , consideremos todas las producciones de P tales que existe un k , 1 k < j y la produccin A BC con B ti,k , C ti+k ,jk . Sea m el mnimo de las enumeraciones de tales producciones. Entonces, deniremos gen(i, j, A) = [m, gen(i, k , B), gen(i + k , j k , C)].

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Algoritmo
Si Q0 t1,n ERROR en otro caso gen(i, 1, A) := [m] si m es la produccin A ai . Si j > 1, hallar la produccin de numeracin ms pequea m tal que: * Existe k , 1 k < j tal que: * Existen B ti,k y C ti+k ,jk tales que: * La produccin msima es A BC. gen(i, j, A) := [m, gen(i, k , B), gen(i + k , j k , C)] n si Devolver gen(1, n, Q0 ).

Anlisis CYK

El Problema Descripcin del Anlisis rbol de Derivacin y CYK

Observaciones

El algoritmo es un algoritmo de parsing ascendente. Este algoritmo se puede usar para resolver el problema de palabra. La memoria utilizada solo aumenta marginalmente, es decir, hallar el rbol de derivacin requiere reservar O(n2 ). La complejidad en tiempo de clculo tampoco aumenta. El problema con este algoritmo es que requiere una gramtica en forma normal de Chomsky.

Anlisis CYK

You might also like