Алгоритм масштабирования потока — различия между версиями
Строка 3: | Строка 3: | ||
== Суть == | == Суть == | ||
− | Этот алгоритм работает в предположении, что все пропускные способности целые. Пусть <tex>U</tex> - максимальная пропускная способность. Тогда запишем пропускную способность каждого ребра в двоичной записи (для каждого ребра отведем <tex>n+1 | + | Этот алгоритм работает в предположении, что все пропускные способности ребер целые. Пусть <tex>U</tex> - максимальная пропускная способность. Тогда запишем пропускную способность каждого ребра в двоичной записи (для каждого ребра отведем <tex>n+1=\lfloor\log U\rfloor+1</tex>). Занумеруем биты с младшего (0-ой) по старший (n-ный). Тогда |
− | <tex>\forall (u,v)\in E:c(u,v)=2^ | + | <tex>\forall (u,v)\in E:c(u,v)=2^n*a_n(u,v)+...+2*a_1(u,v)+a_0(u,v); a_i(u,v)\in\{0,1\}</tex> |
− | Будем решать задачу методом Форда-Фалкерсона сначала для графа с урезанными пропускными способностями <tex>c_0(u,v):=a_n(u,v)</tex>. Решив ее и получив поток <tex>f_0</tex>, добавим следующий бит и вычтем грубое приближение. То есть <tex>\forall (u,v)\in E:c_1(u,v):= | + | Будем решать задачу методом Форда-Фалкерсона сначала для графа с урезанными пропускными способностями <tex>c_0(u,v):=a_n(u,v)</tex>. Решив ее и получив поток <tex>f_0</tex>, добавим следующий бит и вычтем грубое приближение. То есть <tex>\forall (u,v)\in E:c_1(u,v):=2*a_n(u,v)+a_{n-1}(u,v)-2*f_0(u,v)</tex>. Далее наше приближение становится точнее и точнее, пока не станет решением для исходной задачи. |
== Оценка сложности == | == Оценка сложности == |
Версия 07:11, 30 декабря 2010
Алгоритм масштабирования потока - алгоритм поиска максимального потока путем регулирования пропускной способности ребер.
Суть
Этот алгоритм работает в предположении, что все пропускные способности ребер целые. Пусть
- максимальная пропускная способность. Тогда запишем пропускную способность каждого ребра в двоичной записи (для каждого ребра отведем ). Занумеруем биты с младшего (0-ой) по старший (n-ный). Тогда
Будем решать задачу методом Форда-Фалкерсона сначала для графа с урезанными пропускными способностями
. Решив ее и получив поток , добавим следующий бит и вычтем грубое приближение. То есть . Далее наше приближение становится точнее и точнее, пока не станет решением для исходной задачи.Оценка сложности
Сложность этого алгоритма
, где - количество итераций. Докажем, что сложность каждой итерации .На первой итерации мы имеем только ребра веса 1. Это значит, что
. Значит количество итераций (дополняющих путей) не превосходит , поиск доп. пути занимает . Получаем сложность .Теперь рассмотрим переход ко второй итерации. Граф
несвязен. Рассмотрим разрез , где и - компоненты связности. . Значит в новом графе с пропускными способностями : . Так как - разрез, то . Здесь - максимальный поток в с пропускными способностями , а . Так как пропускная способность каждого дополняющего пути не меньше 1, мы получили оценку на количество итераций. Дополняющий путь же мы можем найти за .