Алгоритм масштабирования потока — различия между версиями
(→Оценка времени работы) |
(→Оценка времени работы) |
||
Строка 39: | Строка 39: | ||
Граф <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}) = c_0(A, \overline{A}) - f_0(A, \overline{A}) = 0 </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}) = c_0(A, \overline{A}) - f_0(A, \overline{A}) = 0 </tex>. | ||
− | + | Следовательно, в графе с пропускными способностями <tex> c_1 </tex>: | |
<tex> \forall u \in A, v \in \overline{A} \colon c_1(u, v) \leq 1 </tex>. | <tex> \forall u \in A, v \in \overline{A} \colon c_1(u, v) \leq 1 </tex>. | ||
Версия 03:55, 26 декабря 2011
Определение: |
Алгоритм масштабирования потока — алгоритм поиска максимального потока, работающий в предположении, что все пропускные способности рёбер целые, так как они легко представимы в двоичном виде. |
Алгоритм
Пусть дан граф , все ребра которого имеют целочисленную пропускную способность. Обозначим за максимальную пропускную способность: .
Если записать пропускную способность любого ребра в двоичном виде, то длина полученной битовой последовательности не будет превышать
бит, а значение пропускной способности определяется формулой: .Идея алгоритма заключается в нахождении путей с высокой пропускной способностью в первую очередь, чтобы сразу сильно увеличивать поток по ним, а затем по всем остальным.
Методом Форда-Фалкерсона находим поток для графа с урезанными пропускными способностями . Добавим следующий бит и находим следующее приближение для графа с новыми пропускными способностями .
После
итерации получим ответ к задаче.Оценка времени работы
Утверждение: | ||||||||||||
Время работы алгоритма — . | ||||||||||||
Докажем, что время работы каждой итерации — .
| ||||||||||||