UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN Programa de la asignatura: Algoritmos Paralelos Clave: Semestre: Campo de conocimiento: Área de Formación: 0xyz Sexto Linea terminal: Horas Horas por Total de horas semana Créditos: Teoría Práctica 12 5 0 5 112 Tipo: Modalidad: Carácter: Curso Obligatoria Seriación indicativa antecedente: Estructuras de Datos, Análisis de Algoritmos. Seriación indicativa subsecuente: Ninguna. Objetivo General: Establecer conceptos de Complejidad y Análisis de Algoritmos Paralelos. Introducir diferentes modelos de cómputo paralelo y establecer conceptos básicos sobre el área. Estudiar diferentes técnicas sobre el Diseño y Justificación de Algoritmos Paralelos. Se revisarán problemas clásicos de algoritmos como: Búsquedas, Ordenamientos, Gráficas, Geometría Computacional, Cadenas; así como Métodos Numéricos y Algoritmos Aleatorios. Al finalizar el curso el alumno contará con una amplia gama de técnicas para el diseño de Algoritmos Paralelos. Contenido Temático Unidad Tema Semanas 1 Introducción 1.0 2 Conceptos basicos 2.0 3 Técnicas básicas 2.0 4 Listas y Árboles 2.0 5 Búsquedas y Ordenamientos 2.0 6 Teoría de Gráficas 2.0 7 Geométria Computacional 1.0 8 Cadenas 2.0 9 Métodos Numéricos 1.0 10 Algoritmos Aleatorios 1.0 Total de Semanas 16.0 Desarrollo temático 1. Introducción objetemaen este apartado se presenta un panorama general sobre los algoritmos paralelos y sus aplicaciones en diferentes áreas. 1
2. Conceptos basicos En esta sección se inicia con una breve discusión sobre el procesamiento paralelo, después se introducen diferentes modelos de cómputo paralelo, se establecen los conceptos y notación para determinar el desempeño computacional de los algoritmos paralelos. 2.1. Procesamiento Paralelo 2.2. Modelos de cómputo paralelos 2.3. Desempeño computacional de Algoritmos Paralelos 2.4. Paradigma Trabajo-Tiempo 2.5. Notación de optimalidad 2.6. Complejidad de la comunicación 3. Técnicas básicas Se introducen técnicas básicas como una guía general para el diseño de algoritmos paralelos, al final se ha construido un manual de métodos que son aplicables directamente. 3.1. Árboles balanceados 3.2. Técnica Pointer Jumping 3.3. Divide y Vencerás 3.4. Particionamiento (Partitioning) 3.5. Técnica Pipelining 3.6. Aceleramiento en Cascada 3.7. Técnica Symmetry Breaking 4. Listas y Árboles Se atacan diferentes problemas usando como herramientas las funciones de listas y árboles. 4.1. Técnica List Ranking 4.2. Técnica de Euler 4.3. Contracción de árboles 4.4. Antecesor Común más cercano 5. Búsquedas y Ordenamientos Se revisan técnicas para el desarrollo de algoritmos relacionados con búsqueda, mezcla y ordenamiento de elementos 5.1. Búsquedas 5.2. Mezclas (Merging) 5.3. Ordenamiento 5.4. Ordenamiento en Redes (Sorting Network) 5.5. Problema de Selección 5.6. Cotas Mínimas 6. Teoría de Gráficas Se introducen eficientes algoritmos paralelos para manipular una gran variedad de problemas de Teoría de Gráficas 6.1. Componentes Conexas 6.2. Árboles generadores de Peso mínimo 6.3. Componentes Bi-conexas 6.4. Descomposición por orejas 6.5. Gráficas Dirigidas 2
7. Geométria Computacional Se presentan diversos algoritmos paralelos para algunos problemas de geometría en el plano 7.1. Envolvente convexa (revisado) 7.2. Intersección de Conjuntos Convexos 7.3. Traslape de Planos(Plane Sweeping) 7.4. Problemas de Visibilidad 7.5. Dominancia (DominanceCounting ) 8. Cadenas Se revisan poderosas herramientas algorítmicas, basadas en propiedades matemáticas sobre cadenas. 8.1. Introducción 8.2. Apareamientos 8.3. Análisis de Texto 8.4. Análisis de Patrones 8.5. Árboles de Sufijos 8.6. Aplicaciones para Árboles de Sufijos 9. Métodos Numéricos Se presentan algoritmos paralelos rápidos para operaciones de polinomios y matrices. 9.1. Recurrencia Lineal 9.2. Sistemas Triangulares Lineales 9.3. La Transformada de Fourier Discreta 9.4. Multiplicación Polinomial 9.5. Matrices Toeplitz 9.6. División Polinomial 9.7. Evaluación de Polinomios 9.8. Matrices Densas 10. Algoritmos Aleatorios Se desarrollan Algoritmos Aleatorios Paralelos para una gran variedad de problemas. 10.1. Medidas de Desempeño 10.2. Conjunto Independiente Fraccional 10.3. Localización de un punto en una Subdivisión Planar Triangulada 10.4. Apareamiento de Patrones 10.5. Verificación de Identidades Polinomiales 10.6. Ordenamiento 10.7. Apareamiento Máximo 3
BIBLIOGRAFÍA BÁSICA: 1. Casanova, H., Legrand, A., Robert, Y. Parallel Algorithms, (Chapman and Hall/CRC Numerical Analy and Scient Comp. Series) CRC Press, 2008. 2. Grama, A. Karypis, G., Kumar, V. Gupta, A., Introduction to Parallel Computing, 2nd ed., Addison Wesley, 2003. 3. Leighton, F. T., Introduction to Parallel Algorithms and Architectures, xth ed., Editorial, 2006, 4. Leopold, C., Parallel and Distributed Computing: A Survey of Models, Paradigms and Approaches, Wiley Series on Parallel and Distributed Computing, John Wiley & Son Inc. 2001. 5. Roosta, S.H., EfParallel Processing and Parallel Algorithms: Theory and Computation, Springer, 2000. BIBLIOGRAFÍA COMPLEMENTARIA: 1. Correa, R., de Castro, I., Fiallos, M., Gomez L.F. (Editors), Models for Parallel and Distributed Computation: Theory, Algorithmic Techniques and Applications (Applied Optimization), Kluwer Academic Pu., 2002, 2. Gibbons, A., Rytter, W., Efficient Parallel Algorithms, Cambridge University Press, 1990. 3. JáJá, J., An Introduction to Parallel Algorithms, Addison-Wesley, 1992 4. Leighton, F. T. Introduction to Parallel Algorithms and Architectures: Arrays, Trees, Hypercubes Morgan Kaufmann Publishers, 1992. 5. Mohcine, J., Contassot-Vivier, S. Couturir, R., Parallel Iterative Algorithms: From Sequential to Grid Computing, Chapman and Hall/CRC Numerical Analysis and Scientific Computation Series, 2007 4
Sugerencias didácticas: Mecanismos de evaluación del aprendizaje: Exposición oral ( ) Exámenes parciales ( ) Exposición audiovisual ( ) Examen final escrito ( ) Ejercicios dentro de clase ( ) Trabajos y tareas fuera del aula ( ) Ejercicios fuera del aula ( ) Prácticas de laboratorio ( ) Seminarios ( ) Exposición de seminarios por los ( ) Lecturas obligatorias ( ) alumnos Trabajo de investigación ( ) Partcicipación en clase ( ) Prácticas de taller o laboratorio ( ) Asistencia ( ) Proyectos de programación ( ) Otras: ( ) Otras: ( ) PERFIL PROFESIOGRÁFICO: Egresado preferentemente de la Licenciatura en Ciencias de la Computación o Matemático con especialidad en Computación con amplia experiencia de programación. Es conveniente que posea un posgrado en la disciplina. 5