UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN Programa de la asignatura: Análisis de algoritmos II Clave: Semestre: Campo de conocimiento: Área de Formación: 0801 Sexto Linea terminal: Horas Horas por Total de horas semana Créditos: Teorı́a Práctica 10 5 0 5 112 Tipo: Modalidad: Carácter: Curso Obligatoria Seriación indicativa antecedente: Análisis de algoritmos I. Seriación indicativa subsecuente: . Objetivo General: El alumno profundizará en las técnicas de análisis y diseño de algoritmos. También conocerá algoritmos de aproximación y algoritmos aleatorios. Contenido Temático Unidad 1 Algoritmos voraces 2 Divide y vencerás 3 Programación dinámica 4 Análisis amortizado 5 Algoritmos de aproximación 6 Algoritmos aleatorios Tema Total de Semanas Semanas 3.0 2.5 3.5 2.0 2.5 2.5 16.0 Desarrollo temático 1. Algoritmos voraces Se introduce la técnica de diseño de algoritmos voraces. Se ilustra con varios algoritmos que la utilizan. 1.1. Estrategia; calendarización de intervalos; cacheo óptimo off-line; algoritmo de Dijkstra; árbol generador mı́nimo; agrupamiento (clustering). 2. Divide y vencerás. Se introduce la técnica de diseño de algoritmos divide y vencerás. Se ilustra con varios algoritmos que la utilizan. 2.1. Estrategia. 2.2. mergesort. 2.3. Conteo de inversiones en una permutación. 2.4. La pareja de puntos más cercanos. 1 2.5. Convoluciones y FFT. 3. Programación dinámica. Se introduce la programación dinámica como técnica de diseño de algoritmos. Se ilustra con varios algoritmos que la utilizan. 3.1. Estrategia. 3.2. Calendarización de intervalos con pesos. 3.3. Cadena poligonal de mı́nimos cuadrados. 3.4. Estructura secundaria de RNA. 3.5. Alineación de cadenas. 3.6. Multiplicación de matrices. 3.7. Distancias entre todas las parejas de vértices. 4. Análisis amortizado. Se introducen la técnicas de análisis amortizado para el análisis de la complejidad de un algoritmo. 4.1. Análisis global. 4.2. Método contable. 4.3. Método del potencial. 5. Algoritmos de aproximación. Se introducen los algoritmos de aproximación como alternativa a la solución exacta de problemas NP-Duros. 5.1. Algoritmos voraces como algoritmos de aproximación. 5.2. Cubierta de conjuntos (set cover ). 5.3. Cubierta de vértices (vertex cover ). 5.4. El problema del viajero. 6. Algoritmos aleatorios. Se introduce la aleatoriedad como un recurso, y se analizan algunos algoritmos aleatorios. Se contrasta su complejidad esperada con la complejidad de los algoritmos deterministas correspondientes. 6.1. Probabilidad básica. 6.2. Solución a conflictos de acceso. 6.3. Corte mı́nimo; búsqueda de mediana y quicksort. 6.4. Pareja de puntos más cercana. 6.5. Cacheo aleatorio. 6.6. Balanceo de carga. BIBLIOGRAFÍA BÁSICA: 1. Jon Kleinberg y Eva Tardös, “Algorithm design”, Addison Wesley, 2005. 2. Thomas H. Cormen, Charles E. Leiserson, Ronald. L. Rivest y Clifford Stein, “Introduction to algorithms”, MIT press, Third Edition, 2009. 2 BIBLIOGRAFÍA COMPLEMENTARIA: 1. Steven S. Skiena, “The Algorithm Design Manual”, Springer, 2nd Edition, 2008. 2. Sanjoy Dasgupta, Christos Papadimitriou y Umesh Vazirani “Algorithms”, McGraw-Hill, 2006. Sugerencias didácticas: Exposición oral Exposición audiovisual Ejercicios dentro de clase Ejercicios fuera del aula Seminarios Lecturas obligatorias Trabajo de investigación Prácticas de taller o laboratorio √ (√) (√) (√) ( ) (√) ( ) ( ) ( ) Otras: ( ) Mecanismos de evaluación del aprendizaje: √ Exámenes parciales (√) Examen final escrito (√) Trabajos y tareas fuera del aula ( ) Prácticas de laboratorio ( ) Exposición de seminarios por los ( ) alumnos Partcicipación en clase ( ) Asistencia ( ) Proyectos de programación ( ) Otras: ( ) PERFIL PROFESIOGRÁFICO: Egresado preferentemente de la Licenciatura en Ciencias de la Computación o Matemático con especialidad en Computación. Es conveniente que posea un posgrado en la disciplina. 3