Professional Documents
Culture Documents
Universidad de Cantabria
Anlisis CYK
Outline
El Problema
Anlisis CYK
El Problema
En nuestra busqueda por encontrar la estructura exploraremos como hallar una derivacin.
Anlisis CYK
El Problema
Queremos que sea aplicable a cualquier lenguaje, que este dado por una gramtica libre de contexto.
Anlisis 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
Aqu utilizaremos una gramtica en forma normal de Chomsky, ya que esta tiene mejores propiedades a la hora de calcular la eciencia.
Anlisis CYK
Idea
Anlisis 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
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
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
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
Anlisis 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
4 Q0 , A Q0 , A
5 Q0 , A
Anlisis CYK
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 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
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
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
Observaciones
Una dicultad es que no es aplicacin puesto que podra haber ms de una produccin A BC con las propiedades prescritas.
Anlisis 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
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
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
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