algoritmo cky

2
Aut´ omatas y Lenguajes Formales, 2015-1 Algoritmo CKY No´ e Salom´ on Hern´andez S´ anchez 1. Algoritmo CKY Este algoritmo recibe como entrada una gram´atica G y una cadena x = x 1 ...x n , determina entonces si la cadena forma parte del lenguaje generado por la gram´ atica. Consid´ erense los siguientes separadores de x: | 0 x 1 | 1 x 2 | 2 ... | n-1 x n | n As´ ı es posible denotar subcadenas como x i,j = x i+1 ...x j , 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: x 0,4 = abba x 1,3 = bb x 2,5 = bab Tambi´ en se requiere de una tabla T triangular inferior, donde cada celda T i,j representa un conjunto. La tabla T tiene la forma: n n - 1 . . . 2 1 0 T 0,n T 1,n-1 T 2,n-1 1

Upload: salomon

Post on 09-Sep-2015

225 views

Category:

Documents


2 download

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