Existen diversas técnicas para probar que una conjetura es

Anuncio
presentación
Cátedra:
LENGUAJES
FORMALES
Y
AUTÓMATAS
LENGUAJES
FORMALES
Y
AUTÓMATAS
Profesora
Ana G. Maguitman
consultas: viernes 10hs (oficina 205)
email: [email protected]
presentación
y
pruebas
presentación
presentación
y
pruebas
Asistente
Telma Delladio:
consultas: jueves 11hs (hall DCIC)
email: [email protected]
Régimen de cursado:
Dos parciales y un recuperatorio
Primer Parcial
fecha: 28 de septiembre
unidades 1, 2, 3 y 4 (primera parte)
Secundo Parcial
fecha: 9 de noviembre
unidades 4 (última parte), 5 y 6
Recuperatorio
fecha: 21 de noviembre
Ayudantes
Laura Barda
Virginia Cardoso
Nicolás Komansky
Maximiliano Vera
Calificaciones
A, B o C: aprobado
D: desaprobado
Para promocionar se necesita
n
Página de la materia:
n
obtener A en ambos parciales y
aprobar un examen teórico el día 30 de noviembre
http://cs.uns.edu.ar/~td/lfya
preguntas
técnicas de pruebas computacionales
LENGUAJES
FORMALES
Y
AUTÓMATAS
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
presentación
y
pruebas
CONTENIDO
Teoremas y pruebas informales [G2.1]. Pruebas
exhaustivas [G2.1]. Pruebas directas [G2.1].
Contraposición [G2.1]. Contradicción [G2.1].
Inducción [G2.2]. Primer principio de inducción
[G2.2]. Pruebas por inducción matemática [G2.2].
Segundo principio de inducción [G2.2]. Definición y
ejemplos de algoritmos. Pruebas de correctitud de
un algoritmo [G1.6,G2.3].
GERSTING, JUDITH L. “Mathematical Structures for
Computer Science: A Modern Approach to Discrete
Mathematics”. W H Freeman & Co, 2006.
técnicas de prueba
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Existen diversas técnicas para probar
que una conjetura es verdadera o
mostrar que es falsa.
Mostrar que es falsa utilizando un
contraejemplo.
Prueba exhaustiva.
Prueba directa.
Contrapositiva.
Contradicción.
Prueba por inducción.
conjeturas
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
En la práctica o investigación
observamos casos en los que Q es
verdadero siempre que P es
verdadero.
A partir de estas
experiencias
se puede formular
la conjetura:
P→Q
Si P es verdadero
entonces Q es verdadero.
1
conjeturas vs. teoremas
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Sin embargo, es necesario utilizar
algún tipo de razonamiento deductivo
para verificar la verdad o falsedad de
una conjetura.
contraejemplos
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Cuando una conjetura es probada pasa a
ser un teorema .
O podríamos encontrar un contraejemplo
para mostrar que la conjetura es falsa, un
caso en que P sea verdadera y Q falsa.
n =1, n! = 1, n2 = 1
n =2, n! = 2, n2 = 4
n =3, n! = 6, n2 = 9
n =4, n! = 24, n2 = 16
más sobre conjeturas, teoremas y contraejemplos
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
En el siglo XVII
Fermat conjeturó
que los números
de la forma
son primos para
todo entero
positivo n.
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
no es primo
pruebas exhaustivas
presentación
y
pruebas
Ejemplo:
“si un entero entre 1 y 13 es divisible por
6 también es divisible por 3”
Prueba
6 es divisible por 6, también es divisible por
3
12 es divisible por 6, también es divisible
por 3
1, 2 ,3, 4, 5, 7, 8, 9, 10, 11, y 13: no son
divisibles por 6.
SI
SI
SI
NO (contraejemplo)
pruebas exhaustivas
100 años más tarde Euler
refutó esta conjetura
mediante un contraejemplo:
LENGUAJES
FORMALES
Y
AUTÓMATAS
Ejemplo:
¿Es la siguiente conjetura un teorema?
“para cada entero positivo n, n! ≤ n2”
Los contraejemplos sirven para probar
que algo es falso pero generalmente
las pruebas basadas en ejemplos no
son útiles para probar que algo es
verdadero .
Sin embargo, cuando las conjeturas se
refieren a una colección finita podemos
mostrar que la conjetura es verdadera
para cada elemento de la colección.
A esto se lo llama prueba exhaustiva .
prueba directa
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
La manera más natural de probar
P → Q (si P es verdadero, entonces Q
es verdadero) es mediante la prueba
directa:
Asumiendo la hipótesis P deducir Q.
La prueba puede ser
Formal (construyendo un argumento válido
basado en la lógica).
Menos formal (más natural).
2
prueba directa
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Ejemplo (prueba informal)
“si x e y son enteros pares, entonces el
producto xy es también un entero par”
prueba por contrapositiva
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Prueba
Sean x = 2m, y=2n.
Luego xy=2m2n=2(2mn).
A veces es difícil probar directamente
la conjetura P → Q. Podría ser más
fácil probar ¬Q → ¬P. A esto se lo
conoce como prueba por
contrapositiva.
¬Q → ¬P es la contrapositiva de P → Q.
Ejemplo
“para un entero n, si n2 es impar, entonces
n es impar”
Podemos probarlo mostrando que “si n es
par, entonces n2 es par” (lo cual ya fue
realizado)
prueba por contradicción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Las pruebas por contradicción se obtienen
asumiendo que la conjetura es falsa y
mostrando que esa suposición implica que
una propiedad conocida es falsa.
Para probar P→Q asumo PΛQ’ y llego a una
contradicción
Ejemplo
“Si x + x = x, entonces x = 0”
Prueba
Asumir x + x = x y x ≠ 0,
entonces 2x = x y dado que x ≠ 0, podemos
dividir ambos lados de 2x = x por x.
Obtenemos 2 = 1 (contradicción).
prueba por contradicción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Ejemplo
Probar que
no es racional
Prueba
Asumamos que
es racional.
Entonces
=p/q donde q≠0 y p,q son
enteros y no tienen factores comunes
2 = p2/q2
2 divide a q2
2 q 2= p2
2 divide a q
2 divide a p2 2 divide a p y q (contradicción)
2 divide a p
4 divide a p2
2 q 2 = 4x
q2 = 2x
ejercicios
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
¿Dónde está el error?
Sean a y b enteros no negativos tales
que a = b.
a=b
a2 = ab
a2 − b2 = ab − b2
(a + b)(a − b) = (a − b)b
a+b=b
2b = b
2=1
resumiendo
LENGUAJES
FORMALES
Y
AUTÓMATAS
Técnica de
prueba
Método para
probar P→Q
Acotaciones
prueba exhaustiva
Demostrar P → Q
para todos los casos
posibles
Sólo puede ser
usado para probar un
número finito de
casos
prueba directa
Asumir P y deducir Q
Método más estándar
prueba por
contrapositiva
Asumir Q’ y deducir P’
Usar si Q’ tiene más
potencia como
hipótesis que P.
prueba por
contradicción
Asumir PÙQ’, deducir
una contradicción
Usar cuando Q’ nos
lleva a un absurdo.
presentación
y
pruebas
3
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Sea P(n) una propiedad definida para el
entero n y supongamos:
1 tiene la propiedad P
1. P(1) caso base
2. Para todo entero positivo k,
P(k) → P(k+1) paso inductivo
si esto vale,
entonces P(n)
vale para todo
entero positivo n
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Ejemplo
Probar
para n > 0
Prueba
Caso base: n = 1, es verdadero ya que 1 = 1(1+1)/2
Hipótesis inductiva:
asumir que es verdadero para n=k, es decir,
si cualquier entero positivo k tiene la
propiedad P, entonces el sucesor también
la tiene.
Paso inductivo:
probar que es verdadero para n=k+1, es decir
Entonces P(n) para todo n
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
usando hipótesis
inductiva
presentación
y
pruebas
Ejemplo
¿Cuantos nodos tiene un árbol binario
completo de altura n?
Probar
Nodos(n)= 2n+1-1
Prueba
Caso base:
n=1 es verdadero ya que 1 + 2 = 2 1+1-1
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Paso inductivo:
Asumamos: Nodos(k)= 2k+1-1
Queremos probar:
Nodos(k+1)= 2k+2-1.
Nodos(k+1) =
Nodos(k) +2 k+1 =
2k+1-1 + 2k+1= 2 k+2-1
( Def)
(HI)
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Ejemplo
Los números de
Fibonacci se definen
como:
Los primeros números de fibonacci
son:
0, 1, 1, 2, 3, 5, 8, 13, 21,…
4
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Mostrar que
para todo n ≥ 1.
primer principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Prueba
Caso base:
Probar
Probemos
primer principio de inducción
Tomar un cuadrado de 2 n´2n con una
baldosa faltante
presentación Podemos cubrirlo
y
pruebas con L’s?
LENGUAJES
FORMALES
Y
AUTÓMATAS
ejemplo para 8´8:
primer principio de inducción
Caso base (2´2) es fácil.
LENGUAJES
FORMALES
Y
AUTÓMATAS
Paso inductivo:
Asumir que es posible para 2n´2n
presentación Para un cuadrado
y
pruebas de 2n+1 ´2 n+1
miramos los 4
cuadrados menores
y usamos una L
para cubrir los 3
espacios indicados
en la figura.
Aplicar hipótesis
inductiva
seguimos con inducción …
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Los métodos de inducción pueden ser
aplicados a estructuras diferentes a los
enteros. Por ejemplo matrices, árboles
secuencias, etc.
La propiedad crucial es que exista un
principio de buen ordenamiento:debe
existir una noción de tamaño de tal manera
que todos los objetos tengan un tamaño
finito y cada conjunto de objetos deberá
contener un objeto menor (el más chico de
todos)
Ejemplos: profundidad de un árbol, dimensión
de matrices o grillas, longitud de secuencias,
etc.
Paso inductivo:
Asumamos
BNF e inducción sobre derivaciones y secuencias
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
La forma normal de Backus-Naur
(BNF) es una notación usada
para describir lenguajes formales
Una especificación de BNF es un
sistema de reglas de derivación,
de la forma
John Warner Backus
<simbolo> ::= <expresión>
(1924 –2007)
donde <símbolo> es un no-terminal, y
<expresión> consiste en secuencias de
símbolos y/o secuencias separadas por la barra
vertical, '|' (indicando una opción). La secuencia
de símbolos puede contener otros símbolos no terminales, símbolos terminales, o ε (la cadena
nula).
5
BNF e inducción sobre derivaciones y secuencias
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Ejemplo
Sea L={ab, aabb,aaabbb,…} el
lenguaje de cadenas que contienen n
a’s seguidas de n b’s con n ≥ 1. Este
lenguaje también puede denotarse
como L={a nbn n ≥ 1}
BNF e inducción sobre derivaciones y secuencias
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
La gramática G en notación BNF que
usamos para describir L es la siguiente
<cadena> ::= ab | a<cadena>b
Probar por inducción que L(G)=L
BNF e inducción sobre derivaciones y secuencias
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
L Í L(G)
Toda cadena de la forma akbk puede derivarse a
partir de <cadena>. La prueba se realiza por
inducción sobre la longitud de la cadena.
Caso base: |ω| = 2, <cadena>⇒ ab
Hipótesis inductiva: Asumamos que anbn de longitud
2n puede ser derivada a partir de <cadena>
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
presentación
y
pruebas
Mostar que podemos sumar cualquier monto de 8¢ o
más utilizando sólo estampillas de 3¢ y 5¢.
Prueba
Caso base: P(8) 8 = 5+3
También lo vemos para dos casos adicionales:
P(9) 9=3+3+3 y P(10) 10=5+5
Hipótesis inductiva: P(r) vale para 8 ≤ r ≤ k
Paso inductivo: Probemos P(k+1) donde k+1 es al
menos 11. Si k+1 ≥ 11, entonces k+1-3 = k-2≥8. Por
hipótesis inductiva P(k-2) es verdadera y por lo
tanto k-2 puede ser escrito como suma de 3’s y 5’s.
Sumando 3 obtenemos k+1 como suma de 3’s y 5’s.
Luego P(k+1) se verifica.
Sea P(n) una propiedad definida para el
entero n y supongamos:
1 tiene la propiedad P
1. P(1) caso base
2. Si P(r) es verdadero para
todo entero positivo r,1≤r≤k
entonces P(k+1) es
verdadero paso inductivo
si esto vale,
entonces P(n)
vale para todo
entero positivo n
si cualquier entero entre 1 y k tiene la
propiedad P, entonces k+1 también la tiene.
Entonces P(n) para todo n
segundo principio de inducción
Ejemplo
Toda secuencia de símbolos que podemos derivar a
partir de <cadenas> consiste en cadenas de la
forma akbk. La prueba se realiza por inducción sobre
el número de pasos en la derivación.
Caso base: n=1 <cadena> ⇒ ab, es de la forma a1b1
Hipótesis inductiva: Supongamos que derivaciones
con n pasos producen cadenas de la forma a kbk.
Paso inductivo: Consideremos una derivación con n+1
pasos
<cadena> ⇒ a<cadena>b ⇒ axb
Por la hipótesis inductiva x es de la forma akbk y por
lo tanto axb = ak+1bk+1.
segundo principio de inducción
Paso inductivo: Consideremos una cadena ω de
longitud 2(n+1). Entonces ω = an+1bn+1 =aanbnb.
Dado que |anbn |= 2n, puede derivarse a partir de
<cadena> por la hipótesis inductiva. Por lo tanto
<cadena> ⇒ a<cadena>b ⇒ aanbnb = ω.
Concluimos que ω puede derivarse a partir de <cad
ena>.
LENGUAJES
FORMALES
Y
AUTÓMATAS
L(G) Í L
segundo principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Ejemplo
Sea L={ε,(),()(), (()),(()())…} el lenguaje
de los paréntesis bien balanceados.
La gramática G en notación BNF que
utilizamos para describir L es la
siguiente:
<pbb> ::= (<pbb>)<pbb> | ε
Probar que L(G)=L
6
segundo principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
L(G) Í L
Toda secuencia de símbolos que podemos derivar a
partir de <pbb> consiste en cadenas de paréntesis
bien balanceados. La prueba se realiza por
inducción sobre el número de pasos en la
derivación.
Caso base: n=1 <pbb> ⇒ ε, es balanceado
Hipótesis inductiva: Supongamos que derivaciones
con n o menos pasos producen cadenas
balanceadas.
Paso inductivo: Consideremos una derivación con n+1
pasos
<pbb> ⇒ (<pbb>)<pbb> ⇒ (x) <pbb> ⇒ (x)y
Las cadenas x e y fueron derivadas en n o menos
pasos. Por la hipótesis inductiva x e y son
balanceadas y por lo tanto (x)y es balanceada.
segundo principio de inducción
L Í L(G)
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Toda cadena balanceada puede derivarse a partir
de <pbb>. La prueba se realiza por inducción sobre
la longitud de la cadena.
Caso base: |ω| = 0, <pbb> ⇒ ε
Hipótesis inductiva: Asumamos que toda cadena
balanceada de longitud menor o igual que 2n puede
ser derivada a partir de <pbb>
Paso inductivo: Consideremos una cadena
balanceada ω de longitud 2(n+1) y sea (x) el prefijo
más corto de ω que está bien balanceado. Entonces
ω = (x)y, donde x, y están balanceados. Dado que
|x|, |y| ≤ 2n, pueden derivarse a partir de <pbb> por
la hipótesis inductiva. Por lo tanto <pbb> ⇒
(<pbb>)<pbb> ⇒ (x)<pbb> ⇒ (x)y = ω. Concluimos
que (x)y puede derivarse a partir de <pbb>.
segundo principio de inducción
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
¿Dónde está el error?
Todos los números naturales son pares (P(n) para
todo n).
Prueba
Caso base: n= 0 es par, entonces P(0) es verdadero.
Hipótesis inductiva: asumamos que vale
P(0), P(1), . . . , P(n)
Paso inductivo: probemos P(n + 1),
Consideremos n + 1. De acuerdo a P(n), n es par, y de
acuerdo a P(1), 1 es par. Por lo tanto n+1 es par ya
que la suma de dos números pares es par. Por lo
tanto P(n+1) es verdadero.
De acuerdo al segundo principio de inducción
podemos concluir que P(n) se verifica para todos los
números naturales n.
correctitud de algoritmos
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
correctitud parcial y total
LENGUAJES
FORMALES
Y
AUTÓMATAS
Correctitud parcial
Si este punto es alcanzado
presentación
y
pruebas
entrada legal
Algoritmo
entonces esta es la
salida deseada
Correctitud total
Este punto es alcanzado
entrada legal
Algoritmo
aserciones
LENGUAJES
FORMALES
Y
AUTÓMATAS
salida
y esta es la salida deseada
salida
Un algoritmo es correcto si para
cualquier entrada (input) legal termina
y produce la salida (output) deseada.
Las pruebas de correctitud no pueden
ser automatizadas.
Pero existen técnicas prácticas y
formalismos rigurosos que ayudan a
razonar sobre la correctitud de los
algoritmos.
presentación
y
pruebas
Para probar correctitud parcial asociamos una
serie de aserciones (sentencias sobre el
estado de la ejecución) a puntos específicos
del algoritmo.
Precondiciones: aserciones que deben ser
válidas antes de ejecutarse un algoritmo o
subrutina
Poscondiciones: aserciones que deben ser
válidas luego de ejecutarse un algoritmo o
subrutina
7
aserciones
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
{Q}P{R} es llamada tripla de Hoare.
Q: precondición para el programa P
R: poscondición pare el programa P
{Q} P es el programa
Anthony Hoare
S0 compuesto por
{R1} las sentencias
S1 S ,S ,…,S
0
1
n-1
{R2}
Sn-1
{R}
Para probar
que P
es correcto
regla de asignación
{Ri} x=e {R i+1}
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
{Q} S 0 {R1}
{R1} S1{R2}
{R2}S2{R3}
Ejemplo
{x-1>0}
x=x-1
{x>0}
{Rn-1} Sn-1{R}
regla de condicional
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
if condición B then
P1
else
{Q ΛB} P 1 {R}
P2
{Q ΛB’} P 2 {R}
end if
regla del ciclo (loop)
LENGUAJES
FORMALES
Y
AUTÓMATAS
{Q} si {R}
presentación
y
pruebas
Ejemplo
{n=5}
if n >= 10 then
y =100
else
y=n+1
end if
{y=6}
invariante de ciclo
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Prueba de Q: j=i*y utilizando inducción
Caso base:
Q(0): j0=i0*y
Hipótesis inductiva:
Asumamos Q(k): jk=ik*y
Paso inductivo:
Probemos Q(k+1): jk+1=ik+1*y
Por el programa jk+1=jk+y , ik+1=ik+1
Luego jk+1=jk+y = ik*y+y= (ik+1)*y= ik+1*y
while condición B do
P
{QΛB} P {Q}
end while
Ejemplo
{Q} si {QΛB’}
Q se llama invariante
de ciclo
Producto(enteros no negativos x e y)
variables locales: enteros i,j
i=0
j=0
while i<> x do
j=j+y
Q: j=i*y
i=i+1
end while
return j
algoritmo de Euclides
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
¿Cómo encontrar el máximo
común divisor de dos
enteros no negativos a y b,
donde a y b no son
simultáneamente 0?
Euclides
(300 AC)
El algoritmo de Euclides se basa en el
siguiente hecho:
(" a, b, q, r) [(a=qb+r) à (mcd(a,b)=mcd(b,r))]
8
algoritmo de Euclides (cont.)
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
//a,b son enteros no negativos y a>=b
mcd(a,b){
i=a
j=b
while j <> 0 do
computar r tal que i=qj+r, 0<=r<j
i=j
j=r
end while
return i;
}
algoritmo de Euclides (cont.)
LENGUAJES
FORMALES
Y
AUTÓMATAS
presentación
y
pruebas
Probar que se verifica la invariante de
ciclo Q: mcd(i,j)=mcd(a,b)
Caso base
Q(0): mcd(i0,j0)=mcd(a,b)
Hipótesis inductiva
Q(k): mcd(ik,jk)=mcd(a,b)
Paso inductivo
Probar Q(k+1): mcd(ik+1,jk+1)=mcd(a,b)
ik+1= jk ; jk+1= rk+1
mcd(ik+1,jk+1)= mcd(jk,rk+1) = mcd(ik,jk)=
mcd(a,b)
9
Descargar