Design of Algorithms - Course Syllabus
Design of Algorithms
Summary
This course is concerned with issues that arise in the
design of algorithms for solving computational problems.
In the first part methods a number
of standard algorithm design paradigms are presented
and example applications of these examined. In the
second part of the course some theoretical issues in algorithm
design are examined: the concepts of computability and computational
tractability are introduced and some examples of computational
problems with no feasible algorithmic solution are presented.
Detailed Syllabus
-
Introduction: Algorithm design paradigms - motivation;
concepts of algorithmic efficiency; run-time analysis of algorithms;
the Landau notation;
-
Divide-and-Conquer: Structure of divide-and-conquer algorithms;
example applications from Binary Search, Integer Multiplication, Nearest Neighbour.
Analysis of divide-and-conquer run-time recurrence relations.
-
Dynamic Programming: Form of dynamic programming algorithms; differences between
dynamic programming and Divide-and-Conquer; example applications from: shortest path in graphs;
ordering of matrix multiplications; longest common subsequence.
-
Greedy Methods: Overall view of greedy paradigm. Example of exact optimisation
solution (Minimum spanning tree) and approximation solution (Integer Knapsack).
-
Graph Searching and traversal: Pervasiveness of graph models in applications and
notion of search; combinatorial search (e.g. Knight's Tour);
graph traversal methods: depth-first and breadth-first search;
-
Foundations of algorithms: Fundamental questions in the design of algorithms:
does an algorithmic solution exist? does an efficient algorithmic solution
exist? Models of algorithmic process and their universality: Church-Turing hypothesis.
-
Introduction to Computability: The existence of problems with no algorithmic
solution; an example and proof that a specific computational problem has no algorithmic
solution.
-
Computational Complexity: Quantification of resources used by algorithms: Time and Space;
Complexity measures and Classes; Polynomial versus Non-Polynomial time complexity; the class
P and motivation for viewing this as the set of tractable computational problems.
-
NP-completeness: Combinatorial search and optimisation problems; informal view of the
case NP as problems with efficient checking algorithms; approaches to tackling the
question of P = NP - informal review of NP-completeness, Cook's Theorem (without proof).
Recommended Texts:
- M.A. Weiss; Data Structures and Algorithm Analysis in ADA; Benjamin Cummings Publishing; 1993
- P.E. Dunne; Computability Theory - concepts and applications; Ellis Horwood; 1991
PED Home Page