Asignatura en la que se revisan diversos resultados importantes en optimización combinatoria. Se define lo que se entiende por problema de optimización combinatoria, se realiza un repaso general sobre complejidad computacional y se dan a conocer los mejores algoritmos conocidos para problemas relevantes sobre grafos y redes. También se abordan las diversas familias y enfoques de resolución de problemas NP-hard, revisando diversos lenguajes y formas de modelar problemas computacionalmente difíciles, conociendo los algoritmos más comunes detrás de solvers estado del arte para esos lenguajes.