## Advanced Methods in Algorithms

Instructor: Vitaly Skachek

Teaching assistant: Pille Pullonen

Lecture: Wed. 14.15 - 16.00, Paabel 218

Practice: Fri. 12.15 - 14.00, Paabel 218

Office hours: Wed. 10:15-11:45, Paabel 224 (or by appointment)

Language: English

Contact: Vitaly Skachek,
Pille Pullonen

### Final exam

The final exam will take place on Friday, **June 16th**, starting at **12:15** (duration: 3 hours). Place: J. Liivi 2, room 202. Any hand-written or printed material can be used in the exam. However, no electronic devices are allowed (no calculators, phones, computers, tablets, etc.)

`Final exam 16 June 2017:`

### Literature

- S. Dasgupta, C. Papadimitriou and U. Vazirani,
, McGraw Hill, New York 2008.*Algorithms* - V.V. Vazirani,
, Springer-Verlag, Berlin 2003.*Approximation Algorithms* - S. Even,
, 2nd edition, Cambridge University Press, New York 2012.*Graph Algorithms* - T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein,
, MIT Press, Boston 2009.*Introduction to Algorithms*

### Course description

This course focuses on design and analysis of advanced algorithms in computer science. It is advised to take **Algorithms and Data Structures** (MTAT.03.133) and **Advanced Algorithmics** (MTAT.03.238) before you take this course. In comparison to "Advanced Algorithmics", this course will emphasize the analysis of the algorithms (proof of correctness, complexity analysis), and will **not** focus on implementations and programming.

### Grading policy

There will be six homeworks and the final exam. The final grade will be based on the grade of homeworks (60%) and of the final exam (40%). The homeworks will mainly contain questions of design and of analysis of algorithms, and typically will **not** contain programming tasks.

### Syllabus

The following is a preliminary list of topics (some deviations from this list are possible):

#### Part 1: Deterministic algorithms

- Fast Fourier transform. Algorithm for fast multiplication of polynomials.
- Algorithms for finding a minimum spanning tree in a graph.
- Flow networks. Efficient algorithm for finding a maximum flow in a network.
- Finding maximum flow in 0-1 network.
- Finding a minimum cost flow. Finding a minimum cost matching in a bipartite graph.
- Linear programming. Feasible solution. Primal and dual problem.

#### Part 2: Approximation algorithms

- Approximation algorithm for set cover problem.
- Travelling salesman problem.
- Knapsack problem.
- Linear programming in approximation algorithms.
- Linear programming approach to set cover problem.
- Primal-dual approach.