Árboles y Grafos

Información Básica

  • Créditos: 3
  • Horas de trabajo acompañado: 5 / semana (3 horas de clase, 2 de taller)
  • Horas de trabajo independiente: 4 / semana
  • Pre-requisitos: Técnicas y Prácticas de Programación, Estructuras de Datos, Álgebra Lineal
  • Tipo de curso: Núcleo de Formación Fundamental

Descripción del Curso

Este curso se exploran las propiedades de árboles y grafos como: (i) elementos computacionales generales para representar situaciones prácticas y con alto contenido algorítmico, y (ii) de sus posibles realizaciones como estructuras de datos y de su utilización en algoritmos eficientes. Sobre los árboles y grafos se estudian problemas y algoritmos clásicos de búsqueda y optimización. Como estructuras de datos arborescentes y jerárquicas (i.e., no lineales) se estudian, entre otros, montones, árboles binarios de búsqueda, árboles de segmentos. También se estudian conceptos y exploran técnicas para escalar algoritmos sobre árboles y grafos para resolver problemas en redes sociales en las cuales hay grandes cantidades de información.

Objetivos

Al finalizar el curso los participantes podrán:

  • Conocer las representaciones y operaciones principales de los árboles y grafos.
  • Implementar y evaluar algoritmos de búsqueda, rutas maś cortas, cadenas y pattern matching.
  • Implementar, identificando sus ventajas, estructuras de datos arborescentes y jerárquicas como montones, árboles rojo-negro y árboles de segmentos.
  • Modelar problemas reales cona grafos (e.g., redes sociales, optimización industrial).
  • Conocer técnicas de programación paralela para solucionar problemas con estructuras de datos arborescentes y jerárquicas.

Se desarrollan competencias en

  • Modelado de problemas por medio de estructuras de datos.
  • Desarrollo de programas usando el lenguaje de programación.
  • Aplicación de técnicas y herramientas de lenguajes de programación de alto nivel.
  • Implementación de software con buenas prácticas de programación.

Contenido

Capítulo 1: Introducción

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
1-2 3 2 Introducción y repaso. Inducción matemática. Diseño algorítmico. Notación asintótica. Uso [1 caps 1,2] [2 cap 2][3 cap 0, app 1]
3-4 3 2 Dividir, conquistar y combinar. Relación con inducción matemática. Evaluación [1 cap 4][2 cap 5][3 cap 1]

Total de Horas: 10.

Sesión Horas de trabajo independiente Temas Bibliografía
1-4 8 Tareas semanales, resolución de problemas en temas vistos [1,cap 1,2,4][2 cap 2,5][3 caps 0,1, app 1]

Total de Horas: 8.

Capítulo 2: Conceptos básicos

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
5-7 5 2.5 Grafos. Ejemplos y usos. Tipos de grafos. Nociones básicas. Representación de grafos. Algoritmos de búsqueda y recorrido. Evaluación [1 cap 22][2 cap 3][3 cap 8][6 cap 2][9 cap 12]
8-9 3 2 Árboles. Ejemplos y usos. Representación de árboles. Búsqueda y recorrido. Inducción sobre árboles. Evaluación [6 cap 5][4 cap 5][1 cap 6][8 cap 3]

Total de Horas: 12.5.

Sesión Horas de trabajo independiente Temas Bibliografía
5-9 10 Tareas semanales, resolución de problemas en temas vistos [1 cap 6,22][2 cap 3][3 cap 8][4 cap 5][6 caps 2,5][9 cap 12][8 cap 3]

Total de Horas: 10.

Capítulo 3: Extensiones de búsqueda en grafos

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
10-13 6 4 Flood fill. Orden topológico. Puentes y puntos de articulación. Componentes fuertemente conexos. Evaluación [1 cap 22][2 cap 3][7 cap 4][4 cap 10]

Total de Horas: 10.

Sesión Horas de trabajo independiente Temas Bibliografía
10-13 8 Tareas semanales, resolución de problemas en temas vistos [1 cap 22][2 cap 3][7 cap 4][4 cap 10]

