Потоки. Крутые алгоритмы поиска.
- Диница за O(V2E)
- Диница + масштабирование за O(VElogMax)
- Хопкрофт-Карп за O(EsqrtV)
Потоки. Доказательства.
- Лемма: после bfs-а длины путей только увеличиваются.
- Эдмондс: каждый раз одно ребро насыщается, каждое ребро рассыщается не более V/2 раз
- Масштабирование: на каждой из log фаз есть разрез, через него проходят не более E путей
- Диница: время работы dfs = V + удаление ребер, поэтому фаза за VE
- Диница + масштабирование: сумма всех (dfs = V + удаление ребер) = VE + VE.
MinCost Потоки.
- Потенциалы и Дейкстра.
- Нахождение паросочетания миимального веса в двудольном графе с помощью mincost потока за O(V3).
[L,R] Потоки
- Потоки с избытками и недостатки в вершинах, сток и исток отсутствуют
- Потоки с избытками и недостатки в вершинах, некоторые вершины могут быть стоками и истоками.
- [L,R] потоки.
- Решение за O(MinCostFlow).
- Решение за O(Flow): Ребро [L,R] заменяем на ребро [0,R-L] и избыток и недостаток в концых ребра.
Циркуляции
- Циркуляция мин веса
- [L,R] циркуляция
Разрезы
- (s,t) разрез ищется потоком
- Разрез минимальной стоимости: Summ(w[e]), Summ(w[e]*c[e]) ищутся так же. Т.е. можно для любой f(e) >= 0 минимизировать сумму по разрезу f(e).
- Глобальный разрез. Наивное построение за O(N*Flow)
Про раскраску графов
- Вершины можно раскрасить в maxDeg+1 цвет
- Теорема Визинга (без. док-ва) ребра можно раскрасить в maxDeg+1 цвет (а нужно как минимум maxDeg, так что оценка почти точна).
- 2 приближенных алгоритма раскраски вершин графа в K цветов
Задачи
- [flow] Округление вещественной матрицы округленными числами с сохранением суммы в строках и столбцах