12 января 2019. Графы
Алгоритмы Прима, Крускала, Борувки и их применения.
Продвинутые применения СНМ.
19 января 2019. Геометрия
Выпуклая оболочка, 2 алгоритмы построения (за \(O(n \log n)\) и за \(O(n \cdot ans)\)
Проверка на принадлежность точки прямоугольнику с помощью пускания прямой, подсчёта площади и подсчёта углов за \(O(n)\), а так же для выпуклого многоугольника за \(O(n \log n)\)
Выпуклый многоугольник: Построение касательной, пересечение с прямой, за \(O(\log n)\)
Нахождение 2 самых дальних точек за \(O(n \log n)\), нахождение 2 ближайших точек за \(O(n \log n)\)
Вероятностные алгоритмы: Монте-Карло, построение мин. покрывающей окружности за \(O(n)\)
2 февраля 2019. Кучи деревьев
Биномиальная куча
Splay-дерево
9 февраля 2019. Теория вероятностей и линейная алгебра
Вероятность, математическое ожидание, линейность математического ожидания
Вероятностные алгоритмы: случайная перестановка за \(O(n)\), \(k\)-я порядковая статистика за \(O(n)\), сортировка случайно сгенерированного массива за \(O(n)\)
Алгоритмы с маленькой вероятностью ошибки: нахождение отрезке массива числа, которое встречается хотя-бы половину от длины отрезка раз, проверка что произведение чисел в 2 массивах равно без длинной арифметики за \(O(n)\).
Алгоритм Гаусса
Матрица, возведение матрицы в степень, нахождение \(n\)-го числа, заданного рекурентой за \(O(\log n)\), нахождение числа путей длины \(k\) между каждой парой вершин графа за \(O(n^3 \log k)\)
16 февраля — 2 марта 2019. Потоки
Определение сети, потока, величины потока, пропускной способности ребра, разреза, величины разреза, остаточной сети, увеличивающего пути
Основные свойства потока: величина разреза равна величине потока, связь величины потка и существования увеличивающего пути, Теорема Форда-Фалкирсона (максимальный разрез равен минимальному потоку)
Алгоритм Форда-Фалкирсона, алгоритм Эдмондса-Карпа, их асимптотики, масштабирование потока, изменение асимптотик этих алгоритмов при добавлении масштабирования
Алгоритм Диница, его асимптотика
Алгоритм проталкивания предпотока*
Доказательство корректности поиска потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости
Алгоритмы поиска потока минимальной стоимости с помощью Форда-Беллмана, ускорение его при помощи очереди, использование потенциалов Джонсона при поиске потока минимальной стоимости
Венгерский алгоритм
9 марта 2019. Симплекс
Симплекс метод*
16 марта 2019. Сложные графы
Поиск паросочетания в произвольном графе
Алгоритм 2 китайцев поиска минимального остовного дерева в ориентированном графе
Построение дерева доминаторов
23 марта 2019. Неточные решения NP-полных задач
Алгоритм отжига, генетический алгоритм
20 апреля 2019. Матроиды
Определение матроида, 3 аксиомы, примеры матроида, база матроида, 2 варианта эквивалентной замены 3-й аксиомы
Алгоритм нахождения минимальной базы матроида
27 апреля 2019. Алгоритмы во внешней памяти
Общие представления, время работы простейших алгоритмов: разворота массива, merge 2 массивов, сортировки массива, задачи Join.
Задача list-ranking, решение за \(O\left(\frac{N}{B} \log_{\frac{M}{B}} \frac{N}{B} \log n\right)\) и \(O\left(\frac{N}{B} \log_{\frac{M}{B}} \frac{N}{B}\right)\)
Алгоритм списка с возможностью перехода к \(k\)-му следующему элементу за \(O\left(\frac{k}{B}\right)\), алгоритм \(B\)-дерева.
Heap во внешней памятью со всеми операциями за \(O\left(\frac{1}{B}\log_{\frac{M}{B}}\frac{N}{B}\right)\)*
BFS во внешней памяти за \(O\left(Sort(E) + \frac{Scan(E)}{\sqrt{\frac{E}{VB}}} + V \cdot\sqrt{\frac{E}{VB}}\right) = O\left(Sort(E) + \sqrt{\frac{VE}{B}}\right)\)*
11 мая 2019. Link-cut
Алгоритм Link-cut, доказательство асимптотики \(O(n \log^2 n)\).