Curso de Pregrado

Información General


El curso de pregrado en Análisis de Algoritmos se centra en proporcionar a los estudiantes una comprensión profunda de la eficiencia y el rendimiento de los algoritmos utilizados en la resolución de problemas computacionales. A lo largo del curso, los estudiantes aprenderán a evaluar la complejidad temporal y espacial de los algoritmos, considerando aspectos prácticos como el tiempo de ejecución y el consumo de memoria. Se explorarán técnicas avanzadas de diseño y optimización de algoritmos, incluyendo estrategias de programación dinámica, algoritmos de búsqueda y clasificación, y técnicas de aproximación. Además, se abordarán conceptos fundamentales de teoría de grafos y estructuras de datos eficientes para proporcionar a los estudiantes las herramientas necesarias para desarrollar algoritmos eficaces y resolver problemas computacionales de manera efectiva.

El objetivo principal del curso es capacitar a los estudiantes para analizar críticamente algoritmos y tomar decisiones fundamentadas sobre la selección y aplicación de enfoques algorítmicos en diversos contextos. Se fomentará el pensamiento analítico y la habilidad para evaluar el rendimiento de un algoritmo en términos de eficiencia y escalabilidad. A través de ejercicios prácticos y proyectos, los estudiantes desarrollarán habilidades esenciales para diseñar algoritmos eficientes y comprenderán cómo estas habilidades son cruciales en la resolución de problemas en campos como inteligencia artificial, optimización, y análisis de datos a gran escala.

Objetivos

Analizar la Complejidad Computacional: Explorar la teoría de la complejidad computacional para comprender la diferencia entre problemas de fácil resolución y aquellos que son intrínsecamente difíciles. Esto incluye el estudio de clases de complejidad, como P, NP y NP-completo.

Aplicar Conceptos Teóricos en el Diseño de Algoritmos: Capacitar a los estudiantes para aplicar los conocimientos teóricos en el diseño y análisis de algoritmos eficientes, considerando restricciones de tiempo y espacio.

Desarrollar Habilidades de Pensamiento Lógico y Analítico: Fomentar el desarrollo de habilidades de pensamiento lógico y analítico al abordar problemas computacionales desde una perspectiva teórica, preparando a los estudiantes para resolver desafíos algorítmicos complejos.


Cronograma Semanal

Texto del Curso :

Anany Levitin: Introduction to the Design and Analysis of Algorithms





Descripción Material de lectura Problemas Material Adicional
Semana 1 Problemas y Soluciones de Acertijos Algorítmicos Problema Del puente
Peso Faltante
Bicicleta y Guantes
Ascensor de seis pisos
Problema de la Gasolina
Algorithmic Puzzles
Semana 2 Conceptos Básicos de Algoritmos Secciones 1.1-1.4 1.1.5-1.1.6-1.1.7
1.2.4-1.2.5-1.2.8-1.2.10
1.3.2-1.3.3-1.3.4-1.3.5-1.3.10
1.4.2-1.4.3-1.4.4
Video: David Malan-Algorithms
Slides Design and Analysis of Algorithms
Slides Algorithm Efficiency
Semana 3 Herramientas de Análisis de Algoritmos: Secciones 2.1-2.2 2.1.1-2.1.8-2.1.9
2.2.3-2.2.4-2.2.5-2.2.6
Video: Aprendes sin llorar la Notación O
Slides Assymptotic Notation
Slides Analysis of non recursive algorithms
Slides Analysis of recursive Algorithms
Slides Fibonacci
Taller 1
Semana 4 Análisis de Algortimos recursivos y no recursivos Secciones 2.3-2.5 + App B 2.3.1-2.3.2-2.3.4-2.3.10
2.4.1-2.4.3-2.4.5-2.4.12-2.4.13
Video: loops vs recursion
Slides Brute Force Design Strategy
Semana 5 Algoritmos Fuerza Bruta y Búsqueda Exhaustiva Secciones 3.1-3.4 3.1.1-2.1.2-3.1.3-3.1.5
3.2.1-3.2.2-3.2.5
3.4.1-3.4.4-3.4.10
Video: Brute Force Algorithms
Taller Archivo Colab
Geogebra Closest Pairs
GeoGebra Convex Hull
Semana 6 Búsqueda Profunda y a lo largo, Decrease-by-one 3.5,4.1-4.2
Semana 7 Búsqueda Binaria y Decrease by a Constant and by a Varaible 4.4-4.5
Semana 8 Dividir y Conquistar:Merge y Quick, Otros ejemplos 5.1-5-2.5.3 ó 5.4 ó 5.5
Semana 9 Introducción al Curso
Semana 10 Cambios de Representación: heapsort, etc… Reducción de Problemas 6,4-6.5-6.6
Semana 11 Espacio y Tiempo 7.2-7.4
Semana 12 Programación Dinámica 7.2-7.4
Semana 13 Algoritmos Voraces 9.1-9.4
Semana 14 Algoritmos con mejoras iterativas 10.1-10.4
Semana 15 Problemas P Y NP 11.3
Semana 16 Temas Adicionales









Herramientas Computacionales