The University of Southampton
Courses

# MATH2014 Algorithms

## Module Overview

Algorithms are systematic methods for solving mathematical problems, such as sorting numbers in ascending order, finding the cheapest way to ship goods on the road network or finding the shortest path in a graph. They can be regarded as practical applications of mathematical proofs, and also as theoretical models of computational techniques. This module introduces some basic concepts related to algorithms, their implementation and their efficiency, using simple examples drawn from many areas of mathematics including Graph Theory and Operational Research (no previous knowledge of these topics is required, but having taken MATH1058 may help). The main aim of the module is designing algorithms for solving a wide range of problems, studying their computational complexity, and understanding whether a given problem may or may not admit an efficient algorithm for its solution.

### Aims and Objectives

#### Learning Outcomes

##### Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

• Analyse the worst-case running time of an algorithm
• Understand why algorithms for a range of problems including sorting, shortest path, network flow, matchings, produce the correct solution, and apply these algorithms to given instances
• Understand the concept of NP-completeness and its implications
##### Subject Specific Intellectual and Research Skills

Having successfully completed this module you will be able to:

• Derive worst-case performance bounds for some simple algorithms
##### Subject Specific Practical Skills

Having successfully completed this module you will be able to:

• Design an algorithm for certain types of problem

### Syllabus

Basic concepts. Introduction to algorithms. Recap on computational complexity and asymptotic estimates of running times and on sorting algorithms. Divide and conquer algorithms. Examples on sorting, scalar multiplication, and matrix multiplication. Graphs and networks. Basic graph theory definitions. Algorithms for the reachability problem in a graph. Spanning trees. Algorithms for finding a minimum-cost spanning tree in a graph. Shortest paths. Algorithms for finding one or more shortest paths in graph with nonnegative arc or general arc lengths but not negative length circuits. Network flow algorithms. Flows in capacitated networks, algorithms to find a maximum flow in a network and max-flow min-cut theorems. Matchings. Elements of matching theory, including algorithms to find an optimal weighted and unweighted matching in bipartite graphs, the Koenig-Egervary theorem and the relationship with the vertex cover problem. Computational complexity theory. The P and NP classes. Polynomial reductions. NP-completeness and NP-hardness. Elements of exponential-time algorithms. Elements of branch and bound. Elements of dynamic programming

### Learning and Teaching

#### Teaching and learning methods

Lectures, problems class, private study

TypeHours
Independent Study102
Teaching48
Total study time150

There is no required book, although the following book provides some useful background reading.

### Assessment

#### Summative

MethodPercentage contribution
Coursework 40%
Written assessment 60%

#### Referral

MethodPercentage contribution
Written assessment 100%

#### Repeat Information

Repeat type: Internal & External