Reportes
Introducción
Este sitio reúne los reportes de las Unidades 1 a 5 del curso Análisis de Algoritmos impartido por el Dr. Eric S. Téllez.
Basado en el libro Curso Introductorio al Análisis de Algoritmos con Julia y en las prácticas propuestas, el curso combina:
- Una sólida fundamentación teórica de modelos de cómputo y análisis de complejidad.
- La exploración de estructuras de datos básicas y su implementación en programación.
- El estudio detallado de algoritmos de ordenamiento (BubbleSort, MergeSort, QuickSort, SkipList).
- Algoritmos de búsqueda en arreglos ordenados (binaria, B0, B1, B2).
- Estrategias para intersección y unión de conjuntos (Melding, Baeza-Yates, Barbay & Kenyon).
- Una metodología experimental que incluye conteo de comparaciones, medición de tiempos y visualización gráfica de resultados.
A lo largo de estas cinco unidades, se enfatizó la relación entre la teoría (Θ, O, Ω) y la práctica, mostrando cómo las decisiones de implementación impactan el desempeño.
Objetivo del sitio
Este sitio tiene como propósito documentar, organizar y presentar de forma clara y reproducible todos los reportes de las Unidades 1 a 5:
- Cada reporte incluye su correspondiente lista de cambios (véase la pestaña “Notas de Cambios”).
- Se mantienen intactos los notebooks originales, enriquecidos con explicaciones y análisis adicionales.
- Se facilita al lector la navegación y la comparación de resultados mediante tablas y gráficos interactivos generados con Quarto.
Así, cualquier lector podrá revisar de manera ordenada el avance del curso, comprender los fundamentos de cada tema y replicar los experimentos o adaptarlos a nuevos contextos.
Resumen de los contenidos
Unidad 1 – Introducción a Julia y fundamentos
Se presenta Julia como lenguaje de alto rendimiento y dinámico, ideal para análisis experimental. Se cubren sintaxis básica, estructuras de datos (tuplas, arreglos, diccionarios, conjuntos) y control de flujo, sentando las bases para las implementaciones posteriores.
Unidad 2 – Modelos de cómputo y análisis asintótico
Se exploran los modelos RAM, asintótica Θ, O y Ω, y tipos de análisis (mejor, peor, promedio, amortizado, adaptativo). Se ilustra el crecimiento de funciones (constante, logarítmico, lineal, polinomial, exponencial, factorial) mediante gráficos.
Unidad 3 – Algoritmos de ordenamiento
Se implementan y comparan BubbleSort, QuickSort, MergeSort, HeapSort y SkipList. Se discuten adaptatividad, uso de memoria y selección de pivote, y se analizan comparaciones y tiempos para distintas perturbaciones de datos.
Unidad 4 – Algoritmos de búsqueda
Se estudian búsqueda binaria acotada, búsqueda secuencial (B0), búsquedas no acotadas (B1, B2) y SkipList para búsqueda. Se evalúa rendimiento promedio y sensibilidad al desorden, mostrando cómo la estructura de datos influye en la eficiencia.
Unidad 5 – Intersección y unión de conjuntos
Se aborda la intersección de múltiples conjuntos con algoritmos de Melding, Baeza-Yates, Barbay & Kenyon y variantes adaptativas. Se mide el impacto de la distribución de datos en comparaciones y tiempos, y se proponen estrategias híbridas.
Gracias por visitar este repositorio. Cada sección está diseñada para que puedas profundizar en los conceptos, revisar el código y reproducir los experimentos de forma sencilla. ¡Bienvenido a la exploración del análisis de algoritmos en acción!```