Está en la página 1de 3

Estructuras de Datos y Algoritmos.

2º Grado de Ingeniería de la Salud

Práctica 3 – Búsqueda espacial con QuadTrees

Definición del problema y objetivo

En esta práctica se va a utilizar un tipo de árbol, denominado QuadTree, para almacenar


información espacial y realizar consultas sobre esos datos. El objetivo de la práctica es estudiar
la complejidad media asociada a la construcción de dichos árboles y la complejidad asociada a
la búsqueda de datos.

Implementación de los algoritmos

Crear un proyecto eclipse con el material que hay en el campus virtual (carpeta Materiales >
src). Puedes encontrar una guía en el campus sobre como montar un proyecto eclipse utilizando
un jar.

Completar laclase QuadTreeSpatialDatabase2D que hereda de la clase


SpatialDataBase2D, por lo que tiene un atributo protected Rectangle2D range que
almacena el área en la que se define la base de datos. En concreto, en la clase
QuadTreeSpatialDatabase2D hay que completar 3 métodos:

private QuadTree<Pair<Rectangle2D,Point2D>> construct(Rectangle2D r,


List<Point2D> points)

private List<Point2D> queryRange(QuadTree<Pair<Rectangle2D, Point2D>>


q, RectangularShape r)

private Pair<Double, Point2D>


findNearestNeighbor(QuadTree<Pair<Rectangle2D, Point2D>> t,
Point2D p, double d)

Todas las clases que no pertenecen a la librería estándar de Java están definidas en la librería
lab3_vpl_v1.7.jar y puedes encontrar la documentación necesaria dentro del jar.

Para probar la implementación de la clase QuadTreeSpatialDatabase2D se puede usar la


clase LabProject3 con diferentes modos. Estos modos se especifican en Run
Configurations > Arguments.

-f <fichero>
En este modo se crea la base de datos espacial (el QuadTree) utilizando la información que
se encuentra en el fichero.

-p <fichero> x y
En este modo se crea una base de datos espacial utilizando la información del fichero y a
continuación se realiza una consulta para obtener el POI más cercano al punto (x,y).

-q <fichero> x y r
En este modo se crea una base de datos espacial utilizando la información del fichero y a
continuación se realiza una consulta para obtener la lista de POI que se encuentra en un radio
r del punto (x,y).
Estructuras de Datos y Algoritmos.
2º Grado de Ingeniería de la Salud

-r <initial-size> <num-iter> <num-tests> [<num-rep>=1]


En este método se crea una base de datos aleatoria de tamaño initial-size que y se realizan
una sería de consultas. Este modo genera 3 ficheros con estadísticas y es el modo que se
debe utilizar para realizar el estudio de complejidad.

Para probar la implementación con los modos -f, -p y -q puedes utilizar el fichero de entrada
points25.txt. En el campus virtual tienes la salida esperada para las siguientes
configuraciones:

Configuración de ejecución Fichero salida esperada


-f points25.txt points25.txt_f.out
-p points25.txt 0 0 points25.txt_p.out
-q points25.txt 0 0 20 points25.txt_q.out

Estudio de la complejidad de los algoritmos

Para realizar el estudio de la complejidad es necesario ejecutar la implementación con el


modo -r, de formar que se generen 3 ficheros de estadísticas. Se propone utilizar los
siguientes argumentos: -r 10000 10 100 1000
Una vez generados los ficheros, muévelos a la misma carpeta donde esté el fichero
quadtree.rmd y clica dos veces en el fichero quadtree.rmd para que se abra la aplicación
RStudio (en el campus hay un documento que explica como instalar el entorno RStudio y
los paquetes necesarios). Es posible que la primera vez aparezca en la parte superior del
editor de RStudio un mensaje pidiendo que instales el paquete shiny.

Al pulsar en el botón Knit automáticamente se generarán la memoria de la práctica,


incluyendo las gráficas asociadas al estudio de complejidad. Analiza las gráficas resultantes
y completa los diferentes apartados de la memoria modificando las diferentes secciones en
el fichero quadtree.rmd (Objectives, experimental setup, etc.).
Puedes redactar la memoria en español o inglés. Cuando esté lista, vuelve a compilar la
memoria pulsando Knit.

Entrega y evaluación

La evaluación de la práctica consiste en:


- Entrega y evaluación automática del código del alumno: La tarea de evaluación
automática asignará una puntuación entre 0 y 10. Posteriormente, se utilizarán
herramientas de detección de plagio que pueden variar la nota calculada
automáticamente.
- Memoria: se tendrán en cuenta tanto la discusión asociada a la práctica como la calidad
y claridad de la redacción. Excluyendo gráficas y apéndices, la longitud de la memoria
no debe ser superior a 3 páginas

Al final de la sesión de laboratorio, el alumno tiene que intentar pasar la evaluación


automática. Para optar a la máxima nota, se tienen que pasar todas las pruebas en la sesión
de laboratorio. La memoria se entregará posteriormente ya que requiere el estudio de los
resultados.

Si no se pasan todas las pruebas en la sesión de laboratorio, se tendrá una segunda oportunidad
para pasarlas. La fecha se comunicará al final de la sesión de laboratorio.
Estructuras de Datos y Algoritmos.
2º Grado de Ingeniería de la Salud

A continuación, se detalla la nota que se puede obtener:

Nota Descripción
0 Plagio de la memoria || Plagio del código ||
(no pasa los test en el laboratorio && no pasa los test fuera de plazo && no entrega
memoria)
[1,3] No pasa los test en el laboratorio && pasa parcialmente los test fuera de plazo &&
entrega memoria
[3, 6] No pasa los test en el laboratorio && pasa todos los test fuera de plazo && entrega
memoria
[5,7] Pasa parcialmente los test de laboratorio && pasa todos los test fuera de plazo &&
entrega memoria
[6,10] Pasa todos los test en laboratorio && entrega memoria

También podría gustarte