COMP36111: Advanced Algorithms 1 (2012-2013)
This unit provides an advanced course in algorithms, assuming the student already knows algorithms for common computational tasks, and can reason about the correctness of algorithms and understand the basics of computing the complexity of algorithms and comparing algorithmic performance.
The course focuses on the range of algorithms available for computational tasks, considering the fundamental division of tractable tasks, with linear or polynomial-time algorithms, and tasks that appear to be intractable, in that the only algorithms available are exponential-time in the worst case.
To examine the range of algorithmic behaviour and this fundamental divide, three topics are covered:
Examining a range of common computational tasks and algorithms available: We shall consider linear and polynomial-time algorithms for string matching tasks and problems that may be interpreted in terms of graphs. For the latter we shall consider the divide between tractable and intractable tasks, showing that it is difficult to determine what range of algorithms is available for any given task.
Complexity measures and complexity classes: How to compute complexity measures of algorithms, and comparing tasks according to their complexity. Complexity classes of computational tasks, reduction techniques. Deterministic and non-deterministic computation. Polynomial-time classes and non-deterministic polynomial-time classes. Completeness and hardness. The fundamental classes P and NP-complete. NP-complete tasks.
Advanced Algorithms (II): In the second semester a follow-up course unit is available. This course will explore classes of algorithms for modelling and analysing complex systems, as arising in nature and engineering. These examples include: flocking algorithms; optimisation algorithms; stability and accuracy in numerical algorithms.
|Programme outcome||Unit learning outcomes||Assessment|
|A2 B1 B2 B3 D6||Be able to develop, and reason about the correctness and performance of, algorithms for string searching and for calculating over graphs.|
|A2 B1 B2 B3 C5 D6||Understand the distinction between linear and polynomial-time tasks, and those with exponential-time algorithms; tractable and intractable tasks.|
|A2 B1 B2 B3 C5 D6||Understand the general notion of complexity classes, P and NP, completeness and hardness, and the relationships between classes by reduction.|
|A2 B1 B2 B3 C5 D6||You will also have seen how to show tasks are NP-complete and know a range of NP-complete problems.|
|A2 B1 B2 B3 C5 D6||You will understand the hierarchy of complexity classes and know some of the key theorems concerning these classes.|
Lecture sessions per topic are estimates.
Part 1: Introduction to algorithmic diversity
Introduction (1 lecture)
Overview, organisation, background, the key ideas of the course and their importance.
String searching: Linear and polynomial-time algorithms (1 lecture)
Introduction to string searching
Preconditioning techniques: Boyer-Moore and Knuth-Morris-Pratt algorithms
Survey of other techniques for string searching
Graphs and graph algorithms: Polynomial-time and exponential-time algorithms (3 lectures)
Review of graphs: basic ideas, terminology and basic concepts including paths,
connectivity and components, graph representation
Traversal techniques for trees and graphs, analysis and use in algorithms
Linear and polynomial-time graph algorithms
Exponential-time graph algorithms: the landscape and examples of tasks and algorithms.
Part 2: Algorithmic complexity and complexity classes (5-6 lectures)
The marriage problem and flow networks
Time and Space Complexity
The Gap Theorem and the complexity hierarchy
Savitch's Theorem and the Immerman-Szelepcsenyi Theorem
Reductions, completeness and hardness
SAT and Cook's Theorem
Proofs of NP-completeness and examples of NP-complete problems
Some problems beyond NP.
The following core text will be useful. Sipser, Michael: Introduction to the theory of computation, PWS Publishing Company, 1997 ISBN: 053494728X
Title: Introduction to the theory of computation (3rd edition)
Author: Sipser, Michael
Publisher: Cengage Learning
Supplementary TextTitle: Fundamentals of algorithmics
Author: Brassard, Gilles and Paul Bratley
Publisher: Pearson Education Limited