Teoría de Algoritmos
2o curso de Ingeniería Informática
José Luis Verdegay
José Luis Verdegay
Departamento de Ciencias de la Computación e
Inteligencia Artificial
http://decsai.ugr.es/∼verdegay
Horarios y duración de la asignatura
Grupo A
4 horas de teoría y 2 de prácticas por semana. Durante 15
semanas
Los grupos de prácticas “homogeneos” habrá que pasarselos, ya
organizados, a los Profesores (David A. Pelta).
Horarios y duración de la asignatura
Grupo B
4 horas de teoría y 2 de prácticas por semana. Durante 15
semanas
Los grupos de prácticas “homogeneos” habrá que pasarselos, ya
organizados, a los Profesores (David A. Pelta).
Temas y objetivos de la asignatura
Basados en la recomendación IEEE-ACM Computing
Curricula 2001 para Computer Science la
asignatura de “Metodología de la Programación I”
junto a la asignatura “Teoría de Algoritmos”
conforman la troncalidad de Metodología y
Tecnología de la Programación en los planes de
estudios de Informática en la Universidad de
Granada.
Considerando las recomendaciones del CC2001 y los
descriptores de la materia troncal concernientes a
la parte de tecnología de la programación, podemos
considerar que los temas más importantes y sus
objetivos en la asignatura son los siguientes
Temas y objetivos
Temas a considerar
Análisis asintótico de complejidad en media y en el peor caso.
Diferencias entre el mejor caso, el peor caso y el caso
promedio
Notaciones O Mayúscula, o minúscula, omega y theta
Clases de complejidad
Medidas empíricas de eficiencia
Equilibrio en la eficiencia en tiempo y en espacio
Relaciones de recurrencia para analizar algoritmos recursivos
AL1, Análisis básico de Algoritmos
Temas y objetivos
Temas a considerar
Algoritmos de fuerza bruta (enumerativos, combinatorios)
Algoritmos greedy
Divide y venceras
Backtracking
Branch-and-bound
Heurísticas
Emparejamiento de patrones y algoritmos sobre texto
Algoritmos de aproximación numérica.
AL2, Estrategias algoritmicas
Temas y objetivos
Objetivos
Explicar el uso de la notaciones O mayúscula, omega y theta para
describir la cantidad de trabajo realizada por un algoritmo.
Uso de la notación O mayúscula, omega y theta para dar límites en
tiempo y espacio a la complejidad de un algoritmo.
Determinar la complejidad en tiempo y espacio de algoritmos
simples.
Deducir relaciones de recurrencia para la complejidad en tiempo de
algoritmos recursivos.
Resolver relaciones de recurrencia elementales
Describir las deficiencias de los algoritmos de fuerza bruta.
Temas y objetivos
Objetivos
Identificar, para cada uno de los tipos de algoritmos, un ejemplo
de la vida cotidiana que ejemplifique el concepto básico del
mismo.
Implementar un algoritmo greedy para resolver un problema
apropiado.
Implementar un algoritmo divide-y-vencerás para resolver un
problema apropiado.
Usar backtracking para resolver un problema tal como recorrer
un puzzle.
Describir varios problemas con su correspondiente solución
heurística.
Usar aproximación numérica para resolver otro tipo de problemas
tales como obtener las raíces de un polinomio.
Programa de la asignatura
Capitulo 1. La Eficiencia de los Algoritmos.
Planteamiento General. Introducción histórica al Análisis de Algoritmos.
Tiempo de ejecución. Notaciones para la Eficiencia de los Algoritmos.
Reglas teóricas y prácticas para el calculo de la eficiencia. Análisis de
algoritmos elementales
Resolución de Recurrencias Asintóticas. Inducción. Método de la función
característica
Capitulo 2. Algoritmos Divide y Vencerás.
Divide y Vencerás y Algoritmos Divide y Vencerás. Determinación del
umbral.
Algoritmos de Búsqueda Divide y Vencerás.
Algoritmos Divide y Vencerás para la Ordenación.
Otras Aplicaciones de la Técnica Divide y Vencerás. Multiplicación de
matrices. El problema de la “línea del horizonte”.
Programa de la asignatura
Capitulo 3. Algoritmos Greedy.
El Enfoque Greedy. Fundamentos teóricos.
Algoritmos Greedy para Grafos. Definiciones. Algoritmos para el Árbol
Generador Minimal de un grafo. Algoritmo de Dijkstra. El Problema del
Árbol de Steiner.
Heurísticas Greedy. El problema del Viajante de Comercio. El problema de
la Mochila. El problema del Coloreo de un Grafo.
Capitulo 4. Algoritmos Basados en Programación Dinámica.
Programación Dinámica y Diseño de Algoritmos. Principio de Optimalidad.
Algoritmos Elementales que usan la Programación Dinámica.
Algoritmos de Camino Mínimo.
El Problema de la Mochila. El Problema del Viajante de Comercio.
Multiplicación encadenada de matrices. Determinación de la Secuencia de
mayor longitud
Programa de la asignatura
Capitulo 5. Algoritmos para la Exploración de Grafos.
Grafos Implícitos. Árboles para Juegos. Algoritmos de solución para
juegos elementales.
Técnica Bactracking. Métodos Branch-Bound. Espacios de estados.
Eficiencia de los algoritmos de exploración de grafos. El problema de las
8 reinas. El problema de la suma de subconjuntos.
Algoritmos para la resolución del problema de las N reinas. Suma de
Subconjuntos.
Capitulo 6. Otras Metodologías Algorítmicas.
Algoritmos de Precondicionamiento y Transformación del Dominio
Introducción a los algoritmos heurísticos para optimización.
Objetivos
a) Dominar los métodos de cálculo de la
eficiencia teórica de los algoritmos
b) Conocer en profundidad las técnicas
de diseño de algoritmos y
c) Saber asociar a un problema el mejor
algoritmo para su resolución
Teoría de Algoritmos
Temario de prácticas:
Las prácticas serán de tres tipos
a) Pizarra (eficiencias, recurrencias, …)
b) Laboratorio, se desarrollaran en equipos
de 2 personas y tratarán sobre
Eficiencia de algoritmos, implementación
de algoritmos DV, AG, PD, BB, BT (2 ó 3)
c) Prácticas voluntarias que se sugerirán
Teoría de Algoritmos
Sistema de evaluación
Examen escrito de teoría y problemas
(80%)
El trabajo práctico (20%).
Prácticas opcionales (influyen positivamente
en la nota final)
La nota de prácticas se podrá guardar
hasta septiembre si la nota es superior a
8/10
Teoría de Algoritmos
Bibliografía de apoyo:
G. Brassard y P. Bratley: Fundamentos
de Algoritmia. Prentice Hall
T.H. Cormen, C.E. Leiserson y R. L.
Rivest: Introduction to Algorithms.
The MIT Press
E. Horowitz y S. Sahni: Fundamentals
of Computer Algorithms. Comp Science
Press
Teoría de Algoritmos
Bibliografía de consulta:
Consulta
A. V. Aho, J.E. Hopcroft y J.D. Ullman: Data Structures and Algorithms. Addison Wesley
Pub. Co. (1982)
S. Baase: Computer Algorithms. Introduction to Design and Analysis. Addison Wesley
(1988)
G. Brassard y P. Bratley: Fundamentos de Algoritmia.Prentice Hall (1997)
D. Harel: Algorithmics (The spirit of computing). Addison Wesley Pub. Co. (1987)
S. S. Kiena: The Algorithm Design Manual. Springer Verlag (1998)
D.E. Knuth. El Arte de Programar Ordenadores. Algoritmos Fundamentales.Vol 1. Reverté,
1985.
D.E. Knuth. El Arte de Programar Ordenadores. Clasificación y Búsqueda.Vol 3. Reverté,
1987.
U. Manber. Introduction to Algorithms. Addison-Wesley, 1989.
J.J. McConnell: Analysis of Algorithms (an active learning approach). Jones and Bartlett
Pub. (2004)
I. Parberry. Problems on Algorithms. Prentice Hall (1995).
R. Sedgewick. Algorithms. Second edition. Addison-Wesley, 1988.
R. Sedgewick y P. Flajolet. An Introduction to Analysis of Algorithms. Addison-Wesley,
1997.
J.D. Smith: Design and Analysis of Algorithms. PWS-KENT Publishing Co. (1989)
G. Valiente: Algorithms on Trees and graphs. Springer (1998).
Modo de aprobar la asignatura
Estudiar todos los días lo explicado en clase
Contrastar y ampliar los apuntes de clase con el libro de la
asignatura y con otros que se irán recomendando
Hacer los trabajos voluntarios que se irán proponiendo
Asistir a tutorías
¡Ojo,que no son clases particulares!
Hay un horario oficial de tutorías, pero se me puede localizar a
cualquier hora
En
http://decsai.ugr.es/~verdegay/web
estaran colgados todos los materiales docentes interesantes:
transparencias, apuntes, bibliografía, links, etc., dentro de la
pagina de la asignatura
En cuanto les habilite sus cuentas, tendrán acceso a ese
material, y podrán rellenar sus fichas.