Temario
Tema 1. Análisis de la eficiencia algorítmica [4 horas]
1.1 Notaciones asintóticas
1.2 Análisis de eficiencia de algoritmos iterativos
1.3 Análisis de eficiencia de algoritmos recursivos
Bibliografia: [1, 2]

Tema 2. Estrategias de diseño algorítmico [16 horas]
2.1 Fuerza bruta
2.2 Ávida (greedy)
2.3 Divide y vencerás
2.4 Vuelta atrás (backtracking)
2.5 Programación dinámica
Bibliografia: [1, 3, 4, 10]

Tema 3. Complejidad computacional [4 horas]
3.1 Complejidad computacional de un problema. Problemas P vs NP
3.2 Ramificación y Acotación (Branch and Bound)
Bibliografía: [8]

Tema 4. Programación declarativa [12 horas]
       4.1 Introducción a la programación declarativa.
       4.2 Programación con restricciones.
Bibliografia: [9]

Tema 5. Algoritmos aproximados. [4 horas]
5.1 Algoritmos de aproximación rho-Aproximados
5.2 Esquemas de Aproximación de Tiempo Polinómico (1-e)
Bibliografía: [5]

Tema 6. Algoritmos heurísticos y metaheurísticos [12 horas]
6.1 Heurísticas y búsqueda local
6.2 Metaheurísticas. Funciones objetivo no lineales y multiobjetivo.
Bibliografía: [6]

Tema 7. Programación entera mixta [8 horas]
7.1 Programación Lineal, método Simplex.
7.2 Fundamentos de la Programación Entera Mixta. .
7.3 Planos de corte. Branch and Cut
Bibliografía: [7]

CONTENIDOS PRÁCTICOS
1. Problema del Agente Viajero. Se presenta en el Tema 1.
2. Problema de la Mochila. Se presenta en el Tema 2.
3. Problema de Coloreado de Grafo. Se presenta en el Tema 4.

Se plantean diversos problemas NP completo durante el transcurso de la asignatura. El estudiante irá aplicando las distintas técnicas de diseño algorítmico y paradigmas de programación a estos problemas tipo, dentro de los que se encuentran, además de los ya mencionados, problemas de flujo de redes, AFD, parejas estables o compartición de recursos entre otros.