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