You are on page 1of 2

Automatas y Lenguajes Formales, 2015-1

Algoritmo CKY
Noe Salomon Hernandez Sanchez

1.

Algoritmo CKY

Este algoritmo recibe como entrada una gramatica G y una cadena x = x1 . . . xn , determina
entonces si la cadena forma parte del lenguaje generado por la gramatica.
Considerense los siguientes separadores de x:
| x 1 | x2 | . . . | xn |
0

n1

As es posible denotar subcadenas como xi,j = xi+1 . . . xj , con 0 i < j n. Por ejemplo: x =
abbab, entonces:
| a| b| b| a| b|
0 1 2 3 4 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 un
conjunto. La tabla T tiene la forma:
0
1
2
..
T1,n1 T2,n1

.
n1
n

T0,n

Al termino del algoritmo, se analiza el conjunto en la celda T0,n . Si el smbolo inicial S esta en
ese conjunto, entonces x L(G).
Algorithm 1.1: CKY, este es un ejemplo de programacion dinamica.
1 for i := 0, ..., n 1 do
/* primero cadenas de longitud 1 */
2
Ti,i+1 :=
/* inicializa a */
3
for A a produccion de G do
4
if a = xi,i+1 then
5
Ti,i+1 := Ti,i+1 {A}
6
7
8
9
10
11
12

for m := 2, ..., n do
/* por cada longitud m 2
for i := 0, . . . , n m do
/* por cada subcadena de longitud m
Ti,i+m :=
/* inicializa a
for j := i + 1, . . . , i + m 1 do
/* para toda forma de romper la cadena
for A BC produccion de G do
if B Ti,j C Tj,i+m then
Ti,i+m := Ti,i+m {A}

*/
*/
*/
*/

You might also like