Алгоритм масштабирования потока — различия между версиями
(→Идея) |
(→Оценка времени работы) |
||
Строка 36: | Строка 36: | ||
|proof= | |proof= | ||
[[Файл:Scaling.jpg|250px|thumb|right|Разрез <tex> \langle A, \overline{A} \rangle </tex>.]] | [[Файл:Scaling.jpg|250px|thumb|right|Разрез <tex> \langle A, \overline{A} \rangle </tex>.]] | ||
− | Граф <tex> G_{f_0} </tex> — [[Отношение_связности,_компоненты_связности#.D0.A1.D0.BB.D1.83.D1.87.D0.B0.D0.B9_.D0.BE.D1.80.D0.B8.D0.B5.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B3.D1.80.D0.B0.D1.84.D0.B0|несвязен]]. | + | Пусть вершина <tex> s </tex> — источник графа, вершина <tex> t </tex> — сток. |
+ | Граф <tex> G_{f_0} </tex> — [[Отношение_связности,_компоненты_связности#.D0.A1.D0.BB.D1.83.D1.87.D0.B0.D0.B9_.D0.BE.D1.80.D0.B8.D0.B5.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B3.D1.80.D0.B0.D1.84.D0.B0|несвязен]]. Обозначим за <tex> A </tex> компоненту связности графа, содержащую вершину <tex> s </tex>. Тогда <tex> t \notin A </tex>. Тогда <tex> c_{0_{f_0}}(A, \overline{A}) = 0 </tex>. | ||
Значит, в графе с пропускными способностями <tex> c_1 </tex>: | Значит, в графе с пропускными способностями <tex> c_1 </tex>: |
Версия 00:47, 26 декабря 2011
Определение: |
Алгоритм масштабирования потока — алгоритм поиска максимального потока, работающий в предположении, что все пропускные способности рёбер целые, так как они легко представимы в двоичном виде. |
Алгоритм
Пусть дан граф , все ребра которого имеют целочисленную пропускную способность. Обозначим за максимальную пропускную способность: .
Если записать пропускную способность любого ребра в двоичном виде, то длина полученной битовой последовательности не будет превышать
бит, а значение пропускной способности определяется формулой: .Идея алгоритма заключается в нахождении путей с высокой пропускной способностью в первую очередь, чтобы сразу сильно увеличивать поток по ним, а затем по всем остальным.
Методом Форда-Фалкерсона находим поток для графа с урезанными пропускными способностями . Добавим следующий бит и находим следующее приближение для графа с новыми пропускными способностями .
После
итерации получим ответ к задаче.Оценка времени работы
Утверждение: | ||||||||||||
Время работы алгоритма — . | ||||||||||||
Докажем, что время работы каждой итерации — .
| ||||||||||||