Algorithms and Optimisation
Full course descriptionThis course is devoted to mathematical models and solution methods for hard optimization problems. First, we study the theory of computational complexity, including the concept of P versus NP. In particular, we prove that some problems are computationally intractable. Given the complexity insights, solving such problems is a challenge. Therefore, we study the design and analysis of exponential time exact algorithms as well as polynomial time approximation algorithms and approximation scheme. The course is open ended in the sense that some topics can be chosen according to student interests. Classical problems that will be covered are, among others, scheduling, colouring, set covering, and packing equired algorithm design skills will be used to solve challenging problems from Project Euler (projecteuler.net) throughout the entire course.
Course objectivesAbility to analyse the complexity of optimization problems, and ability to design fast algorithms providing good-quality solutions for hard optimization problems.
PrerequisitesStudents need to have obtained a Bachelor degree in Econometrics, Operations Research, Mathematics, or Computer Science. Knowledge in optimization (Linear Programming) and basic graph theory is highly recommended. Familiarity with basic algorithms and the analysis of algorithms (runtime complexity) is certainly helpful. C++ (or Java/Python/Basic) Programming skills are also prerequisites as there will be many practical programming cases.
An advanced level of English.
Recommended reading"Algorithms" by Dasgupta, Papadimitriou and Vazirani (Mc Graw-Hill).
Selected chapters from several books on combinatorial optimization.