Паросочетания в двудольном графе
- Паросочетание. Совершенное паросочетание. Задача о максимальном паросочетании (M).
- Задачи о минимальном контролирующем множестве (C) и максимальном независимом множестве (N). Двойтсвенность. |M| >= |C|.
- Лемма о дополняющем чередующемся пути: если пути нет, паросочетание максимально. Т.к. |M| = |C|.
- Способ получать C и N из M и пометок последнего dfs-а (N = A+ and B-, C = A- and B+).
- Получили алгоритм за O(VE). Улучшим его до Алгоритма Куна, тоже O(VE), но проще в реализации.
Про раскраску графов
- Вершины можно раскрасить в maxDeg+1 цвет
- Теорема Визинга (без. док-ва) ребра можно раскрасить в maxDeg+1 цвет (а нужно как минимум maxDeg, так что оценка почти точна).
- Для двудольного графа: ребра можно раскрасить в maxDeg цвет.
- Лемма Холла (совершенное паросочетание существует тогда и только тогда).
- k-регулярный граф по Лемме Холла имеет совершенное паросочетание. Алгоритм раскраски ребер двудольного графа.
Потоки. Введение.
- 2 неперсекающихся по ребрам пути - поток. k неперсекающихся по ребрам пути - поток.
- Определение потока (f) в общем случае. 0 <= f <= c. Сумма f для каждой вершины = 0. f[e] = -f[e']
- Решение задачи о k неперсекающихся по ребрам пути. Картинка, почему "просто k раз пустить dfs" не работает.
- Непересекающиеся по вершинам пути. Раздвоение вершин.
- Разрез C(A,B) - разрез между множествами. C(s,t) - разрез между вершинами. |C(s,t)| >= |f(s,t)|.
- Теорема и алгоритм Форда-Фалкерсона. Если нет дополняющего пути, |C(s,t)| = |f(s,t)|. Алгоритм ищет и поток, и разрез за O(|f|*E)
- Нахождение паросочетания в двудольном графе с помощью потока за O(VE).
Потоки. Алгоритмы поиска.
- Алгоритм Эдмондса-Карпа за O(VE2) (пускаем bfs)
- Масштабирование за O(E2logMax) (пускаем не менее 2k)
- Диница за O(V2E)
- Not read Диница + масштабирование за O(VElogMax)
- Not read Хопкрофт-Карп
MinCost Потоки.
- Задача: ищем поток размера k минимального веса. Обратное ребро имеет вес (-w).
- Not read Формулировки прикладных задач: Задача о назначениях. Транспортная задача.
- Алгоитм поиска: База = нет отрицательных циклов, переход = добавляем инимальный путь.
- Док-во корректности: рассмотрим разность mincost потока размера (k+1) и mincost потока размера (k).
- Not read Улучшенные алгоритмы поиска пути: Форд-Белман с очередью и Дейкстра.
- Потенциалы и Дейкстра.
- Not read Нахождение паросочетания миимального веса в двудольном графе с помощбю mincost потока за O(V3).
Дополнения
- Not read Задачи на паросочетания
- Not read Задачи на потоки
- Not read Задачи на mincost потоки
- Not read Поиск [L,R] потоков
- Not read Поиск паросочетания в произвольном графе рандомом (Саратовский метод)
- Not read Поиск паросочетания в произвольном графе честно за O(V3) (Сжатие соцветий)