The module is concerned with studying properties of graphs and digraphs from and algorithmic perspective. The focus is on understanding basic properties of graphs that can be used to design efficient algorithms. The problems considered will be typically motivated by algorithmic/computer science/IT applications.
On completion of the module the student shoud be able to:
- understand the basics of graphs, directed graphs, weighted graphs and be able to relate them to practical examples.
- use effectively algorithmic techniques to study basic parameters and properties of graphs.
- design efficient algorithms for various optimisation problems on graphs.
- use effectively techniques from graph theory to approach practical problems in networking and communication.
Typical topics include:
- Introduction to graphs: undirected graphs, directed graphs, weighted graphs, graph representation and special classes of graphs (trees, planar graphs etc.).
- Applications of graphs (in telecommunications, networking etc.).
- Basic algorithmic techniques for graph problems: graph traversals (DFS and BFS), topological sorting, Eular tours.
- Further algorithmic problems on graphs: minimum spanning trees, shortest path problems, matching problems.
- Planar graphs and their properties. Eular's formula, planar separateor theorem and their algorithmic applications.
- Further optimization problems on graphs including graph colouring and graph questions in distributed systems.
- Discussing practical applications of graphs and efficient algorithms for such practical problems. Approximation algorithms and heuristic algorithms. Applications to searching in massive graphs (e.g. page ranking); use of structural properties and algebraic properties.