Está en la página 1de 5

Tarea 3

Búsqueda por Interpolación y Extrapolación


Jérémy Barbay, Mauricio Quezada

2011-04-27 Miércoles → 2011-05-11 Miércoles

CC4102: Diseño y Análisis de Algoritmos – 2011


Profesor: Jérémy Barbay <jbarbay@dcc.uchile.cl>
Auxiliar: Mauricio Quezada <mquezada@dcc.uchile.cl>
Ayudantes: David Contreras <dcontrer@dcc.uchile.cl>
Sergio Villarroel <svillarr@dcc.uchile.cl>

Resumen
El objetivo de esta tarea es comparar el rendimiento de algoritmos
de búsqueda en conjuntos ordenados en el modelo de comparaciones y
fuera de este modelo, como son la búsqueda por interpolación y bús-
queda por extrapolación. Se espera que el alumno reutilice su trabajo
realizado en la tarea 1, en particular:
1. Implementar 5 algoritmos: búsqueda binaria, búsqueda doblada,
búsqueda por interpolación, búsqueda por extrapolación, y esco-
ger entre búsqueda inter-mixta y extra-mixta.
2. En instancias con una cierta distribución de los valores, buscando
en posiciones aleatorias con probabilidad 1/(n + 1) y a/(b + p),
repitiendo cada experimento 100 veces y documentar mı́nimo,
máximo, promedio y desviación estándar de las medidas de ren-
dimiento: tiempo y cantidad de comparaciones.
3. Presentar los resultados de sus experimentos y su análisis en un
reporte completo de a lo más 5 páginas que incluya hipóte-
sis, diseño experimental, descripción de la plataforma y medidas
de rendimiento, presentación e interpretación de los resultados
usando entre 4 y 5 gráficos 2D, conclusiones, y anexos (de ser
necesarios)

1
1. Descripción de la tarea
El objetivo de esta tarea es comparar el rendimiento de diferentes al-
goritmos que permiten buscar en conjuntos ordenados, y en particular de
comparar el rendimiento entre los algoritmos del modelo de comparaciones
y los que quedan fuera de este modelo, es decir, búsqueda por interpolación
y búsqueda por extrapolación. Finalmente, se considera una instancia espe-
cial, donde se mezcla un algoritmo en el modelo de comparaciones con uno
fuera de éste.

2. Algoritmos
Se consideran cuatro algoritmos, que buscan un elemento x, que se en-
cuentra en la posición p, en un arreglo de tamaño n:
1. Búsqueda binaria con 1 + dlg ne comparaciones, que en cada
etapa hace una comparación < entre los dos elementos considerados,
y hace una comparación = solamente cuando el rango de inserción del
elemento x es definido.
2. Búsqueda doblada con 2 + 2dlg pe comparaciones, que encuentra
en 1 + dlg pe comparaciones un intervalo de tamaño p/2 que contiene
x, y encuentra p en 1 + dlg pe comparaciones adicionales (usando la
búsqueda binaria indicada en el item anterior).
3. Búsqueda por interpolación que usa el valor de x, y los valores a
los extremos (i < j) del subarreglo actual, para interpolar la próxima
posicion g = i + (j−i)(x−A[i])
A[j]−A[i] a comparar con x.
4. Búsqueda por extrapolación, que usa el valor de x, y los dos úl-
timos valores probados en el arreglo (iniciando con A[0] y A[1]) para
extrapolar la próxima posición a comparar con x. Se considera parte
de la tarea encontrar la formula exacta que permite realizar la extra-
polación.
Además, deberá escoger e implementar uno de los algoritmos si-
guientes:
Búsqueda inter-mixta, que alterna los pasos de una búsqueda bi-
naria con los pasos de una búsqueda por interpolación.
Búsqueda extra-mixta, que alterna los pasos de una búsqueda do-
blada con los pasos de una búsqueda por extrapolación.

2
3. Instancias
Los valores de los arreglos son siempre elegidos de manera tal que la
diferencia entre los valores entre dos elementos consecutivos es una variable
aleatoria con distribución uniforme en el intervalo de 1 a 16 (inclusives).
Se consideran dos tipos de instancias (que corresponden a dos experi-
mentos distintos):

1. Al azar uniformemente: instancias donde la posición de x es igual


a p con probabilidad 1/(n + 1) (recuerde que el rango de inserción de
p está en {1, . . . , n + 1}); y

