Este es un curso avanzado de análisis y diseño de algoritmos. Es el
último curso de programación en la carrera de Ingeniería de Sistemas y
se enfatiza en los grafos y muchos de sus problemas asociados: árboles
abarcadores mínimos, caminos mínimos, puntos de corte, ordenamiento
topológico, redes de flujo, emparejamientos, etc..
Para el curso se emplea la biblioteca Aleph. La versión fuente más reciente puede descargarse
de aquí.
Últimas noticias
Evaluación
Las evaluaciones con sus porcentajes sobre la nota definitiva entre
paréntesis son las siguientes:
- Tres exámenes parciales (40%): se elimina la peor
calificación
- 1 proyecto bajo las siguientes reglas generales (45%):
- Grupos de máximo 3 personas.
- Sistema operativo Linux, compilador GNU gcc, biblioteca
Aleph
- Interfaz gráfica con biblioteca QT
- Fecha de entrega: a definir
- Pulse aquí para leer mis
consideraciones sobre la importancia de hacer un proyecto y su
evaluación
- Corrección proyecto:
- No compila o no cumple ningún requerimiento ==> cero de
calificación
- Cumplimiento de requerimientos: 60%
- Manual del usuario: 10%
- Documento de diseño: 5%
- Estilo de codificación: 10%
- Interfaz usuario: 15%
- Nota apreciativa individual (15%).
Programa
- Repaso a estrcuturas de datos y estructuras avanzadas
- Heaps
- Árboles aleatorizados
- Árboles AVL
- Hash lineal
- Análisis amortizado
- La técnica
- Árboles splay
- Introducción a los grafos
- Estructuras de datos para representar grafos en memoria
- Recorridos sobre grafos
- En profundidad y en amplitud
- Prueba de conectividad
- Prueba de aciclicidad
- Detección y búsqueda de caminos
- Puntos de articulación
- Grafos dirigidos
- Fundamentos: conectividad, inversión
- Clausura transitiva - algoritmo de Warshall
- Cálculo de componentes fuertemente conexos
- Algoritmo de Kosaraju
- Algoritmo de Tarjan}
- Prueba de aciclicidad
- Cálculo de ciclos
- Digrafos acíclicos
- Planificación de tareas
- Ordenamiento topológico
- Árboles abarcadores mínimos
- Algoritmo de Kruskal
- Algoritmos de Prim
- Caminos mínimos
- Algoritmo de Dijkstra
- Algoritmo de Floyd-Warshall
- Algoritmo de Bellman-Ford
- Detección de ciclos negativos
- Cálculo de ciclos negativos
- Redes de flujo
- Definiciones fundamentales, múltiples fuentes/sumideros, corte
de red, semi-camino, caminos de aumento
- Algoritmos de flujo máximo
- Ford-Fulkerson
- Edmonds-Karp
- Empuje y preflujo
- FIFO
- HEAP
- Aleatorio
- Reducciones y aplicaciones
- Flujo en redes no dirigidas
- Capacidades en los nodos
- Flujo realizable
- Emparejamiento bipartito máximo
- Circulaciones
- Conectividad de grafos mediante redes de flujo
- Flujos de coste mínimo
- Algoritmos basados en eliminación de ciclos negativos
- Simplex para redes de flujo
- Aplicaciones
- Transporte
- Trasbordo
- Asignación de trabajos
- Caminos mínimos
Bibliografía
- Tejiendo Algoritmos -
Leandro Rabindranath Leon
- Estructura de datos y algoritmos - Alfred V. Aho, John
E. Hopcroft, Jefrey D. Ullman - Addison-Wesley Iberoamericana:
Sistemas Técnicos de Edición, 1988. ISBN 968-6048-19-7
- Graph Theory and Its Applications - Gross and Yellen - Chapman and
Hall/CRC. ISBN: 978-1584885054
- Algorithms in C, Part 5: Graph Algorithms, 3rd Edition - Sedgewick
- Addison-Wesley Professional. -10: 0-201-31663-3
- Combinatorial Optimization: Algorithms and Complexity - Christos
H. Papadimitriou and Kenneth Steiglitz - Dover
Publications. ISBN-10: 0486402584
- Introduction to Algorithms - Thomas H. Cormen, Charles
E. Leiserson, Ronald L. Rivest, Clifford Stein - The MIT Press -
ISBN-10: 0262033844
Todas las estructuras de datos y algoritmos enseñados en este curso
están disponibles en la biblioteca Aleph.
Otros
- Horarios: lunes y miércoles de 4 a 6 PM
- Laboratorio: sábados de 8 AM a 12 PM.