26
PRUEBAS DE CORRECIÓN Y DE COMPLETEZ Expositor: Eduardo Gil Montoya

Exposicion Correccion y Completez

Embed Size (px)

DESCRIPTION

La completez y la corrección de una gramática son dos propiedades independientes, ya que una gramática dada puede tener ambas, una o ninguna de ellas

Citation preview

PRUEBAS DE CORRECIN Y DE COMPLETEZ

PRUEBAS DE CORRECINYDE COMPLETEZExpositor:

Eduardo Gil MontoyaIntroduccinPrueba de correccinPrueba de completezEjemplosTeora de la ComputacinTEMARIO:1. IntroduccinTeora de la ComputacinEs posible en general hacer pruebas matemticas de que una gramtica corresponde a un lenguaje dado.

La gran ventaja de realizar lo anterior, es que dicha correspondencia ya no es una simple conviccin intuitiva, sino que adquiere el rango de certeza matemtica.

En ciertas aplicaciones, donde es extremadamente importante asegurarse de que no hay errores, las pruebas que garantizan esta certeza son de un gran valor.IntroduccinTeora de la ComputacinLas pruebas que nos permitirn lo anterior son dos:

IntroduccinTeora de la Computacin1. PRUEBA DE CORRECIN

La cual nos asegura que todas las palabras que se generan por medio de la gramtica corresponden al lenguaje dado.

2. PRUEBA DE COMPLETEZ

Que nos asegura que no existan palabras en el lenguaje dado que no puedan ser generadas por la gramtica

En general las pruebas de correccin son ms sencillas y siguen un patrn ms predecible que las de completez, como podremos constatar en los ejemplos que siguen. IntroduccinTeora de la ComputacinLa completez y la correccin de una gramtica son dos propiedades independientes, ya que una gramtica dada puede tener ambas, una o ninguna de ellasIntroduccinTeora de la Computacin2. Pruebas de correccinTeora de la ComputacinLa idea de una prueba por induccin basada en la longitud de la derivacin es esencialmente mostrar que todas las palabras por las que se pasa en medio del proceso de derivacin cumplen una propiedad, que es bsicamente el enunciado del lenguaje.

Dichas pruebas siguen el siguiente esquema:prueba de correccinTeora de la Computacin1. Lo primero que hay que hacer es establecer un enunciado, relacionado con la definicin del lenguaje considerado, pero algo modificado de manera que se pueda aplicar a las palabras intermedias en el proceso de derivacin, las cuales pueden contener variables tanto como constantes.

2. Luego se prueba, como base de la induccin, que para las palabras intermedias de la derivacin producidas en al menos k0 pasos, la propiedad se cumple.Teora de la Computacin3. A continuacin se hace el paso de induccin propiamente dicho. Para esto primero se supone que la propiedad se cumple tras haber hecho i pasos de derivacin (esto es la hiptesis de induccin), y luego se prueba que tambin se cumple al hacer un paso ms de derivacin (esto es, para las palabras derivadas en i+1 pasos).

Teora de la ComputacinAl concluir este paso, se ha probado que todas las palabras intermedias en el proceso de derivacin cumplen con la propiedad.

4. Finalmente, hay que particularizar la propiedad para la ultima palabra de la derivacin, que es la que solo contiene constantes.

Con esto se termina la prueba.Teora de la Computacin3. Pruebas de completezTeora de la ComputacinLas pruebas de completez muestran que todas las palabras del lenguaje en cuestin pueden efectivamente ser generadas utilizando la gramtica dada. Esto puede ser en ocasiones difcil, y no hay recetas tan uniformes como para las pruebas de correccin.

Ntese que la completez y la correccin de una gramtica son propiedades independientes, y una gramtica dada puede tener una, las dos o ninguna.prueba de completezTeora de la ComputacinPor ejemplo, si eliminamos la regla 2 de la gramtica, de todas maneras la prueba de correccin que realizaremos mas adelante seguira funcionando, pero en cambio no habr completez, porque algunas palabras, como (())(()) no pueden ser generadas por la gramtica.prueba de completezTeora de la Computacin4. EjemplosTeora de la ComputacinEjemplo.- Probar la correccin de la gramtica de los parntesis bien balanceados, que contiene las siguientes reglas:

1. S (S)

2. S SS

3. S ().prueba de correccinTeora de la Computacin

Grafico parntesis bien balanceados()(()),()()(),((())),etcPara hacer la prueba por induccin en la longitud de la derivacin, necesitamos primero generalizar el enunciado de forma que sea aplicable a las palabras con variables que aparecen a la mitad de la derivacin.

Esto es, necesitamos un lenguaje extendidodonde se admita que las palabras contengan variables.

Hacemos la siguiente definicin:

PX = { (V U *) | elim(S, ) P}prueba de correccinTeora de la ComputacinEs decir, eliminando las S de las palabras de PX, obtenemos palabras de parntesis bien balanceados.prueba de correccinTeora de la ComputacinBase de la induccin.- En 0 pasos, se tiene (trivialmente) una palabra en PX.

Hiptesis de induccin.- En k pasos, se generan palabras en PX, de la forma S , con V*

Paso de induccin.- A la palabra S , generada en k pasos, se le pueden aplicar las reglas 1-3.

Evidentemente la aplicacin de las reglas 2 y 3 genera palabras SS y en Lxprueba de correccinTeora de la ComputacinAunque es menos evidente, la aplicacin de la regla 1 produce palabras (S) que tambin estn en Lx.

Finalmente, la ltima regla que debe aplicarse es la 3, lo que nos da una palabra con los parntesis bien balanceados.prueba de correccinTeora de la ComputacinPrueba de completez

Hacemos una prueba por induccin sobre la longitud de la palabra.

Base de la induccin: La gramtica puede generar todas las palabras de longitud 2 (Porla regla 3).

Hiptesis de induccin: La gramtica puede generar todas las palabras de longitud menoro igual a k. (Claramente k es par).prueba de completezTeora de la ComputacinPaso de induccin: Notamos que para una palabra dada w en P (esto es, que tiene losparntesis bien balanceados), |w| = k + 2 solo hay dos posibilidades:

1. w se puede partir en w1 y w2, w = w1w2, de forma tal que w1,w2 P.

2. w no se puede partir en dos partes.prueba de completezTeora de la ComputacinEn el caso 1, aplicando inicialmente la regla S SS, se debe poder generar w1 a partir de la S de la izquierda, por hiptesis de induccin, ya que |w1|k. Similarmente para w2, con la S de la derecha.prueba de completezTeora de la ComputacinEn el caso 2, w = (w), donde w P, es decir, al quitar los dos parntesis ms externos se tiene una palabra con parntesis bien balanceados (Porque?). Como |w| = k, por hiptesis de induccin w se puede generar con la gramtica.

La palabra w se puede entonces generar aplicando primero la regla S (S), y luego continuando con la derivacin de w que existe por hiptesis de induccin.

Prueba completada.prueba de completezTeora de la ComputacinGraciasTeora de la Computacin