logoULA

ESCUELA DE INGENIERÍA DE SISTEMAS

DEPARTAMENTO DE COMPUTACIÓN


nuestro logo

Diseño y Análisis de Algoritmos



la profe

Prof. Isabel M. Besembel C.

Edif. Facultad de Ingeniería. Escuela de Sistemas. Cubículo 2S07. Ala Sur. Piso 2. Sector La Hechicera. Mérida 5101-Venezuela.
Tel. +58 274 240 2685 - 240 3325. ibc@ula.ve


TABLA DE CONTENIDO

Descripción del curso

Prerrequisitos,

objetivos generales y

programación semestral

Evaluación

Bibliografía

1. Técnicas avanzadas de diseño y análisis

2. Algoritmos para grafos

3. Algoritmos matemáticos

4. Completitud NP

5. Geometría computacional


Descripción del curso:

Se inicia con una descripción detallada de las técnicas de diseño y de análisis de algoritmos, para seguir con los algoritmos de grafos y su conexión con los problemas de completitud computacional para soluciones polinómicas y no polinómicas. Se estudian diversos algoritmos matemáticos y se finaliza con los diferentes algoritmos utilizados hasta los momentos en geometría computacional.

Tipo: Obligatoria

Prelación: Programación 3 y Matemáticas Discretas

Código: ISFDAA

TPLU: 4 0 0 4

Ubicación: Sexto semestre

Ciclo: Formativo

Tabla de contenidos


Prerrequisitos:

  1. Programación y estructuras de datos
  2. Matemáticas discretas

Objetivos generales:

  1. Consolidar un alto nivel en el diseño y uso de algoritmos y estructuras de datos.
  2. Lograr un alto nivel operativo en el uso de algoritmos para grafos, matemáticos y de geometría computacional.
  3. Comprender la importancia de la completitud computacional y la división de los problemas en aquellos de solución polinómica y los de solución no-polinómica.
  4. Desarrollar habilidades en el análisis, diseño y construcción de algoritmos, que permitan resolver problemas presentados en orden de complejidad creciente

Programación semestral:

Tabla de contenidos


Evaluación:

Tabla de contenidos


Textos:

Brassard, G y Bratley, P. Fundamentos de algoritmia. Prentice Hall, 1997.

O'Rourque, J. Computational Geometry. 2da. Ed. Cambridge University Press, 1998.

Besembel, I. TDSO. Publicaciones de la Facultad de Ingeniería-ULA.

Textos de consulta:

Knuth, D. The Art of Computer Programming. Vol. 1 y 3.. Addison-Wesley. 1975.

Baldwin, D. Algoritms and Data Structures: The Science of Computing. Charles River Media. 2004.

McConnell, J. Analysis of Algoritms: An Active Learning Approach. Jones and Bartlett Pub. 2001.

Kingston, J. Algorithms and data structures: design, correctness, analysis. Addison-Wesley, 1990.

Berlioux, P. y Bizard, P. Algorithmique: construction, preuve et évaluation des programmes. Dunod, 1983.

Revistas de consulta:

Elsevier. Computational Geometry. Theory and Applications. Cuatrimestral.

Tabla de contenidos


Contenidos específicos:

UNIDAD 1.- Técnicas avanzadas de diseño y análisis

Sesión

CONTENIDOS

OBJETIVOS

ACTIVIDADES

RECURSOS

EVALUACIÓN

1
2
3
4

