Nodari Vakhania Maizuradse, Antonio Daniel Rivera López
Ciclo de formación:
Profesional
Área curricular:
Ciencias de la Disciplina
Tipo de unidad:
Teórica
Carácter de unidad:
Obligatoria
Clave:
AG01FP050010
Créditos:
10
Semestre:
4°
Horas Teoría:
5
Horas Práctica:
0
Programas académicos en los que se imparte:
Licenciatura en Ciencias Áreas terminales en Matemáticas, Física, Bioquímica y Biología Molecular, y Ciencias Computacionales y Computación Científica
Prerrequisitos:
Domina los fundamentos matemáticos a través del desarrollo de la habilidad del estudiante para entender y crear argumentos matemáticos.
Antecedentes Recomendadas:
Ninguna
Consecuentes Recomendadas:
Teoría de la Computación
Presentación de la unidad de aprendizaje:
Los algoritmos son fundamentales en ciencias computacionales y en ingeniería de software. En esta unidad de aprendizaje, se continúa el estudio de las bases para construir y desarrollar algoritmos eficientes y demostrar su validez.
Propósito de la unidad de aprendizaje:
Comprender y utilizar las herramientas básicas de análisis de algoritmos.
Competencias profesionales:
Utiliza o elabora programas o sistemas de computación para el procesamiento de información, cálculo numérico, simulación de procesos o control de experimentos.Construye modelos computacionales simplificados que describan una situación compleja, identifica sus elementos esenciales y efectúa las aproximaciones necesarias.
Contribución al perfil de egreso:
Para el cumplimiento del perfil, se desarrollan las competencias académicas y profesionales en el área terminal de su elección, que posibiliten el adecuado desempeño para seleccionar, movilizar y gestionar las disposiciones y los recursos disponibles para resolver problemas en un campo determinado de situaciones de acción.
Secuencia temática:
I Introducción informal a los algoritmos y su complejidad.
La definición intuitiva de un algoritmo.
Los medios de expresión de un algoritmo: descripción de alto nivel (el pseudocódigo).
Modelos informales de computación.
El tamaño de un problema y su instancia, y los esquemas de codificación de los problemas.
Complejidad de tiempo y espacio.
Introducción a los problemas (algoritmos) polinomiales e intratables.
Las clases P, NP y problemas NP-completos.
II Demostración de validez y análisis de complejidad de algoritmos.
Divide y vencerás. Aplicaciones: búsqueda binaria, árboles binarios, n-arios y balanceados.
Algoritmo de Euclides.
Algoritmo de Strassen para multiplicar matrices.
Cobertura de árboles: preorder, inorder y postorder.
Búsqueda en profundidad y en altura.
Algoritmos de búsqueda: Bubble sort, Merge sort, Quick sort.
III Algoritmos voraces.
La definición de los algoritmos voraces.
Cobertura mínima de árboles (“minimal spanning trees”): los algoritmos de Prim y Kruskal.
El problema de los tiempos de espera.
El problema de la mochila no-entera.
Calendarización de trabajos a plazos.
IV Introducción a programación dinámica.
Rutas más cortas en grafos con pesos no-negativos: el algoritmo de Dijkstra.
Criterios de Evaluación:
Exámenes parciales: 40%
Examen final: 30%
Participación en clase: 10%
Búsqueda de información: 10%
Otra (especifique): Tareas: 10%
Bibliografía básica:
Aho, J. Hopcropt y Ulman, J. 1974. The design and analysis of computer algorithms. Ed. Addisson-Wesley.
Horowitz, E. y Sahni, S. 1978. Fundamentals of computer algorithms. Ed. Computer Science Press.
Garey, M. y Johnson, D. 1979. Computers and intractabililty: a guide to theory of NP-completenes. Ed. Freeman and Company.
Aho, J. Hopcroft y Ullman, J. 1988. Estructuras de datos y algoritmos. Ed. Addison-Wesley.
Dasgupta, Sanjoy, Papadimitriou, Christos y Vazirani, Umesh. 2006. Algorithms. McGraw-Hill.
Bibliografía complementaria:
Levitin, Anany. 2006. Introduction to the design & analysis of algorithms. 2a edición. Ed. Addison Wesley.
Mehta, D. P. 2004. Handbook of data structures and applications.
Kocay, W. Graphs. 2004. Algorithms and optimization. Ed. Chapman and Hall.
Dobrushkin, V. A. 2009. Methods in algorithmic analysis. Ed. Chapman and Hall.