Course pages 2016–17

# Advanced Algorithms

## Lecture handout

Distributed during the first lecture. An electronic copy of the handout can be found here.

## Lectures

### I. Sorting Networks, Counting Networks (Slides PDF)

- 28/04/2017: Lecture 1 (Course Intro, Sorting Networks), References: CLRS (2nd edition), Chapter 27 PDF
- 01/05/2017: Lecture 2 (Sorting Networks continued, Glimpse at the AKS Sorting Network, Counting Networks), References: see additional references below
- Slide 23: "compares inputs i and n-i" should be replaced by "compares inputs i and n-i+1" (thanks to Dimitrios Los for pointing this out)

### II. Matrix Multiplication (Slides PDF)

- 03/05/2017: Lecture 3 (Matrix Multiplication, Dynamic Multithreading, Parallel Matrix Multiplication) References: CLRS (3rd edition), Chapter 4 and 28 (Serial and Parallel Matrix Multiplication), Chapter 27 (Multithreading)
- Slides 25-26 were skipped and are not examinable.

### III. Linear Progamming (Slides PDF)

- 05/05/2017: Lecture 4 (Linear Programming (Conversion into Standard and Slack Form, Geometry and Structure of Optimal Solutions)), References: CLRS (3rd edition), Chapter 29
- The proof on slide 21.1/21.2 is not examinable, since only a sketch was presented in the lecture. However, for the sake of completeness, a more detailed version of the proof can be found here PDF.
- 08/05/2017: Lecture 5 (Linear Programming (Formulating Problems as Linear Programs, Simplex Algorithm)), References: CLRS (3rd edition) Chapter 29
- 10/05/2017: Lecture 6 (Linear Programming (Simplex Algorithm, Finding an Initial Solution)), References: CLRS (3rd edition), Chapter 29
- Slide 37, line 2 of code: "new vector of length $n$" should be replaced by "new vector of length $m$" (thanks to a student for pointing this out)
- Slide 47, the objective function "2*x_1+2*x_2" should be replaced by "2*x_1+x_2" (thanks to Devan Kuleindiren for pointing this out)
- Slide 49: "Initialize-Simplex calls Simplex" should be replaced by "Initialize-Simplex followed by Simplex"

### IV. Approximation Algorithms: Covering Problems PDF

- 12/05/2017: Lecture 7 (Covering Problems (Vertex Cover, Set Cover)), References: CLRS (3rd edition), Chapter 35.1
- Slide 19: "\sum_{i=1}^k \frac{1}{k}" should be replaced by "\sum_{i=1}^k \frac{1}{i}"(thanks to a student for pointing this out)

### V. Approximation Algorithms via Exact Algorithms PDF

- 15/05/2017: Lecture 8 (Approximation Algorithms via Exact Algorithms (Subset-Sum, Machine Scheduling)), References: CLRS (3rd edition), Chapter 35.3, Chapter 35.5
- Slides 21-22 dealing with the PTAS for Parallel Machine Scheduling were skipped and are not examinable.

### VI. Approximation Algorithms: Travelling Salesman Problem PDF

- 17/05/2017: Demonstration: Solving TSP exactly via Linear Programming, Slides PDF, Solving Progress PDF (Remark: These slides are from previous year and show a slightly different progress.)
- Any material presented on 17/05/2017 is not examinable.
- 19/05/2017: Lecture 10 (Travelling Salesman Problem (General TSP, Metric TSP), References: CLRS (3rd edition), Chapter 35.2

### VII. Approximation Algorithms: Randomisation and Rounding PDF

- 22/05/2016: Lecture 11 (Randomised Approximation Algorithms, MAX3-CNF, Vertex Cover), References: CLRS (3rd edition), Chapter 35.3
- 24/06/2016: Lecture 12 (Randomised Approximation Algorithms cntd., Set Cover), References: CLRS (3rd edition), Chapter 35.3

### VIII. Approximation Algorithms: MAX-CUT Problem (Outlook) PDF

- All slides on MAX-CUT are not examinable.

## Exercises

## Recommended Reading

- [CLRS] Cormen, T.H., Leiserson, C.D., Rivest, R.L. & Stein, C. (2009).
*Introduction to Algorithms. MIT Press (3rd ed.)*

## Additional References

### Sorting and Counting Networks

- Miklos Ajtai, Janos Komlos, Endre Szemeredi.
*Sorting in c log n parallel steps*, Combinatorica 3(1):1-19, 1983. - James Aspnes, Maurice Herlihy, Nir Shavit.
*Counting Networks*, Journal of the ACM 41(5):1020-1048, 1994. - Costas Busch, Maurice Herlihy.
*A Survey on Counting Networks*, Proceedings of the 1st Workshop on Distributed Data and Structures, pages 13-20, 1998. - Vasek Chvatal.
*Lecture Notes on the AKS Sorting Network*, PDF - Shlomo Hoory, Nathan Linial, Avi Wigderson.
*Expander Graphs and their Applications*, Bulletin of the American Mathematical Society, 43(4):439-561, 2006.

### Simplex Algorithm

- Robert G. Bland.
*New finite pivoting rules for the simplex method*, Mathematics of Operations Research 2, (2):103-107, 1977. - Daniel A. Spielman and Shang-Hua Teng.
*Smoothed Analysis: Why The Simplex Algorithm Usually Takes Polynomial Time*, Journal of the ACM, 51(3):385-463, 2004.

### Approximation Algorithms

- Vasek Chvatal, William J. Cook, George B. Dantzig, Delbert Ray Fulkerson, and Selmer M. Johnson.
*Solution of a Large-Scale Traveling-Salesman Problem*, 50 Years of Integer Programming 1958-2008 - From the Early Years to the State-of-the-Art, pages 7-28, 2010. - G.B. Dantzig, D.R. Fulkerson, and S.M. Johnson,
*Solution of a Large-Scale Traveling-Salesman Problem*, Operation Research 2:393-410, 1954. - David P. Williamson and David B. Shmoys.
*The Design of Approximation Algorithms*, Cambridge University Press, 2011. (electronic version available here)