Unidades crédito: 4004
Programación semestral: Semestre de 16 semanas con 160 horas/semestre y 10 horas/semana.
Tel. +58 274 240 2685 - 240 2811.
|
1. Técnicas avanzadas de análisis y diseño 2. Estructuras de datos avanzadas |
Se inicia con una descripción detallada de las técnicas de diseño
y de análisis de algoritmos aplicadas a los principales métodos de ordenamiento y búsqueda tanto internos como externos, para seguir con las estructuras avanzadas de datos haciendo énfasis en los árboles, se continua con los algoritmos de grafos y los algoritmos matemáticos incluyendo también los algoritmos multihilos. Luego se estudian diversos algoritmos utilizados hasta los momentos en geometría computacional, para finalizar con los problemas de complejidad computacional polinómica y no polinómica.
Durante el curso se utilizarán estrategias de aprendizaje donde se desarrolle investigación documental con su respectiva presentación y defensa de los resultados obtenidos ante el curso.
T. Cormen, C. Leiserson, R. Rivest y C. Stein. Introduction to algorithms. MIT Press and McGraw-Hill. 2009.
SESIÓN |
CONTENIDOS |
OBJETIVOS |
ACTIVIDADES |
RECURSOS |
EVALUACIÓN |
1 |
1. Análisis de algoritmos: Tipos abstractos de datos (TAD), notación TDSO, notaciones estándares, funciones comunes, análisis probabilístico y análisis amortizado: Método agregado, método del contador, método del potencial y tablas dinámicas. |
1. Lograr una visión general sobre el análisis de algoritmos y los tipos abstractos de datos (TAD). | |
|
|
4 |
2. Técnicas de diseño: Introducción a las técnicas de diseño: algoritmos incrementales, recursivos, divide-y-vencerás, backtracking y programación dinámica. |
2. Obtener un panorama genérico sobre las técnicas de diseño de algoritmos. |
|
|
|
7 |
3. Técnicas de pruebas y corrección
de algoritmos: Pruebas de corrección parcial, pruebas de parada, pruebas de programas iterativos y recursivos, eliminación de la recursividad. |
2. Desarrollar habilidades en el uso de las técnicas de prueba y corrección de algoritmos. |
|
|
|
SESIÓN |
CONTENIDOS |
OBJETIVOS |
ACTIVIDADES |
RECURSOS |
EVALUACIÓN |
9 |
1. Fundamentos: Estructuras lineales de datos: Pilas, Colas y Listas. Hashing perfecto. Colas por prioridad. Aumento de estructuras de datos y árboles de intervalos. Montículos binarios y de Fibonacci: estructura y operaciones. Conjuntos disjuntos: operaciones, bosques y análisis de la unión por rango con caminos de compresión. |
1. Desarrollar habilidades en el uso de estructuras de datos complejas. | |
|
|
12 |
2. Árboles monocriterio: Introducción. Árbol binarios de búqueda y rojinegros. Familia de árboles_B. Htree. |
2. Lograr una visión general sobre las estructuras de datos para el manejo de índices construidos por una clave. | |
|
|
14 |
3. Árboles multicriterio: Introducción. Árbol k-d. Quadtree. Octree. Árbol_R. |
3. Lograr una visión general sobre las estructuras de datos para el manejo de índices construidos por dos o más claves. | |
|
|
SESIÓN |
CONTENIDOS |
OBJETIVOS |
ACTIVIDADES |
RECURSOS |
EVALUACIÓN |
16 |
1. Fundamentos: Definiciones, especificación, representaciones, relaciones, dígrafos, dígrafos acíclicos, búsqueda en amplitud, búsqueda en profundidad, ordenamiento topológico y conectividad. Árboles de expansión mínima: algoritmos de Kruskal y Prim. |
1. Lograr una visión general sobre los algoritmos para grafos. | |
|
|
18 |
2. Digrafos etiquetados: Caminos más cortos y relajación, algoritmo de Dijkstra, algoritmo de Bellman-Ford, restricciones y caminos más cortos (programación lineal), algoritmo de Floyd-Warshall y algoritmo de Johnson. Flujo máximo: Redes de flujo y método de Ford-Fulkerson. |
2. Desarrollar habilidades en el uso de los digrafos etiquetados. |
|
|
|
21 |
3. Matrices: Operaciones sobre matrices: Representaciones especiales de matrices, algoritmo de Strassen, sistemas numéricos algebraicos y multiplicación de matrices, sistemas lineales de ecuaciones, inversión de matrices, matrices simétricas positivas y aproximación de mínimos cuadrados. |
3. Desarrollar habilidades en el uso de los algoritmos para matrices. | |
|
|
22 |
4. Algoritmos Probabilistas y Transformada Rápida
de Fourier: Algoritmos multihilos y Programación lineal, Transformada discreta de Fourier y transformada rápida de Fourier. |
4. Lograr un alto nivel operativo en el uso de polinomios y transformada rápida de Fourier. |
|
|
|
24 |
5. Algoritmos de teoría de números:
Nociones de teoría de números, máximo común divisor, aritmética modular, sistemas lineales de ecuaciones modulares, teorema de resto chino, potencias de un entero y algoritmo RSA de criptografía. |
5. Desarrollar habilidades en el uso de los algoritmos de teoría de números. |
|
|
|
SESIÓN |
CONTENIDOS |
OBJETIVOS |
ACTIVIDADES |
RECURSOS |
EVALUACIÓN |
26 |
1. Algoritmos sobre polígonos: Teoremas de galería de arte, Teoría de triangulación, área de polígono, intersección de segmentos y algoritmos de triangulación. |
1. Desarrollar habilidades en el uso de algoritmos para polígonos. | |
|
|
28 |
2. Partición de polígonos:
Partición monótona, trapeciolización, partición en montañas monótonas, triangulación de tiempo lineal, partición convexa. |
2. Lograr una visión general sobre los métodos de partición de polígonos. |
|
|
|
SESIÓN |
CONTENIDOS |
OBJETIVOS |
ACTIVIDADES |
RECURSOS |
EVALUACIÓN |
29 |
1. Problemas NP-completos: Clases P y NP, reducciones polinomiales, problemas NP, algunas pruebas de completitud NP, algoritmos no determinísticos y problemas NP duros. |
1. Lograr una visión general sobre los problemas de completitud computacional. | |
|
|
30 |
2. Heurísticas y algoritmos de aproximación:
Algoritmos heurísticos, coloreo de grafos, el problema del vendedor viajero, el problema del morral y aproximaciones a problemas NP duros. |
2. Lograr una visión general sobre el uso de las heurísticas y los algoritmos de aproximación. |
|
|
|