algoritmo cky
DESCRIPTION
Este documento muestra con un ejemplo claro el funcionamieto del algoritmo CKY para determinar si una gramática libre de contexto genera cierta cadena.TRANSCRIPT
-
Automatas y Lenguajes Formales, 2015-1Algoritmo CKY
Noe Salomon Hernandez Sanchez
1. Algoritmo CKY
Este algoritmo recibe como entrada una gramatica G y una cadena x = x1 . . . xn, determinaentonces si la cadena forma parte del lenguaje generado por la gramatica.
Considerense los siguientes separadores de x:
|0
x1|1
x2|2
. . . |n1
xn |n
As es posible denotar subcadenas como xi,j = xi+1 . . . xj, con 0 i < j n. Por ejemplo: x =abbab, entonces:
|0
a|1
b|2
b|3
a|4
b|5
De manera que algunas subcadenas de x son:
x0,4 = abba
x1,3 = bb
x2,5 = bab
Tambien se requiere de una tabla T triangular inferior, donde cada celda Ti,j representa unconjunto. La tabla T tiene la forma:
n
n 1
. . .
2
1
0
T0,n
T1,n1 T2,n1
1
-
Al termino del algoritmo, se analiza el conjunto en la celda T0,n. Si el smbolo inicial S esta enese conjunto, entonces x L(G).
Algorithm 1.1: CKY, este es un ejemplo de programacion dinamica.
for i := 0, ..., n 1 do /* primero cadenas de longitud 1 */1Ti,i+1 := /* inicializa a */2for A a produccion de G do3
if a = xi,i+1 then4Ti,i+1 := Ti,i+1 {A}5
for m := 2, ..., n do /* por cada longitud m 2 */6for i := 0, . . . , nm do /* por cada subcadena de longitud m */7
Ti,i+m := /* inicializa a */8for j := i + 1, . . . , i + m 1 do /* para toda forma de romper la cadena */9
for A BC produccion de G do10if B Ti,j C Tj,i+m then11
Ti,i+m := Ti,i+m {A}12
2