1. Técnicas avanzadas de diseño y análisis:
Introducción y notación TDSO. Técnicas de diseño: algoritmos incrementales, recursivos, divide-y-vencerás, backtracking y programación dinámica.
1. Desarrollar habilidades en el uso de la notación TDSO y las técnicas de diseño de algoritmos.
  • Lecturas: guía TDSO Besembel, cap. 4 Kingston, cap. 2 Brassard y visitar
    http://www.ing.ula.ve/~ibc/ayda.
  • Ejercicio 1: sobre técnicas de diseño.
  • Clase: clase 1, clase 2, clase 3 y clase 4.
  • Prueba diagnóstico
  • Ejercicio 1
  • Textos
  • Lista del curso
  • Corrección de la prueba diagnóstico.
  • 5
    6

    2. Análisis amortizado:
    Método agregado. Método del contador. Método del potencial. Ejemplos.

    2. Lograr un alto nivel operativo en el análisis amortizado de algoritmos y tipos abstractos de datos.

  • Lecturas: cap. 1, 3 y 4 Brassard. Cap. 2 y 3 Kingston.
  • Ejercicio 2: sobre análisis amortizado.
  • Clases: clase 5 y clase 6
  • Ejercicio 2
  • Textos
  • Lista
  • Corrección del ejercicio 1 (2%).
  • 7
    8

    3. Técnicas de pruebas y correctitud 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.

  • Lecturas: cap. 1-6 Berlioux y Bizard. Cap. 1 Kingston.
  • Clases: clase 7 y clase 8
  • Textos
  • Lista
  • Corrección del ejercicio 2 (2%).
  • Volver al programa

    UNIDAD 2.- Algoritmos para grafos

    Sesión

    CONTENIDOS

    OBJETIVOS

    ACTIVIDADES

    RECURSOS

    EVALUACIÓN

    9
    10
    11
    12

    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.
    1. Desarrollar habilidades en el uso de algoritmos para grafos.
  • Lecturas: sec. 5.4 y cap. 9 Brassard.
  • Ejercicio 3: sobre grafos.
  • Clase: clase 9 , clase 10, clase 11 y clase 12.
  • Ejercicio 3
  • Textos
  • Lista del curso
  • Prueba 1 (20%).
  • 13
    14

    2. Árboles abarcadores mínimos:
    Algoritmos voraces. TAD Conjuntos Disjuntos. Algoritmo de Kruskal. TAD Colas de Prioridad. TAD Montículos Binomiales. TAD Montículos de Fibonacci. Algoritmo de Prim.

    2. Lograr un alto nivel operativo en el cálculo de los árboles abarcadores mínimos.

  • Lecturas: sec. 5.5, 5.7-5.9, cap. 6 Brassard.
  • Ejercicio 4: sobre árboles abarcadores mínimos.
  • Clases: clase 13 y clase 14
  • Ejercicio 4
  • Textos
  • Lista
  • Corrección del ejercicio 3 (2%).
  • 15
    16
    17
    18

    3. 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.

    2. Desarrollar habilidades en el uso de los digrafos etiquetados.

  • Lecturas: cap. 6 Brassard.
  • Ejercicio 5: sobre digrafos etiquetados.
  • Clases: clase 15 , clase 16, clase 17 y clase 18
  • Textos
  • Lista
  • Corrección del ejercicio 4 (2%).
  • 19

    4. Flujo máximo:
    Redes de flujo y método de Ford-Fulkerson.

    2. Desarrollar habilidades en el uso de las técnicas de prueba y corrección de algoritmos.

  • Lecturas: cap. 26 Cormen et. al.
  • Clases: clase 19
  • Textos
  • Lista
  • Ejercicios de grafos
  • Corrección del ejercicio 5 (2%).
  • Volver al programa

    UNIDAD 3.- Algoritmos matemáticos

    Sesión

    CONTENIDOS

    OBJETIVOS

    ACTIVIDADES

    RECURSOS

    EVALUACIÓN

    20
    21
    22

    1. 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, programación dinámica y vuelta atrás.
    1. Desarrollar habilidades en el uso de los algoritmos para matrices.
  • Lecturas: sec. 5.1, 7.6, 8.6 y10.6 Brassard.
  • Ejercicio 6: sobre matrices.
  • Clase: clase 20, clase 20a, clase 21 y clase 22.
  • Ejercicio 6
  • Textos
  • Lista del curso
  • Prueba 2 (20%).
  • 23
    24

    2. Algoritmos Probabilistas y Transformada Rápida de Fourier:
    Algoritmos probabilistas, Transformada discreta de Fourier y transformada rápida de Fourier.

    2. Lograr un alto nivel operativo en el uso de polinomios y transformada rápida de Fourier.

  • Lecturas: sec. 2.7 Brassard.
  • Ejercicio 7: sobre polinomios, la transformada rápida de Fourier y teoría de números.
  • Clases: clase 23, clase 23a y clase 24
  • Ejercicio 7
  • Textos
  • Lista
  • Corrección del ejercicio 6 (2%).
  • 25
    26

    3. 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.

    2. Desarrollar habilidades en el uso de los algoritmos de teoría de números.

  • Lecturas: sec. 2.7, 7.7, 7.8, 10.4, y 10.5 Brassard.
  • Clases: clase 25, clase 25a, clase 26 y clase 26a
  • Textos
  • Lista
  • Corrección del ejercicio 7 (2%).
  • Volver al programa

    UNIDAD 4.- Completitud NP

    Sesión

    CONTENIDOS

    OBJETIVOS

    ACTIVIDADES

    RECURSOS

    EVALUACIÓN

    27

    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.
  • Lecturas: cap. 12 Brassard.
  • Ejercicio 8: sobre pruebas de completitud NP y heurísticas.
  • Clase: clase 27 y clase 27a .
  • Ejercicio 8
  • Textos
  • Lista del curso
  • Prueba 3 (20%).
  • 28

    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.

  • Lecturas: cap. 13 Brassard.
  • Clases: clase 28, clase 28a y clase 28b.
  • Textos
  • Lista
  • Corrección del ejercicio 8 (2%).
  • Volver al programa

    UNIDAD 5.- Geometría computacional

    Sesión

    CONTENIDOS

    OBJETIVOS

    ACTIVIDADES

    RECURSOS

    EVALUACIÓN

    29
    30

    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.
  • Lecturas: cap. 1 O'Rourque.
  • Clase: clase 29 y clase 30.
  • Textos
  • Lista del curso
  • Prueba 4 (10%).
  • 30

    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.

  • Lecturas: cap. 2 O'Rourque.
  • Ejercicio 9: sobre polígonos.
  • Clases: clase 30.
  • Ejercicio 9
  • Textos
  • Lista
  •  

     

    Volver al programa