Total de Horas: 8.

Capítulo 4: Tipos abstractos y estructuras de datos arborescentes y jerárquicas

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
14-15 3 2 Montones: montones binarios, montones binomiales, montones de Fibonacci, montones de emparejamiento. Colas de prioridad. Evaluación [1 caps 6,19][8 cap 7][9 cap 10]
16 1.5 1 Clases de equivalencia: Bosques/conjuntos disyuntos. Evaluación [1 cap 21][3 cap 17][7 cap 2]
17-18 3 2 Árboles binarios de búsqueda: Árboles rojo-negro. Uso [1 caps 12,13][8 cap 10][9 cap 6]
19-20 3 2 Rangos: árboles de segmentos, árboles de Fenwick. Evaluación [7 cap 2]
21-22 3 2 Procesamiento de texto: arreglos de sufijos, autómatas. Evaluación [1 cap 32][3 cap 13][10 cap 4][7 cap 6]

Total de Horas: 22.5.

Sesión Horas de trabajo independiente Temas Bibliografía
14-22 18 Tareas semanales, resolución de problemas en temas vistos [1 caps 6,12,13,19,21,32][3 caps 13,17][7 caps 2,6][8 caps 7,10][9 caps 6,10][10 cap 4]

Total de Horas: 18.

Capítulo 5: Algorítmos de optimización

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
23-24 3 2 Distancia mínima de un vértice a todos los demás (SSSP): el algoritmo de Dijkstra, el algoritmo de Bellman-Ford-Moore. Evaluación [1 cap 24][2 cap 4][3 cap 21]
25-26 3 2 Distancia mínima entre cualquier par de vértices (ASSP): el algoritmo de Floyd-Warshall-Rho Evaluación [1 cap 25][3 cap 22]
27-28 3 2 Árboles mínimos de cubrimiento (MST): el algoritmo de Kruskal, el algoritmo de Prim. Evaluación [1 cap 23][3 cap 20]

Total de Horas: 15.

Sesión Horas de trabajo independiente Temas Bibliografía
23-28 12 Tareas semanales, resolución de problemas en temas vistos [1 caps 23,24,25][2 cap 4][3 caps 20,21,22]

Total de Horas: 12.

Capítulo 6: Temas seleccionados

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
29-32 6 4 Redes de computador modernas. Redes sociales. Planaridad y colorabilidad. Paralelización de algoritmos de grafos. Uso [6 caps 8,9][4 caps 11,12]

Total de Horas: 15.

Sesión Horas de trabajo independiente Temas Bibliografía
29-32 8 Tareas semanales, resolución de problemas en temas vistos [6 caps 8,9][4 caps 11,12]

Total de Horas: 8.

Bibliografía

  1. T. Cormen, C. Leiserson, R. Rivest, C. Stein. Introduction to Algorithms. Third Edition. MIT, July, 2009.
  2. J. Kleinberg, É. Tardos. Algorithm Design. Pearson, 2005.
  3. J. Erickson. Algorithms. Urbana, USA, 2015. Available online: http://web.engr.illinois.edu/~jeffe/teaching/algorithms/
  4. W. Kocay and D. Kreher. Graphs, Algorithms, and Optimization. Chapman and Hall/CRC. 2004.
  5. S. Even, G. Even. Graph Algorithms. Second Edition. Cambridge University Press, 2012.
  6. M. van Steen. Graph Theory and Complex Networks: An Introduction. 2010. Available online: http://pages.di.unipi.it/ricci/book-watermarked.pdf
  7. S. Halim, F. Halim. Competitive Programming 3: The new lower bound of programming contests. Lulu, 2013.
  8. D. Mehta, S. Sahni. Handbook of Data Structures and Applications. Chapman and Hall/CRC, 2004.
  9. P. Morin. Open Data Structures: An Introduction”. Available online: http://opendatastructures.org/
  10. M. Crochemore, C. Hancart, T. Lecroq. Algorithms on Strings. Cambridge University Press, 2014.

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.

Material de este semestre