Randomized algorithms
Algorithms that use randomness are often faster, easier to implement and easier to understand than deterministic algorithms, and in some cases, the only efficient algorithm we know for solving a problem is a randomized one. Understanding the role that randomness plays in computation is one of the great scientific questions of our time. This course will survey various algorithmic techniques, covering different aspects of the use of randomness in computation.
Possible topics include (but are not limited to): random sampling, random walks, randomized data structures, random graph models, minimum spanning trees and cuts in graphs, randomized verification, predicting the future with the help of experts, geometric algorithms, randomized incremental construction, load balancing, pattern matching, the probabilistic method, Chernoff bounds, primality testing, isolation, ski-rental and paging, approximation and LP-rounding.
(The course will be given in English.)
Useful links: [organization notes] [list of topics] [materials] [old list of topics ('19)]
Literature
[MR] R. Motwani, P. Raghavan. Randomized Algorithms. Cambridge University Press, 1995
[MU] M. Mitzenmacher, E. Upfal. Probability and Computing: Randomized Algorithms and Probabilistic Analysis. Cambridge University Press; 2nd edition, 2017
[CLRS] Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 4th Ed. MIT Press 2022
[KT] J. Kleinberg, E. Tardos. Algorithm Design, Addison-Wesley 2005
[AS] N. Alon, J. Spencer. The Probabilistic Method. Fourth Edition. Wiley, 2016
Recommended background
ALP3 and advanced algorithms or comparable. All interested Master or advanced Bachelor students are welcome.