Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tarea 3 PDF
Tarea 3 PDF
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):
4. Medidas de Rendimiento
Se consideran dos medidas de rendimiento:
1. la cantidad de comparaciones, y
2. el tiempo de ejecución.
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é).
6. Reporte
El reporte debe seguir los pasos descritos en clase. En particular, el
reporte debe permitir de identificar claramente los puntos siguientes:
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.