1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10

# конспект · шаг 10 из 10

Конспект: максимальный поток и минимальный разрез

выжимка - её можно унести в заметки

Понятия

Сеть - ориентированный граф с пропускной способностью c(u, v) >= 0 на рёбрах, истоком s и стоком t.

Поток f(u, v) - числа на рёбрах с двумя ограничениями:

ёмкость:      0 <= f(u, v) <= c(u, v)
сохранение:   для каждой вершины, кроме s и t, входящее = исходящему
величина |f|: сколько выходит из истока (столько же входит в сток)

Разрез (S, T) - разбиение вершин, где s в S, а t в T. Его пропускная способность c(S, T) - сумма c(u, v) по рёбрам ИЗ S В T; рёбра назад не считаются.

Остаточная сеть - прямые рёбра с оставшимся запасом c − f плюс ОБРАТНЫЕ рёбра, равные уже пущенному потоку. Дополняющий путь - путь из s в t по остаточной сети.

Разложение потока - любой поток есть сумма ≤ E путей s → t и циклов; циклы - бесполезный круговорот. Нижние границы - аванс l, ёмкость c − l, избытки к новому истоку и стоку, ребро t → s; допустимо ⇔ насыщены все рёбра нового истока.

Масштабирование - только пути с запасом ≥ Δ, Δ пополам: O(E² · log U). Проталкивание предпотока - избытки в вершинах, толкать на ступень вниз по высотам, подъём без выхода; O(V³) с очередью.

Дерево Гомори-Ху - разрез между u и v = наименьший вес на пути в дереве; n − 1 поток; наименьший вес - минимальная ёмкость разреза всей сети, при единичных ёмкостях - рёберная связность.

Что унести

для ЛЮБЫХ потока и разреза:      |f| <= c(S, T)
теорема о максимальном потоке:   max |f| = min c(S, T)
разрез по готовому потоку:       S = достижимые из s в остаточной сети,  O(V + E)

Совпадение величин доказывает сразу обе оптимальности. Несовпадение не доказывает ничего: либо поток не максимален, либо разрез не минимален, и какая сторона - неизвестно.

Форд-Фалкерсон: пока в остаточной сети есть путь s → t, пускать по нему величину узкого места. Весь трюк - в обратном ребре: проход по нему означает «часть потока, шедшая здесь, пойдёт иначе». Без обратных рёбер это жадность, и она занижает ответ уже на четырёх вершинах с единичными ёмкостями.

способ выбора пути цена что даёт
произвольный O(E·|f|) зависит от ЧИСЕЛ на рёбрах
кратчайший, обход в ширину O(V·E²) Эдмондс-Карп, чисел в оценке нет
слоистая сеть + блокирующий поток O(V²·E) Диниц, фаз не больше V
Диниц на единичных ёмкостях O(E·√E), на двудольных O(E·√V) Хопкрофт-Карп

При целых пропускных способностях алгоритм конечен (каждый шаг прибавляет минимум единицу, а величина ограничена сверху - это мера из раздела про корректность), и максимальный поток целый. На вещественных с иррациональными числами Форд-Фалкерсон может не завершиться вовсе.

Тихие ошибки: считать разрез по рёбрам в обе стороны; требовать сохранения в истоке и стоке; искать узкое место как самое тонкое ребро пути, а не разрез целиком; искать дополняющие пути только по исходным рёбрам; в Динице строить слои один раз на весь прогон.

Куда это ведёт

Следующая глава - паросочетания: тот же поток с единичными пропускными способностями, только записанный на языке «кого с кем сопоставить». Там же появятся теоремы Кёнига и Холла, которые объясняют ответ без всякого алгоритма.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.