Práctico 2: Especificación, derivación yverificacióndeprogramasfuncionales

Documentos relacionados
Guía 2: Funciones, listas, recursión e inducción

Inducción y recursión

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Producto de matrices triangulares superiores

«La derivada de una función en un punto representa geométricamente la pendiente de la recta tangente a la función en dicho punto»

Algoritmos: Diseño de algoritmos por inducción

Soluciones oficiales Clasificación Olimpiada Nacional Nivel Mayor

Análisis de Algoritmos

Clase 10: Extremos condicionados y multiplicadores de Lagrange

Se desea estudiar el comportamiento de una función a medida independiente x se aproxima a un valor específico.

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7

Interrogación 2. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003

GRAMATICAS LIBRES DEL CONTEXTO

Criterios de divisibilidad y Congruencias

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales.

Sucesiones Introducción

Funciones reales de variable real

CONTINUIDAD DE FUNCIONES. SECCIONES A. Definición de función continua. B. Propiedades de las funciones continuas. C. Ejercicios propuestos.

Inducción Matemática. Departamento de Matemáticas. Inducción Matemática p. 1/31

Introducción a la Computación (para Matemática) Primer Cuatrimestre de 2015

INTRODUCCIÓN. FUNCIONES. LÍMITES.

Prácticas para Resolver PROBLEMAS MATEMÁTICOS

Tema 2.- Formas Cuadráticas.

Clase 1: Primalidad. Matemática Discreta - CC3101 Profesor: Pablo Barceló. P. Barceló Matemática Discreta - Cap. 5: Teoría de números 1 / 32

GUÍA BÁSICA DE SCHEME v.4

SESIÓN 6 INTERPRETACION GEOMETRICA DE LA DERIVADA, REGLA GENERAL PARA DERIVACIÓN, REGLAS PARA DERIVAR FUNCIONES ALGEBRAICAS.

Variables aleatorias

Estructuras de Repetición (Repita para)

Soluciones - Tercer Nivel Infantil

Tema 06: Derivación implícita, vector gradiente y derivadas direccionales

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

UNIDAD DE APRENDIZAJE I

Algoritmos. Diseño de algoritmos por inducción. Alberto Valderruten. Dept. de Computación, Universidade da Coruña

Capitulo IV - Inecuaciones

* e e Propiedades de la potenciación.

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

Luis Zegarra A. Sucesiones, inducción y sumatorias 97

Tema 7. El sistema de clases

Índice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción

Análisis Matemático I: Numeros Reales y Complejos

Sucesiones, inducción y sumatorias

ƒ : {(1, 4), (2, 5), (3, 6), (4, 7)}.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

1. Convergencia en medida

UNIDAD: NÚMEROS Y PROPORCIONALIDAD. Los elementos del conjunto IN = {1, 2, 3, 4, 5, 6, 7,...} se denominan números

Límites y continuidad de funciones reales de variable real

FICHAS REPASO 3º ESO. Para restar números enteros, se suma al minuendo el opuesto del sustraendo y después se aplican las reglas de la suma.

(A) Primer parcial. si 1 x 1; x 3 si x>1. (B) Segundo parcial

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Potencias. Potencias con exponente entero. Con exponente racional o fraccionario

Forma polar de números complejos (repaso breve)

LOS NUMEROS IRRACIONALES Y SU REPRESENTACIÓN EN LA RECTA NUMERICA

DERIVACIÓN DE LAS FUNCIONES ELEMENTALES

ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Enteros

((X A Y ) = A ) si y solo si X = Y, A = B, A X = X, (X A Y ) = X Y, (X A Y ) = X Y

Polinomios. 1.- Funciones cuadráticas

Programación Funcional Haskell Clase 21

13. Utilizar la fórmula del término general y de la suma de n términos consecutivos

MATEMÁTICAS 5. º CURSO UNIDAD 1: SISTEMAS DE NUMERACIÓN

Metodología de la Programación II. Recursividad

Clase 25/09/2013 Tomado y editado de los apuntes de Pedro Sánchez Terraf

Tabla de Derivadas. Función Derivada Función Derivada. f (x) n+1. f (x) y = f (x) y = ln x. y = cotg f (x) y = ( 1 cotg 2 f (x)) f (x) = f (x)

Interpretar la equivalencia entre fracciones y decimales. 4to. Grado Universidad de La Punta

( ) ( ) a) 8 2. b) 9 12 c) 625 : 5 d) 10 : 6. a) 8 2 = 8 2 = 16 = 4. b) 9 12 = 9 12 = c) 625 : 5 = = 125 = d) 10 : 6 = = 6 3

SISTEMA DE NUMEROS REALES

SECUENCIA DIDÁCTICA PROPIEDAD DISTRIBUTIVA DE LA MULTIPLICACIÓN RESPECTO DE LA SUMA Y LA RESTA

