Advanced Algorithmic Techniques (COMP523)

First Semester, Masters Module
Department of Computer Science, University of Liverpool

Lecturer: Aris Filos-Ratsikas
Tutorials: Michail Theofilatos
Weekly Hours: 3h lectures + 1h tutorial (over 10 weeks).

Assessment: 75% Exam, 25% Continuous Assessment.
Continous Assessment: 2 Coursework Assignments, 12.5% each.

Announcements

Schedule

Class Type Day Time Room
Lecture Wednesday 9:00-10:00 126MP-110
Thursday 10:00-11:00 ELEC-201[E1]
Thursday 12:00-13:00 SHER SR-1
Tutorial Friday 14:00-15:00 MATH-103

Office hours: Thursday 11.15-12.15, or by e-mail appointment.
Location: Room 314, Ashton Building

Description of the module

This module introduces students to fundamental algorithmic primitives, as well as a range of algorithmic techniques. Specific topics include:

At the end of the module, the students are expected to be able to describe the design the principles related to algorithms in the aforementioned classes and to formally analyse and prove their time complexity and memory requirements. The students are expected to be able to identify which principles are appropriate for a wide range of problems and apply those principles to design algorithms for those problems.

For more information, see the official module specification here.

Module textbooks:

Algorithm Design by Jon Kleinberg and Eva Tardos. Pearson International Edition, 2006.

Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. Third Edition, MIT Press, 2009.

Complementary reading:

Algorithm Design: Foundations, Analysis and Internet Examples by Michael T. Goodrich and Roberto Tamassia, John Wiley & Sons, Inc., 2002.

Distributed Computing: Fundamentals, Simulations and Advanced Topics by Hagit Attiya and Jennifer Welch, Second Edition, John Wiley & Sons, Inc., 2004.

Lectures

This section will be updated and populated as the semester progresses.

Lecture 1: Introduction to algorithms and basic complexity notions.
– Examples of algorithms.
– Examples of basic algorithmic techniques.
– Running time and memory use.
– Asymptotic notation and asymptotic complexity.

Lecture 2: Recursion and Divide and Conquer techniques.
– Asymptotic notation and asymptotic complexity.
– Binary Search.
– Majority.

Lecture 3: Recursion and Divide and Conquer techniques #2.
– Sorting in O(nlogn)O(n \log n) time with Mergesort.
– Quicksort.
– Lower bound for comparison-based sorting.

-Lecture 4: Recursion and Divide and Conquer techniques #3.
– Finding the closest pair of points.
– Integer multiplication.

-Lecture 5: Recursion and Divide and Conquer techniques #4.
– The Selection Problem.

-Lecture 6: Graph Algorithms.
– Basic Graph Definitions.
– Depth First Search.
– Breadth First Search.

-Lecture 7: Graph Algorithms #2.
– Testing for bipartiteness.
– Testing for strong connectivity.
– Finding strongly connected components.

-Lecture 8: Graph Algorithms #3.
– Directed Acyclic Graphs (DAGs).
– Topological Ordering.
– Finding strongly connected components (cont.).

-Lecture 9: Greedy Algorithms.
– Interval Scheduling.

-Lecture 10: Greedy Algorithms #2.
– Minimum Spanning Tree.
– Kruskal’s Algorithm.
– Prim’s Algorithm.

-Lecture 11: Greedy Algorithms #3.
– Prim’s Algorithm (continued).
– Clustering of maximum spacing.

-Lecture 12: Dynamic Programming.
– Weighted Interval Scheduling.

-Lecture 13: Dynamic Programming #2.
– Subset Sum.
– Knapsack.

-Lecture 14: Network Flows.
– Network Flow Definitions.
– Maximum Flow.
– The Ford-Fulkerson algorithm.
– Max-Flow - Min-Cut.

-Lecture 15: Network Flows #2.
– The Max-Flow-Min-Cut theorem.
– Integer-valued flows and better augmenting paths.

-Lecture 16: Network Flows #3.
– Modelling Max-Flow problems.
– Maximum Bipartite Matching.
– Baseball Elimination.
– Open Pit Mining.

-Lecture 17: NP-completeness
– Polynomial-time reductions.
– The classes P and NP.
– NP-hardness and NP-completeness.
– 3SAT.
– Vertex Cover.

-Lecture 18: NP-completeness #2
– Decision vs Optimisation.
– Subset Sum and Knapsack.
– A catalogue of NP-complete problems.
– A taxonomy of NP-complete problems.

-Lecture 19: Linear Programming
– Linear Programs.
– Integer Linear Programs.
– Duality.
– Max-Flow and Min-Cut as linear programs.
– Total Unimodularity.

-Lecture 20: Approximation Algorithms
– Approximaton Algorithm Techniques.
– The Greedy Method.
– Load Balancing on Identical Machines.
– Approximation Ratio.

-Lecture 21: Approximation Algorithms #2
– The Pricing Method.
– Approximation Algorithm for Vertex Cover.
– Connection to LP-duality.

-Lecture: Solutions and Discussion of Assignment 1
Assignment 1.
Assignment 1 solutions.

-Lecture 22: Approximation Algorithms #3
– Linear Programming Relaxation and Rounding.
– ILP rounding algorithm for Vertex Cover.
– Inapproximability of Vertex Cover.
– Vertex Cover on Bipartite Graphs.

-Lecture 23: Approximation Algorithms #4
– Dynamic Programming on Rounded Inputs.
– An FPTAS for 0/1-Knapsack.
– PTAS vs FTPAS.

-Lecture 24: Randomised Algorithms
– Probabilities background.
– Identifier Selection.
– The Birthday Problem.
– Waiting for the first success.

-Lecture 25: Randomised Algorithms #2
– Randomised cuts in multigraphs.
– Success amplification.

-Lecture 26: Randomised Algorithms #3
– Types of Randomised Algorithms (Monte Carlo vs Las Vegas).
– Randomised Approximation Algorithms.
– MAX-SAT, MAX-3SAT, MAX-CUT.

-Lecture 27: Randomised Algorithms #4
– Derandomisation using the method of conditional expectations.
– MAX-SAT via Randomised Rounding.

-Lecture 28: Online Algorithms
– Online algorithms and competitive ratio.
– Online load balancing.
– Paging.

-Lecture 29: Online Algorithms #2
– LRU and FIFO algorithms for paging.
– Randomised marking algorithms for paging.

-Lecture: Solutions and Discussion of Assignment 2
Assignment 2.
Assignment 2 solutions.

Tutorials

This section will be updated and populated as the semester progresses.

Tutorial 1: Running time, asymptotic complexity, Divide and Conquer.

Tutorial 2: Divide and Conquer, Recursion, Running time

Tutorial 3: Graph Algorithms

Tutorial 4: Greedy Algorithms and Dynamic Programming

Tutorial 5: Network Flows

Tutorial 6: Network Flows and NP-completness

Tutorial 7: Linear Programming and Approximation Algorithms

Tutorial 8: Approximation Algorithms

Tutorial 9: Randomised Algorithms

Tutorial 10: Recap Tutorial