Graph Algorithms

In the winter semester 2026/2027, I teach the course on Graph Algorithms. The lecture covers advanced algorithms for shortest paths, network flows, minimum spanning trees, and some other graph problems. Several graph data structures will be mentioned, too.

The course is scheduled on Mondays from 9:00 in room S3 and taught in English this year.

If you want to consult anything, please write an e-mail to mares@kam.mff.cuni.cz and we will discuss possibilities.

date topics recording
5. 10. Network flows: formulation of the problem, basic theorems (min-cut/max-flow, integrality), Ford-Fulkerson algorithm. Finding bipartite matchings and vertex/edge-disjoint paths using flows. video
12. 10. Network flows: Symmetric formulation (total flow). Dinitz algorithm and its behavior on special networks. video
19. 10. Network flows: Scaling algorithm for integer capacities. Disjoint paths, cuts and separators using flows. Finding cuts probabilistically: random contractions and their analysis. video
26. 10. Finding cuts probabistically: boosting probability, implementation, the Karger-Stein algorithm. Shortest paths: general properties, woes with negative cycles, prefix property and shortest path trees. video
2. 11. Shortest paths: Relaxation scheme. Bellman-Ford-Moore algorithm as a special case of relaxation. Dijkstra's algorithm and the use of data structures. video
9. 11. Plan: Data structures for Dijkstra's algorithm: various kinds of heaps, array of buckets, trees over buckets, multi-level buckets, a sketch of HOT-queues. Dinitz's trick for real edge lengths. Potentials and elimination of negative edges.

Recommended reading

This page is maintained by Martin Mareš