UNIVERSIDAD DEL CAUCA FACULTAD DE INGENIERIA ELECTRÓNICA Y TELECOMUNICACIONES PROGRAMA DE INGENIERIA DE SISTEMAS ASIGNATURA: MODALIDAD: INTENSIDAD: PREREQUISITOS: CLASIFICACION: ESTRUCTURA DE DATOS II PRESENCIAL TEORICO / PRACTICA 4 HORAS TEORICAS Y 2 HORAS PRACTICAS / SEMANA. ESTRUCTURA DE DATOS I FORMACION PROFESIONAL OBJETIVO GENERAL Estudiar los conceptos de análisis y diseño de tipos abstractos de datos, haciendo especial énfasis en las estructuras de datos no lineales como son los grafos y árboles. Además, profundizar los conceptos de la programación orientada a objetos y aplicarlos en un lenguaje altamente utilizado. OBJETIVOS ESPECIFICOS El estudiante al final del curso estará en capacidad de: 1. Implementar soluciones algorítmicas con grafos y árboles. 2. Entender, diseñar e implementar tipos abstractos de datos. 3. Aplicar los conceptos de programación orientada a objetos y de estructuras no lineales en la organización de la información del computador en discos. METODOLOGIA 1. El alumno adquirirá los conocimientos básicos a través de clases magistrales acompañadas de ejercicios prácticos. 2. El alumno deberá profundizar sus conocimientos con temas complementarios desarrollando talleres prácticos y trabajos de investigación. Estructura de Datos II 1 CONTENIDO 1. INTRODUCCIÓN 1.1.Revisión de los conceptos básicos de Programación Orientada a Objetos 1.1.1. Historia 1.1.2. Mecanismos de Abstracción 1.1.3. Abstracción, Polimorfismo, Herencia y Encapsulamiento. 1.2.Organización de un Lenguaje de programación orientada a objetos (C++) 1.2.1. Conceptos Básicos 1.2.2. Estructuras y Clases 1.2.3. Ejemplos 2. TIPOS ABSTRACTOS DE DATOS 2.1.Definiciones 2.2.Representación de un Objeto Abstracto 2.3.Invariante de un TAD 2.4.Especificación de un TAD 2.5.Clasificación de las Operaciones 2.6.Manejo de Error 2.7.Metodología de Diseño de TAD 2.8.Ejemplos 3. COMPLEJIDAD 3.1.Análisis de Algoritmos 3.2.Tiempo de ejecución de un algoritmo. 3.3.Conceptos de Complejidad. 3.4.Aritmética de notación O. 4. ESTRUCTURAS DE DATOS NO LINEALES 4.1.introducción. 4.2.Revisión Matemática 4.2.1. Sumas y Recurrencias 4.2.2. Conjuntos, Numeración y Grafos. 5. ÁRBOLES 5.1.Binarios 5.1.1. Definiciones y Conceptos Básicos 5.1.2. El TAD Arbin 5.1.3. Ejemplos 5.1.4. Recorridos de Árboles Binarios 5.1.4.1.Inorden, Postorden, Preorden, Niveles. 5.1.4.2.Reconstrucción a partir de sus recorridos. 5.1.5. Algorítmica de manejo de árboles 5.1.6. Implementación de Arboles binarios. 5.1.6.1.Sencillamente encadenados Estructura de Datos II 2 5.1.6.2.Encadenados al padre 5.1.6.3.Cursores 5.1.6.4.Representación Secuencial 5.1.7. Destrucción y persistencia de Arboles binarios 5.1.7.1.Cursores 5.1.7.2.Representación Secuencial 5.1.7.3.Destructora del TAD Harbin 5.1.8. El TAD Arbol Binario Ordenado ArbinO 5.1.8.1.Búsqueda 5.1.8.2.Inserción 5.1.8.3.Eliminación 5.1.9. El TAD Arbol Binario Balanceado ArbinAVL 5.1.9.1.Inserción 5.1.9.2.Eliminación 5.1.10. El TAD Arbol de Sintaxis 5.1.10.1. Ejemplo practico. 5.2.Árboles N – arios. 5.2.1. Definiciones y Conceptos Básicos 5.2.2. El TAD ArbolN. 5.2.3. Ejemplos 5.2.4. Implementación de Arboles N – arios. 5.2.4.1.Vector de Apuntadores 5.2.4.2.Hijo izquierdo – Hermano derecho. 5.2.4.3.Vectores Dinámicos 5.2.4.4.Lista de Hijos 5.2.4.5.Representaciones Implícitas 5.2.5. Arboles N – arios Específicos y sus aplicaciones 5.2.5.1.Arbol 123 5.2.5.2.Arbol 234 5.2.5.3.Arbol 23 5.2.5.4.Arbol Trie 5.2.5.5.Arbol Cuadtree 5.2.5.6.Arbol AND – OR 5.2.5.7.Arboles de Juego 5.2.5.8.Arbol Rojo – Negro 5.2.5.9.Arbol Multilayer 5.2.5.10. Arboles B 5.2.5.11. Arboles B+ 5.2.5.12. Arbol Montículo 6. GRAFOS 6.1.Definiciones y Conceptos Básicos 6.2.El TAD Grafo 6.3.Implementación de Grafos 6.3.1. Matrices de Adyacencia. Estructura de Datos II 3 6.3.2. Lista de Sucesores 6.3.3. Listas encadenadas de Adyacencia. 6.3.4. Listas de Arcos 6.3.5. Estructuras de Datos Implícitas. 6.4.Caminos de Un grafo 6.5.Recorridos de grafos, Búsqueda 6.5.1. Plano 6.5.2. Profundidad 6.5.3. Niveles 6.5.4. Heurísticos 6.6.Caminos más cortos 6.6.1. Dijsktra 6.6.1.1.Costo de los caminos mininos 6.6.1.2.Caminos mínimos. 6.6.2. Bellman-Ford. 6.7.Minimum spanning trees: Prim. 7. FICHEROS EXTERNOS 7.1.Memoria secundaria 7.1.1. Organización y costes de acceso. 7.2.Procesamiento de ficheros 7.2.1. Operaciones fundamentales en C. 7.3.Organización de ficheros 7.3.1. Registros y headers. 7.4.Compresión de ficheros. 7.5.Índices para ficheros. 7.6.Ordenación de ficheros. 7.7.Hashing. EVALUACIONES Se realizarán tres (3) evaluaciones de la siguiente forma: NUMERO Primer Parcial PORCENTAJE 35% Segundo Parcial 35% Tercer Parcial 30% COMPONENTES Parcial Escrito 80% Talleres y Laboratorios 20% Parcial Escrito 60% Talleres y Laboratorios 20% Fase 1 Proyecto de clase 20% Parcial Escrito 50% Talleres y Laboratorios 10% Fase 2 Proyecto de clase 40% Los proyectos, talleres y laboratorios en grupo serán evaluados individualmente y deben estar debidamente documentados. Todo Proyecto NO sustentado pierde validez. Las sustentaciones serán programadas con anterioridad definiendo fecha y hora para cada alumno. Estructura de Datos II 4 BIBLIOGRAFÍA Fundamentos de Programación, Luis Joyanes Aguilar, McGraw - Hill. Turbo C/C++. Hebert Schildt, McGraw -Hill. Estructura de datos con C y C++. Yedidyah Langsam, Moshe J. Augenstein y Aaron M. Tanenbaum. Prentice Hall, Segunda edición, 1997. Matemática discreta y lógica. Una perspectiva desde la Ciencia de la Computación. Grassmann, W. y Tremblay, J.P. Prentice Hall, Madrid, 1996 ISBN:84-89660-04-2 Estructuras de Datos, Osvaldo Cairo, Mc Graw – Hill. Estructura de datos en C. Aaron Tanenbaum. Prentice Hall. TADS: Un enfoque desde tipos abstractos de datos. J. Villalobos. Ediciones Uniandes. Estructuras de Archivos. M.Folk. Addison Wesley. Material de Referencia del Curso en Fotocopiadora. Estructura de Datos II 5