Алгоритм масштабирования потока — различия между версиями
(→Оценка сложности) |
|||
| Строка 13: | Строка 13: | ||
<tex> c(u, v) = \sum\limits_{i = 0}^n a_i(u, v) \times 2^n, a_i(u, v) \in \{0, 1\} </tex> | <tex> c(u, v) = \sum\limits_{i = 0}^n a_i(u, v) \times 2^n, a_i(u, v) \in \{0, 1\} </tex> | ||
| − | Методом Форда-Фалкерсона находим поток <tex> f_0 </tex> для графа <tex> G_0 </tex> с урезанными пропускными способностями <tex> c_0(u, v) = a_n(u, v) </tex>. | + | Методом [[Алгоритм_Форда-Фалкерсона,_реализация_с_помощью_поиска_в_глубину|Форда-Фалкерсона]] находим поток <tex> f_0 </tex> для графа <tex> G_0 </tex> с урезанными пропускными способностями <tex> c_0(u, v) = a_n(u, v) </tex>. |
Добавим следующий бит и находим следующее приближение для графа <tex> G_1 </tex> с новыми пропускными способностями <tex> c_1(u, v) = 2 a_n(u, v) + a_{n - 1}(u, v) - 2 f_0(u, v) </tex>. | Добавим следующий бит и находим следующее приближение для графа <tex> G_1 </tex> с новыми пропускными способностями <tex> c_1(u, v) = 2 a_n(u, v) + a_{n - 1}(u, v) - 2 f_0(u, v) </tex>. | ||
Версия 07:23, 19 декабря 2011
| Определение: |
| Алгоритм масштабирования потока — алгоритм поиска максимального потока путём регулирования пропускной способности рёбер. Этот алгоритм работает в предположении, что все пропускные способности рёбер целые, так как они легко представимы в двоичном виде. |
Содержание
Идея
Идея алгоритма в нахождении путей с высокой пропускной способностью в первую очередь, чтобы сразу сильно увеличивать поток по ним, а затем по всем остальным.
Пусть дан граф с целыми пропускными способностями: . — максимальная пропускная способность. Запишем пропускную способность каждого ребра в двоичном виде. Тогда каждое число будет занимать бит.
Методом Форда-Фалкерсона находим поток для графа с урезанными пропускными способностями . Добавим следующий бит и находим следующее приближение для графа с новыми пропускными способностями .
После итерации получим ответ к задаче.
Оценка сложности
| Утверждение: | ||||||||||||
Сложность алгоритма — . | ||||||||||||
|
Докажем, что сложность каждой итерации — .
| ||||||||||||
Псевдокод
Capacity-Scaling
while
do while в существует путь с пропускной способностью большей
do путь с пропускной способностью большей
увеличить поток по рёбрам на
обновить