Auxiliar 8 Algoritmo CYK
Auxiliar 8 Algoritmo CYK
Auxiliar 8 Algoritmo CYK
S → AB | BC
A → BA | a
B → CC | b
C → AB | a
1. Use el algoritmo CYK para determinar si la gramática anterior genera las siguientes
palabras:
a) abba
b) bbaa
c) ababa
d ) aaaaa
e) aaaaaa
3. Modifique el algoritmo CYK para determinar alguna derivación para una palabra.
Utilice el algoritmo modificado para obtener una derivación con la gramática anterior
para las siguientes palabras:
a) aaa
b) bbaaa
c) bababa
4. Suponga ahora que cada uso de una regla tiene un costo asociado. Modifique el algorit-
mo CYK, esta vez para obtener la derivación de costo mı́nimo para una palabra (usando
como función de costo de una derivación la suma entre el costo de la regla y el costo de
1
Programación dinámica es una técnica que consiste en dividir un problema complejo en varios problemas
más sencillos. Esto se realiza de manera tal que, en caso de existir subproblemas que se traslapan, estos
problemas se resuelven una sola vez y se almacena el resultado para su posterior consulta. Esta técnica
permite resolver esos problemas en tiempo polinomial, de lo contrario, dependiendo del problema, tomarı́a
tiempo exponencial. Comúnmente, esta técnica se revisa en cursos de Algoritmos, y se utiliza a menudo en
competencias de programación.
1
las subderivaciones). Utilice el algoritmo modificado sobre las palabras a continuación,
considerando las siguientes reglas (con su costo respectivo entre paréntesis):
S → aZ(5) | Y e(8)
X → cd(7) | aX(4)
Y → Xe(5) | ZX(7)
Z → bY (9) | ab(1)
a) abcde
b) abaacde
c) abbcdecd