Вы находитесь на странице: 1из 26

PRUEBAS DE CORRECIN

Y
DE COMPLETEZ

Expositor:
Eduardo Gil Montoya

TEMARIO:
1.
2.
3.
4.

Introduccin
Prueba de correccin
Prueba de completez
Ejemplos

Teora de la Computacin

1. Introduccin

Teora de la Computacin

Es 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.
Introduccin

Teora de la Computacin

Las pruebas que nos permitirn lo anterior son


dos:
1. PRUEBA DE CORRECIN
2. PRUEBA
COMPLETEZ
La
cual nosDE
asegura
que todas las palabras
que se generan por medio de la gramtica
Que nos asegura
que no dado.
existan palabras en el
corresponden
al lenguaje
lenguaje dado que no puedan ser generadas
por la gramtica

Introduccin

Teora de la Computacin

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.

Introduccin

Teora de la Computacin

La completez y la correccin de una gramtica


son dos propiedades independientes, ya que
una gramtica dada puede tener ambas, una o
ninguna de ellas

Introduccin

Teora de la Computacin

2. Pruebas de correccin

Teora de la Computacin

La 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 correccin

Teora de la Computacin

1. 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 k 0
pasos, la propiedad se cumple.

Teora de la Computacin

3. 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 Computacin

Al 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 Computacin

3. Pruebas de completez

Teora de la Computacin

Las 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 completez

Teora de la Computacin

Por 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 completez

Teora de la Computacin

4. Ejemplos

Teora de la Computacin

Ejemplo.- Probar la correccin de la gramtica


de los parntesis bien balanceados, que
contiene las siguientes reglas:
1. S (S)
2. S SS
3. S ().

Grafico parntesis bien balanceados


()(()),()()(),((())),etc
prueba de correccin

Teora de la Computacin

Para 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
extendido
donde se admita que las palabras
contengan variables.
Hacemos la siguiente definicin:
P = { (V U *) | elim(S, ) P} Teora de la Computacin

X
prueba de correccin

Es decir, eliminando las S de las


palabras de PX, obtenemos palabras de
parntesis bien balanceados.

prueba de correccin

Teora de la Computacin

Base 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 Lx
prueba de correccin

Teora de la Computacin

Aunque 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 correccin

Teora de la Computacin

Prueba 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
(Por
la regla 3).
Hiptesis de induccin: La gramtica
puede generar todas las palabras de
longitud menor
o igual a k. (Claramente k es par).
prueba de completez

Teora de la Computacin

Paso de induccin: Notamos que para una


palabra dada w en P (esto es, que tiene
los
parntesis 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 completez

Teora de la Computacin

En 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 completez

Teora de la Computacin

En 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 completez

Teora de la Computacin

Gracias

Teora de la Computacin

Вам также может понравиться