Las operaciones con números irracionales

CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 5º ED. PRIMARIA

CAPÍTULO 3: PORCIONES Y NÚMEROS ENTEROS

ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3

Estructuras de Repetición (Hacer-Mientras)

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Semana 09 [1/28] Sucesiones. 29 de abril de Sucesiones

DERIVADAS, LÍMITES Y TEOREMAS DE DERIVABILIDAD

Un paquete de problemas de potenciación

LABORATORIO 1 OPERACIONES DE ENTRADA Y SALIDA

MATEMÁTICAS 4. º CURSO UNIDAD 7: DIVISIÓN

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

El Teorema Fundamental del Álgebra

ESCRITURA Y GRAFICACIÓN DE ECUACIONES LINEALES EN UNA SUPERFICIE PLANA

1. NUMEROS REALES a. Los Números Reales

Ampliación Matemática Discreta. Justo Peralta López

10. LIMITES DE FUNCIONES

Teoría Tema 9 Ecuaciones de la recta en el espacio tridimensional

Método para determinar equilibrios de Nash en juegos bimatriciales

Secuencias. Mauro Jaskelioff 18/05/2015

Límites Laterales. El límite por la derecha se denota. x 2 + x 2 = 1. x 2. x + x 2. x = x + x 2. El límite por la izquierda se denota

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

1 - Ecuaciones. Sistemas de Ecuaciones Mixtos

Estructuras de Control

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

A)2011 B)2012 B)2013 D)2014 E)2015. C) a5 +b 5

Bloque 1. Aritmética y Álgebra

LA INTEGRAL DEFINIDA

Sistemas de Ecuaciones Lineales y Matrices

Trabajo de Matemáticas AMPLIACIÓN 3º ESO

y cualquier par (x, y) puede escalarse, multiplicarse por un número real s, para obtener otro vector (sx, sy).

ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.

Transcripción:

Práctico 2: Especificación, derivación yverificacióndeprogramasfuncionales Algoritmos y Estructuras de Datos I 2 do cuatrimestre 2015 El objetivo general de esta guía es desarrollar nuestras capacidades para leer y escribir especificaciones de programas, encontrar programas recursivos a partir de ellas utilizando la técnica de derivación, y ademas comprender qué hacen ciertos programas y verificar propiedades sobre ellos Las demostraciones por inducción son fundamentales para estas actividades 1 Retomemos el ejercicio 8 del práctico 1 Una solución al problema de la especificación de la función sumatoria es la siguiente: sumatoriaxs = h P i :0apple i<#xs : xsi i Y un programa recursivo que computa tal función es: sumatoria :[Num]! Num sumatoria[] =0 sumatoria(xxs = x + sumatoriaxs Demostrá por inducción que, para una lista arbitraria xs, la definición recursiva de sumatoria satisface la especificación dada más arriba 2 Expresá en lenguaje natural el significado que le das a cada una de las siguientes fórmulas, donde siempre suponemos que x e y son números, y xs y ys son listas de números: a h9x ::h8y ::x apple yii b h8y ::h9x ::x apple yii Cuál es la diferencia con la anterior? c h8x, z : x<z : h9y ::x<y<zii d h9i :0apple i<#xs : xsi =0i e h8i :0apple i<#xs : xsi 0i f h9i :0<i<#xs : xs(i 1 >xsii g #xs 6= #ys _h9i :0apple i<#xs ^ 0 apple i<#ys : xsi 6= ysii 3 Enunciá los teoremas de Separación de Término para el cuantificador Calculá a mano cada una de las reglas para una valor particular, digamos n = 5, para darte una idea de como funcionan 4 Estamos en medio del proceso de derivación de un programa recursivo suma hasta : Num! Num, especificado como suma hastan = h P i :0apple i<n: i i que suma los primeros n números naturales (sin incluir n En el caso base encontramos suma hasta0 =0 Demostrá que esto es correcto Ahora, en el caso inductivo, nos estancamos después de realizar los siguientes pasos: suma hasta(n + 1 {especificación } h P i :0apple i<n+1: i i {separación de término } 0+h P i :0apple i<n: i +1i Está bien aplicada la regla del último paso? Podemos continuar la derivación hasta encontrar una definición recursiva? Si te parece que si, dale para adelante Si no, propone un camino alternativo 1

