Алгоритм масштабирования потока
Алгоритм масштабирования потока - алгоритм поиска максимального потока путем регулирования пропускной способности ребер.
Суть
Этот алгоритм работает в предположении, что все пропускные способности ребер целые. Пусть есть граф алгоритму Эдмондса - Карпа, поэтому алгоритм масштабирования корректен.
, . Суть алгоритма в нахождении сначала путей с высокой пропускной способностью, чтобы сразу сильно увеличивать поток. Пусть - максимальная пропускная способность. Введем параметр . Это большое число, к примеру, равное . На каждом шаге будем искать в остаточном графе увеличивающие пути с пропускной способностью не меньше и увеличивать поток вдоль этих путей. В конце шага будем уменьшать в два раза, и на следующем шаге будем искать увеличивающий путь с новым . При алгоритм масштабирования идентиченОценка сложности
На каждом шаге алгоритм выполняет BFS. Количество шагов . Итоговая сложность .
увеличений потока в худшем случае (т.к. минимальный разрез на каждом шаге меньше, чем ). Дополняющий путь можно найти за используяПсевдокод
Capacity-Scalingwhile while в существует путь с пропускной способностью большей путь с пропускной способностью большей увеличить поток по ребрам на обновить return f