2. Al azar con respecto al inicio: instancias donde la posición de x es


igual a p con probabilidad a/(p + b), a, b > 0. Se recomienda utilizar
b = 1.

Se consideran instancias de tamaño creciente exponencialmente, desde


210 = 1024 hasta 220 = 1048576 elementos, o hasta que los lı́mites de me-
moria de la máquina usada, o del tiempo de experimentación lo permitan.
Cada una de las instancias se deberá repetir 100 veces, y sobre los resultados
obtenidos se deberá documentar el máximo, mı́nimo, promedio y desviación
estándar de las medidas de rendimiento.

4. Medidas de Rendimiento
Se consideran dos medidas de rendimiento:

1. la cantidad de comparaciones, y

2. el tiempo de ejecución.

El reporte debe indicar claramente el proceso con el que se midió el tiempo


de ejecución, y si hay correlación o no entre las dos medidas de rendimiento.

5. Implementación
Se puede elegir el lenguaje de programación de su preferencia, aunque
se sugiere Python, Java, C o C++. El idioma de programación debe ser
claramente indicado en el reporte. Se debe describir la máquina usada para
la experimentación en términos de:

sistema operativo,

3
cantidad de memoria (activa y en caché).

cantidad y caracterı́sticas de los procesadores.

6. Reporte
El reporte debe seguir los pasos descritos en clase. En particular, el
reporte debe permitir de identificar claramente los puntos siguientes:

1. las hipótesis elegidas antes del inicio de la realización del experimen-


to,

2. el diseño experimental, incluyendo los detalles de la implementación


de los algoritmos, de la generación de las instancias y la descripción
del proceso de medida del tiempo de computación,

3. la presentación de los resultados en forma de una descripción tex-


tual, tablas y gráficos en dos dimensiones,

4. la interpretación de los resultados,

5. las conclusiones criticando sus resultados y proponiendo experimen-


tos adicionales.

En el caso donde los datos no verifican la hipótesis, no se pide modificar


el ciclo de diseño, sino de correctamente identificar el problema y presen-
tarlo en la conclusión (puede que sea una error en la hipótesis, en el diseño
experimental o en su implementación).
Se espera que el informe tenga una extensión de MAXIMO 5 páginas,
y que incluya entre 4 y 5 gráficos 2D que sumarizen los resultados más
importantes. Si tienen más gráficos, se pueden colocar en la sección Anexos.
Los reportes que no cumplan con la extensión indicada serán penalizados.
Se puede elegir el software de redacción de su preferencia, aunque se
sugiere el uso de LATEX. El reporte debe ser entregado en U-Cursos en un
archivo de formato pdf con el reporte textual, y un archivo zip con la
totalidad del código usado para los experimentos, más un README con
instrucciones para correr el código, de manera que potencialmente se puedan
reproducir los experimentos. Además, se deberá entregar copia impresa del
informe en la Secretarı́a del Departamento hasta las 12:00 horas del dı́a
siguiente a la fecha fecha de entrega por U-Cursos.

4
7. Colaboración y Uso de Librerı́as
El proyecto es individual: uno de los objetivos es desarrollar las capa-
cidades de programación de los alumnos. La comunicación entre alumnos
sobre el proyecto está autorizada, dentro de lo razonable. En particular,
cada alumno debe ser capaz de describir los detalles mas técnicos de las
implementaciones y experimentos descritos en su reporte. De igual manera,
el uso de librarı́as de software está permitido sólamente si el alumno es ca-
paz de describir los detalles más técnicos de la implementación de todas las
funciones involucradas en la librerı́a. Se pedirá una evaluación oral en caso
de duda sobre la originalidad del trabajo.

8. Atraso y otros problemas


Con la finalidad de dar un feedback antes de la entrega de la tarea si-
guiente, los ayudantes tienen solamente una semana para corregir las tareas.
Por lo tanto, no se admite atrasos en la entrega de tareas, en general. Los
atrasos o dificultades para la entrega de las tareas con excusas válidas se ne-
gocian un dı́a antes de la fecha de entrega, y directamente con el auxiliar
encargado de la tarea (definitivamente NO con el profesor del curso). No se
aceptan excusas en la fecha de entrega o después. Todo atraso o dificultad
para la entrega sin negociación o excusa válida se convierte en un 1 (uno).

También podría gustarte