# BIE-GRA – Graph Algorithms and Complexity Theory

### Annotation

Students get an overview of typical usages of graph models in computing. They learn algorithmic methods of solving graph problems. They understand algorithms for the key application domains of graph theory (flows in networks, heuristic search, approximation of complex problems). Students get basic competence in computer science background: they understand Turing machine models and issues of NP-completeness and NP-hardness.

### Lectures Program

1. Graph models, undirected graphs, isomorphism.
2. Degree, connectedness, digraphs.
3. Strong connectedness, acyclic graphs, graph representation and breadth-first traversal.
4. Depth-first traversal, topologic sort, strong components.
5. Euler graphs, dominating and independent sets, graph coloring, distance.
6. Trees, spanning trees, circuits, minimal spanning trees.
7. Shortest paths, algorithms for $1\to n$ shortest paths.
8. Algorithms for $n\to n$ shortest paths, planarity.
9. Flows in networks, maximum flow algorithm.
10. Cheapest circulation, matchings, assignment problem.
11. Problem state space, heuristic search.
12. Turing machines.
13. Complexity classes, NP-complete problems. Approximation algorithms.

### Labs Program

1. Induction, recursion, recurrence.
2. Trees and their computer representation, tree traversals.
3. Graph properties (isomorphism, connectedness, components, node degrees).
4. Strong connectedness, decomposition into strong components, topological sort.
5. Graph representations and traversals.
6. Eulerian trail, Chinese postman problem, project selection.
7. Independence, dominance, chromatic number, cyclomatic number.
8. Trees, spanning trees and minimal spanning trees.
9. Shortest paths.
10. Shortest paths, planarity, project work (consultation).
11. Flows in networks, circulations, matchings.
12. Heuristic search algorithms.
13. Turing machines.