5 Considerá el siguiente programa recursivo: pp[] =1 pp(xxs = x x ppxs Cuál es el tipo de la función computada por pp? Escribí una especificación para pp yverificáquees correcta, por inducción en xs 6 Considerá la función f : A! [A]! Bool, especificada como fexs = h8i :0apple i<#xs : xsi = e i Qué hace esta función? Derivá un programa recursivo a partir de su especificación 7 Considerá la función de exponenciación: exp : Nat! Nat! Nat expxn = x n Esta es una especificación aceptable? En cualquier caso, encontrá una definición recursiva para exp que sólo utilice la + como operación elemental 8 Considerá el siguiente programa recursivo: Qué hace? Demostrá que del : A! [A]! [A] deln[] =[] deln(xxs =(n = x! delnxs 2 n 6= x! xdelnxs h8i :0apple i<#(delnxs : (delnxsi 6= n i Ayuda: Planteá dos casos inductivos, de acuerdo a la guarda del caso recursivo de del La especificación anterior no caracteriza completamente lo que hace la función Cómo especificarías que delnxs mantiene los valores que ocurren en xs que son diferentes a n? Ahora sí la especificación dice todo lo que hace la función? 9 Considerá el siguiente programa recursivo: cuantos :(A! Bool! [A]! Num cuantost[] =0 cuantost(xxs =(Tx! 1+cuantosTxs 2 Tx! cuantostxs Cómo especificarías esta función? Una vez que creas tener la especificación correcta, verificá el programa anterior respecto a ella 10 A partir de las siguientes especificaciones, da el tipo de cada función y derivá programas recursivos para cada una de ellas: a suma potenciasxn = P i :0apple i<n: x i Recordá el ejercicio 7 b suma paresn = h P i :0apple i apple n ^ pari : ii, donde par es una función dada, que satisface parn h9i :: n =2 i i c buscaexs = hmin i :0apple i<#xs ^ xsi = e : i i 2

11 Dada el siguiente programa recursivo: fib : Nat! Nat fib0 =0 fib1 =1 fib(n + 2 = fibn+ fib(n + 1 demostrá que la siguiente propiedad es válida (para todo n 2 Nat: fibn < 2 n 12 El siguiente programa recursivo calcula el mínimo elemento de una lista no vacía de enteros: minimo :[Num]! Num minimo[x] = x minimo(xyxs =(x<y! minimo(xxt 2 x y! minimo(y xs Cómo podrías simplificarlo para eliminar el uso de análisis por casos? Hay al menos dos estrategias principales para demostrar que tu programa (simplificado es equivalente al programa anterior se te ocurren cuales son? 13 Considerá una función iguales :[A]! Bool, que determina si los elementos de una lista de tipo A son todos iguales entre sí La siguiente especificación para tal función es correcta?: h8i :0apple i<#xs : xsi = xs(i + 1 i Si no lo es, corregila En cualquier caso, derivá un programa recursivo que compute esta función 14 Especificá formalmente y luego derivá un programa recursivo para la función creciente :[Int]! Bool, que determina si los elementos de una lista de enteros están ordenados en forma creciente 15 Especificá formalmente y luego derivá un programa recursivo para la función prod :[Num]! [Num]! Num, que calcula el producto entre pares de elementos en iguales posiciones de las listas y suma estos resultados (producto punto Considerá cuidadosamente la situación en que las listas tienen distinto tamaño 16 Considerá la sentencia El valor e ocurre en las posiciones pares de la lista xs Cuál de las siguientes especificaciones formales carateriza tal sentencia? a h9i :0apple i<#xs ^ pari : xsi = e i b h8i :0apple i<#xs ^ pari : xsi = e i Considerá ahora la sentencia El valor e ocurre únicamente en las posiciones pares de la lista xs Cómo la especificarías? 17 Considerá el siguiente programa recursivo: rev :[A]! [A] rev[] =[] rev(xxs = revxs ++ [ x] Qué hace este programa? Considerá ahora la siguiente propiedad: rev(xs ++ ys =revys ++ revxs Cómo expresarías en lenguaje natural su significado? Demostrá que es válida 3

18 La función promedio :[Num]! Num, que calcula el promedio de una lista de números, puede especificarse como sigue: promedioxs = h P i :0apple i<#xs : xsi i / hn i :0apple i<#xs : Truei El numerador caracteriza una función sobre la que ya hemos trabajado; el denominador una función muy conocida cuál es? Cuál sería un programa que calcule promedio? Cómo demostrás que es correcto? 19 Especificá formalmente la función divide : Nat! Nat! Bool, que determina si el primer parámetro divide al segundo Luego encontrá un programa que la compute y demostrá su corrección 20 Utilizando la función anterior, escribí (sin necesidad de derivar un programa es primo : Nat! Bool, que determina si un número es primo Cómo especificarías el programa es primo? 21 Expresá formalmente las siguientes sentencias: a El elemento e ocurre un número par de veces en la lista xs b Si e ocurre en la lista xs, entonces l ocurre en alguna posicion anterior en la misma lista c Existe un elemento de la lista xs que es estrictamente mayor a todos los demás d Cualquier valor x que anula la funcion f (es decir que fx = 0 ocurre en la lista xs e En la lista xs solo ocurren valores que anulan la funcion f 22 Para cada una de las siguientes especificaciones de funciones, escribí el tipo de la función y derivá un programa recursivo que la compute: a psumxs = h8i :0apple i apple #xs : sumatoria(xs"i 0 i b sum8xs = h9i :0apple i apple #xs : sumatoria(xs"i =8i 23 Especificá formalmente las siguientes funciones, y luego derivá programas recursivos que las computen: a cuad : Nat! Bool, que dado un natural determina si es el cuadrado de un número b n8 :[Num]! Nat, que cuenta la cantidad de segmentos iniciales de una lista cuya suma es igual a 8 24 Describí en lenguaje natural el significado de las siguientes especificaciones: a h9bs :: ys = xs ++ bs i b h9as, bs :: ys = as ++ xs ++ bs i Luego encontrá programas recursivos para cada una de ellas, y demostrá que son correctos 25 Especificá formalmente las siguientes sentencias: a La lista xs es un segmento final de la lista ys b Las listas xs y ys tienen en común un segmento c La lista xs de numeros enteros tienen la misma cantidad de elementos pares e impares d La lista xs posee un segmento no inicial y no final cuyos valores son mayores a los valores del resto de la misma 26 Derivá las siguientes funciones: a Mínima sumatoria de un segmento: suminxs = hmin as, bs, cs : xs = as ++ bs ++ cs : sumatoriabs i b Cantidad de segmentos que suman eso : cant 8xs = hn as, bs, cs : xs = as ++ bs ++ cs : 8 = sumatoriabs i c Máxima longitud de segmento de iguales a e, donde f es la función del ejercicio 6: max igualesexs = hmax as, bs, cs : xs = as ++ bs ++ cs ^ febs : #bs i 4

27 La Torre de Hanoi es un puzzle de ingenio, que consta de tres postes (numerados 0, 1 y 2, y n discos, todos de diferente tamaño, ubicados en alguno de los postes Inicialmente todos los discos están ubicados en el poste 0, ordenados de mayor a menor, con el disco más grande en la base formando una torre: El problema consiste en trasladar toda la torre al poste 2, siguiendo siempre las siguientes reglas: a Sólo se puede mover un disco a la vez b Sólo se puede mover el disco que se encuentra más arriba en algún poste c No se puede colocar un disco sobre otro de menor tamaño Así, una solución al problema se puede describir como una lista de movimientos Por las reglas anteriores, cada movimiento se puede caracterizar por una tupla de valores en {0, 1, 2}; el primer valor indica el poste de donde sale el disco que se encuentra más arriba, y el segundo valor indica el poste donde va a parar Por ejemplo, si consideramos una torre con un único disco (vaya torre!, la mejor solución al problema es mover directamente el disco del poste 0 al poste 2, lo que puede caracterizarse como [(0, 2] Otra solución es [(0, 1, (1, 2], pero en este caso hacemos un movimiento innecesario Si consideramos una torre con dos discos, las reglas nos obligan a, primero mover el disco pequeño al poste 1 (que funciona como poste auxiliar, luego mover el disco grande al poste 2, y finalmente mover el disco chico del poste 1 al poste 2 Es decir la solución es [(0, 1, (0, 2, (1, 2] Por supuesto existen otras soluciones con más movimientos a Encontrá una solución a una Torre de Hanoi con tres discos Justifica la solución, describiendo gráficamente cada paso intermedio Tené en cuenta que la mejor solución consta de 7 pasos! b Encontrá una solución general a una Torre de Hanoi con n discos, definiendo un programa recursivo hanoi : Nat! Nat! Nat! Nat! [(Nat,Nat] tal que hanoiabcn calcula la secuencia de movimientos para llevar una torre de n discos, desde el poste a hacia el poste c, utilizando (posiblemente el poste b de forma auxiliar c Demostrá que #hanoiabcn =2 n 1 28 Para cada una de las siguientes funciones, escribí su tipo y describí en lenguaje natural el significado de su especificación a fxs = hn i, j :0apple i<j<#xs : xsi = xsji b gxs = hmax p, q :0apple p<q<#xs : xsp + xsqi c hxs = hn k :0apple k<#xs : h8i :0apple i<k : xsi < xskii d kxs = h8i, j :0apple i ^ 0 apple j ^ i + j =#xs 1:xsi = xsji e lxs = hmax p, q :0apple p apple q<#xs ^h8i : p apple i<q : xsi 0i : q pi 29 Derivá la función especificada en el ejercicio 28b 30 Derivá un programa recursivo para la función f : [Num]! [Num]! Num, que calcula la mínima diferencia entre valores de las listas xs y ys, y cuya especificación es la siguiente: fxsys = hmin i, j :0apple i<#xs ^ 0 apple j<#ys : xsi ysj i 5