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.
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.
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 |
Cormen, Leiserson, Rivest: Algorithms MIT
Christos, Papadimitrou: Algorithms
Robert Sedgewick: An introduction to the Analysis of Algorithms
Uri Manber :Algorithms a Creative Approach
Niklaus Wirth : Algorithms + Data Structures = Programs
Jon Bentley :Programming Pearls
!!!! Curso 2023-2 Stanford con archivos Colab !!!!!!
Tim RoughGarden , Curso Completo de Análisis de Algoritmos