Programa de la asignatura
Objetivos
Estudiar estructuras de datos avanzadas y sus algoritmos de manipulación. Aplicar conceptos avanzados como encapsulamiento, abstracción, herencia, polimorfismo, plantillas, etc. Caracterizar la eficiencia y plantear soluciones algorítmicas a algunos problemas concretos.
Temario
- Introducción
- Abstracción
- Eficiencia
- Análisis amortizado
- Árboles de búsqueda
- Árboles binarios
- Árboles AVL
- Árboles rojo-negro
- Árboles desplegados
- Árboles B
- Dispersión
- Tablas de acceso directo
- Tablas de dispersión
- Funciones de dispersión
- Tratamiento de colisiones
- Selección
- Montículos binarios
- Montículos a izquierda
- Montículos oblicuos
- Montículos binomiales y de Fibonacci
- Aplicaciones
- Técnicas algorítmicas avanzadas
- Estructuras de datos específicas
- Programación dinámica
- Exploración
- Aplicaciones
Bibliografía
Estructuras de Datos y Algoritmos
M.A. Weiss. Addison Wesley, 1995, CI 519.6 WEI
Estructuras de Datos en Java
M.A. Weiss. Addison Wesley, 2000, CI 681.3.06 WEI
Data structures and algorithm analysis in C++
M.A. Weiss. Benjamin Cummings, 1999, CI 681.3.06 WEI
Introduction to Algorithms
T.H. Cormen, C.E. Leiserson, R.L. Rivest. MIT Press, 1990, CI 681.3.06 COR
Data Structures and Algorithms in Java
M.T. Goodrich, R. Tamassia. John Wiley, 1998
The Design and Analysis of Algorithms
D.C. Kozen. Springer-Verlag, 1991
Problems on Algorithms
I. Parberry. Prentice-Hall, 1995
Método de evaluación