- To learn some advanced topics in the design and analysis of efficient sequential algorithms, and a few key results related to the study of their complexity.
* Advanced Topics in Algorithms (6 weeks) Algorithmic paradigms with applications: greedy algorithms with applications to scheduling and dynamic programming with applications to matrix-chain multiplication and the longest-common subsequence problem. Pattern-matching algorithms including the Knuth-Morris-Pratt algorithm. String algorithms. Text compression including Huffman coding and Lempel-Ziv Welch compression.
* NP-Completeness (1 week) NP-completeness including a detailed look at polynomial-time reductions, showing that several problems are NP-complete: 3-Conjuctive Normal Form Satisfiability, Clique, Vertex Cover, and Subset Sum.
* Approximation Algorithms and Complexity (2 weeks) Optimisation problems. The complexity class NPO. Methods for designing efficient approximation algorithms, and for showing that some problems do not have efficient approximation algorithms (assuming P is not NP). The design of absolute approximation algorithms. The study of some problems (for example, planar graph colouring and edge colouring) for which there are absolute approximation algorithms. Showing that Maximum Clique does not have an absolute approximation algorithm. Constant-factor approximation algorithms.
* Sequential vs. parallel algorithms (1 week) Introduction to parallel algorithmics and its relations to sequential computations.The complexity classes NC and P. How to compute things faster in parallel and solve larger problems without resorting to larger computers; what kind of parallel speedup is required and whether a problem is amenable at all to a parallel attack.
* Selected Further Topics: Selected topics may vary from year to year, drawn from (for example):
Algorithms for finding maximum matchings in bipartite graphs. Algorithms for finding maximum matchings in general graphs,the proof of the Cook-Levin Theorem, Randomised Algorithms, advanced topics in complexity theory, number-theoretic algorithms and computational geometry. The complexity class APX. The study of several problems (Multiprocessor Scheduling, Minimum Vertex Cover and Maximum Satisfiability) in APX. How to show that a problem is not in APX,assuming P is not NP. The complexity class PTAS. The design of a PTAS for MultiProcessor Scheduling and Knapsack. How to show that a problem does not have a PTAS, assuming P is not NP.Hardness of approximation for Maximum Clique.
* G. Ausiello, P. Crescenzi, G. Gambosi, V. Kann, A. Marchetti-Spaccamela, M. Protasi, Complexity and Approximation</b> Springer 2003.
* T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduction to Algorithms, Second Edition. MIT Press (2001).
* Lovasz and Plummer, Matching Theory, North-Holland (1986).
At the conclusion of the module students should:
- Have an understanding of the role of algorithmics within Computer Science.
- Have expanded their knowledge of computational complexity theory.
- Be aware of current research-level concerns in the field of algorithm design.