Técnicas Avanzadas de Programación Práctica 2: Conjuntos con

Anuncio
Técnicas Avanzadas de Programación
Práctica 2: Conjuntos con distancia mínima (El Reto)
Ingeniería en Informática
Curso 2012/2013
Enunciado de la Práctica 2ª.
Se debe proponer una implementación para el tipo de datos conjunto de números naturales distintos con
las operaciones clásicas de “insertar”, “borrar”, “buscar”, que además soporte la operación “dm”,
distancia mínima, que da el valor absoluto de la diferencia de los números más cercanos del conjunto (0
si el conjunto es vacío o si tiene un solo número). Por ejemplo, si C = {1,5,9,15,18,22}, entonces la
distancia mínima de C es 3, obtenida restando los números 15 y 18 que son los más cercanos de C.
El objetivo que se debe perseguir con la implementación elegida es maximizar la eficiencia en tiempo de
todas las operaciones, teniendo en cuenta que se supone que el uso de las cuatro es igualmente frecuente.
El resultado de la práctica será un fichero “practica2.tar”, de manera que la ejecución de la instrucción
“tar –xvf practica2.tar” genere un directorio denominado “practica2”, que deberá incluir:
1. Los ficheros “conj_dm.ads” y “conj_dm.adb” (exactamente con ese nombre), debidamente
comentados, que contienen la implementación propuesta. El fichero “conj_dm.ads” debe contener
las siguientes líneas:
package conj_dm is
type conj is limited private; --conj es el nombre dado al TAD conjunto
procedure crear(c:out conj);
-- devuelve un conjunto vacío
procedure insertar(c:in out conj; num:in natural);
-- inserta un nuevo natural en el conjunto; si ya estaba, lo deja igual
procedure borrar(c:in out conj; num:in natural);
-- borra el natural del conjunto; si no estaba, lo deja igual
function buscar(c:conj; num:natural) return boolean;
-- si el nº está en el conjunto devuelve verdad; en caso contrario, falso
function dm(c:conj) return natural;
-- devuelve la distancia mínima del conjunto
private
type conj is …
end conj_dm;
2. Un fichero “documentacion.txt” (o “.doc” o “.ps” o “.pdf”) que incluya la explicación de la
solución adoptada y exponga el cálculo del coste asintótico en tiempo en el caso peor de cada
operación.
Para la evaluación de la práctica se tendrá en cuenta tanto el material entregado por el grupo de prácticas
(código y documentación) como también los resultados obtenidos comparando los tiempos de ejecución
de varios tests a los que se someterá el código con los entregados por otros grupos de prácticas. En esos
tests manejaremos conjuntos de hasta 100.000 naturales con hasta unos seis dígitos cada uno y hasta un
millón de operaciones de manipulación del conjunto (inserciones, búsquedas, borrados, distancia
mínima).
Descargar