Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivos
Presentar técnicas fundamentales de análisis y diseño de algoritmos que permitan comprender la
naturaleza de los problemas tan independientemente como sea posible de aspectos de
implementación (tanto hardware como software) y resolverlos eficientemente.
• Ilustrar con ejemplos el compromiso de complejidad entre espacio y tiempo usado por un
algoritmo.
• Ilustrar las etapas requeridas para la verificación de correctitud de programas.
• Conocer la clasificación estándar de problemas en clases de complejidad.
• Determinar la complejidad de algoritmos simples.
• Ilustrar con ejemplos diferentes técnicas de diseño de algoritmos tales como técnicas
voraces, ingenuas, de dividir y conquistar, programación dinámica.
• Usar e implementar tipos de datos fundamentales para la solución eficiente de
problemas, tales como tablas de hashing, árboles binarios y grafos.
• Resolver problemas utilizando búsqueda secuencial, búsqueda binaria, algoritmos de
ordenación y algoritmos fundamentales de grafos.
• Adquirir la capacidad de evaluar algoritmos, seleccionar entre varias opciones
justificando la elección e implementarlos en un lenguaje de programación.
Metodología
Las clases se dictan con videobeam o proyector de acetatos y uso del tablero.
Contenido
1. Introducción al diseño y análisis de algoritmos.
2. Análisis de algoritmos de ordenamiento: Heapsort, QuickSort, SelectionSort, MergeSort.
Fundamentos de Análisis y
Bibliografía
1. Introduction to Algorithms, Tomas Cormen, Charles Leiserson, Ronald Rivest y Clifford
Stein, MIT-Press, 2001.
2. Estructuras de Datos en Java, Mark Allen Weis, Addison Wesley, 2000.
3. Fundamentos de Algoritmia, G. Brassard P. Bratley, Prentice Hall, 1997.
4. Data Structures and Algoritms in Java, Michael T. Goodrich y Roberto Tamassia, 2/e,
John Wiley & Sons, Inc., 2001
5. Introduction to Algorithms: a creative approach, Udi Mamber, Addison-Wesley Publishing
Company, 1989.