270 likes | 561 Views
ПОТОКИ В СЕТЯХ . Определения. Сеть - связный ориентированный граф G = ( V , A ) без петель и мультидуг, с 1 источником s V и 1 стоком t V . ( Запретим одновременное дуг ( i , j ) и ( j , i ) )
E N D
Определения Сеть - связный ориентированный граф G = (V,A) без петель и мультидуг, с 1 источником sV и 1 стоком tV. (Запретим одновременное дуг (i, j) и (j, i)) дуге графа (i, j) A, приписана пропускная способность bij ≥ 0, целое число, которое задает max доп. величину потока по дуге. Потоком из источника s в сток t (или st потоком) в сети G назовем мн. неотрицательных чисел xij, (i, j)A, для которых выполнены условия сохранения потока и ограничения на дуговые потоки 0 xij bij,(i, j) A
Максимальный поток 0 xij bij,(i, j) A З. ЛП для ее решения применим аппарат ЛП. Более того, mat ограничений удовлетворяет свойству абсолютной унимодулярности… Известно неск. полиномиальных алг., трудоемкость кот. O(|V|3).
Определения Пусть задан доп. поток из s в t. Назовем увеличивающим путем любой путь P из s в t в неориентированном графе, полученном из графа G игнорированием направлений дуг, кот. обладает след. свойствами: 1) дуги (i, j) E, проходимой путем P в прямом направлении (и называемой прямой дугой), xij < bij, т. е. прямые дуги пути не ненасыщенны; 2) дуги (j, i) E, проходимой путем P в обратном направлении ij(и называемой обратной дугой), xji > 0. st разрезом наз. разбиение мн. вершин V на подмн. X и Пропускная способность st разреза равна st разрез является узким местом сети:
Определения Увеличивающий путь: s i j k t Разрез и его пропускная способность: i j s t k l
Теорема ФордаФалкерсона Наз. st разрез минимальным, если он имеет min проп. спос. среди всех st разрезов. Теорема(ФордаФалкерсона). В сети величина maxst потока = пропускной способности minst разреза. Доказательство.Рассмотрим доп. поток {xij}. Если v = проп. спос. некоторого разреза, то теорема доказана. В прот. сл. величину потока можно по приводимому ниже правилу до тех пор, пока v не станет = проп. спос. нек. разреза. Имея поток {xij}, находим подмн. в. Х по след. правилам: 0. Поместим источник s в мн. X. 1. Если i X и xij < bij(дуга (i, j) не насыщена), то в. jX. 2. Если i X и xji > 0(> 0 поток по (j, i)), то в. jX.
Доказательство теоремы ФордаФалкерсона ВершиныХ поместим в мн. Исп-я пр. 0 – 2 для построения Х, получим 1 из 2-х результатов: Тогда дуги (i, j) E, i X, I. Сток согласно пр. 1 вып. условие xij = bij и, согласно пр. 2, имеет место равенство xji = 0 и получен поток, величина кот. = Тогда из опр. мн. Х увеличивающий s-t путь II. Сток s,…,i,i+1,…,t, в кот. все прямые дуги (i, i+1) не насыщены, и >0 поток по всем обратным дугам пути xi+1,i > 0.
Доказательство теоремы ФордаФалкерсона Пусть 1 = min(bi,i+1 – xi,i+1) по всем прямым дугам (i, i+1) пути, 2 = minxi+1,i по всем обратным дугам (i+1, i), = min{1,2} > 0. Проп. спос. bij целые числа. Начнем с целочисленного потока (например, 0). целое > 0 Можно увеличить на потоки по всем прямым дугам пути и уменьшить на потоки по всем обратным дугам пути. величина st потока увеличится на , и новые значения дуговых потоков останутся допустимыми. Используя новый поток, можно построить новое мн. Х. Если t попадет в Х, то можно снова увеличить поток и т. д. Т.к. проп. спос. min разреза ограничена, и на каж. шаге величина потока на 1, то после конечного числа шагов получим ситуацию I и max поток.
Разрезы Следствие.Поток maxне увеличивающего пути. В сети может несколько разл. max потоков и min разрезов. – min st разрезы. Тогда Теорема.Пусть и также min st разрезы. и – min st разрезы, а – разрез, Теорема.Пусть полученный в доказательстве теоремы ФордаФалкерсона. Тогда • В алгоритме вершина может находиться в 1 из 3 состояний: • не помечена, • помечена, • помечена и просмотрена. • В начале все в. не помечены.
Алгоритм расстановки пометок Форда-Фалкерсона Шаг 1.(Расстановка пометок). Метка в. j состоит из 2 частей: 1) либо индекса i+, если можно поток из i в j, либо индекса i, если можно поток из j в i; 2) числа (j), указывающего max величину, на кот. можно s-j поток, не нарушая ограничений на проп. спос. Ист. s приписывается метка [s+, (s)=+]. Теперь в. s помечена, а все остальные в. не помечены. Выберем помеч. но не просм. в. j. Она имеет метку [i+,(j)], или [i,(j)]. Каж. непом. в. k : xjk < bjk, припишем метку [j+,(k)], где (k)=min{(j), bjkxjk}. Такие в. k теперь помечены. Всем непом. в. k : xkj > 0, припишем метки [j,(k)], где (k)=min{(j), xkj}. Такие в. k теперь также помечены. Когда все смежные с j в. помеч., в. j – помеч. и просмотренная. Рассмотрим др. помеч., но не просм. в., пока t не окажется помеч. либо нельзя > пометить ни 1 в. и t остался непомечен.
Алгоритм расстановки пометок Форда-Фалкерсона Если t не помеч., то не увеличивающего s-t пути, и текущий поток max. Если t помеч., то на шаге 2 поток по найденному увеличивающему пути увеличивается. Шаг 2. (Увеличение потока). Пусть t имеет метку [k+,(t)]. Тогда положим xkt=xkt+(t) и перейдем к в. k. Если k имеет метку [j+,(k)], то положим xjk=xjk+(t). Если k имеет метку [j,(k)], то положим xkj=xkj(t). Переходим к в. j. Продолжим движение по увеличивающему пути от стока к источнику, пока не придем в s. В результате величина потока увеличится на (t). Положим все вершины непомеченными и перейдем на шаг 1. Если нельзя пометить более ни 1 в. и сток остался непомеч., то – min разрез, и полученный поток max
Замечания Замечание. Если bijR, то алг. может не быть конечным или может сходиться не к max потоку. простые модификации алг. : Шаг 1. Удалить из сети все насыщенные дуги и перейти на шаг 2. Шаг 2. Найти увеличивающий путь и послать по нему max возможный поток. Перейти на шаг 1. Если такого пути нет, то перейти на шаг 3. Шаг 3. Восстановить все дуги сети. Найти увеличивающий путь и послать по нему max возможный поток. Перейти на шаг 1. Если увеличивающего пути нет, то алг. завершает работу. Трудоемкость алг. ФордаФалкерсона зависит от v и является псевдополиномиальной. методы, в которых среди увеличивающих путей находится путь min длины (по количеству входящих в него дуг), имеющие полиномиальную трудоемкость O(|V|3).
Пример [2─,1] проп. спос. 1 1,1 3,0 поток 1,1 [1+,1] s t [s+,] 2,1 2,2 2 [s+,1]
Пример проп. спос. 1 1,1 3,1 поток [2+,1] 1,0 s t [s+,] 2,1 2,1 2 [s+,1]
Пример проп. спос. 1 1,1 3,1 поток 1,1 s t [s+,] 2,2 2,2 2
Потоки минимальной стоимости 0 xij bij,(i, j) A Если бы не было ограничений на проп. спос. дуг, то для решения задачи достаточно найти кратчайший (по cij) путь из s в t и пропустить по нему поток величины v. Приведем 2 алгоритма для случая целочисленныхbij
Алгоритм БасакераГоуэна Шаг 0. Положить все дуговые потоки и v = 0. Шаг 1. Определить модифицированные дуговые стоимости Шаг 2. Найти путь из s в tmin длины и увеличить на 1 поток по этому пути. Если величина нового потока равна v, то алг. останавливается. В противном сл. перейти на шаг 1.
Пример 3 v =2 1,1 1,2 1,1 s 1 2 t 1,2 1,1 стоимость 2,2 2,2 4 проп. спос. Шаг 0. Полагаем xij = 0. Шаг 1. Определяем модиф. стоимости Шаг 2. Находим путь из s в t min длины, например, {s, 1, 2, t}. Полагаем xs1 = x12 = x2t =1. Перейдем на Шаг 1.
Пример 3 v =2 1,0 1,0 1,1 s 1 2 t 1,1 1,1 поток 2,0 2,0 4 проп. спос. Шаг 1. Шаг 2. Находим путь {s, 3, 2, 1, 4, t} min длины5. Пропустим 1 потока по этому пути:
Пример 3 1,1 1,1 1,1 s 1 2 t 1,0 1,1 поток 2,1 2,1 4 проп. спос. v =2
Алгоритм Клейна Шаг 0. Найти произвольный доп. st поток величины v. Шаг 1. Определить модифицированные дуговые стоимости Шаг 2. Найти цикл <0 стоимости (назовем его отрицательным), где стоимость цикла равна сумме модиф. стоимостей входящих в него дуг. Увеличить поток по <0 циклу на =min{bij – xij, xji}, где min берется по всем прямым (i, j) и обрат. (j, i) дугам цикла, и перейти на шаг 2. Если <0 цикла нет, то найденный поток opt! (Если в сети несколько <0 циклов, то увеличить поток по каж. из них.)
Корректность алгоритма Клейна Теорема.Поток величины v opt в сети с модиф. дуговыми стоимостями не отрицательных циклов. Доказательство. следует из того, что в случае < 0 цикла можно добавить циркуляцию по этому циклу, сохранив величину потока и уменьшив его стоимость, что противоречит opt потока. . Рассмотрим нек. поток, для кот. в сети не < 0 циклов. Предположим, что opt поток имеет < стоимость. Разложим opt поток на v путей, обозначим их oi, i= 1,…,v, по каж. из кот. пропущен 1-ый поток. Аналогично разложим рассматриваемый поток на v путей pi, i= 1,…,v, по каж. из кот. пропущен 1-ый поток. Ввиду того, что opt поток имеет < стоимость, пути oi и pi: стоимость потока по oi< стоимости потока по pi. Тогда эти пути: a) либо не имеют общих дуг, b) либо частично совпадают.
Доказательство теоремы Случай a. Рассмотрим цикл из s в t по oi, затем из t в s по пути pi. Это отрицательный цикл (для модифицированных стоимостей). Получили противоречие. oi s t pi Случай b. Обозн. через f 1-ю в., после кот. пути oi и pi начинают различаться, а через l – 1-ю в., после кот. они совпадают. Стоимость потока по участку пути oi от f в l меньше стоимости по участку пути pi от f в l. найден <0 цикл: из f в l по пути oi, а из l в f по пути pi. Это противоречие доказывает теорему. oi f l t s pi
Нахождение отрицательных циклов Для нахождения <0 циклов можно воспользоваться след. проц. ФлойдаУоршелла. Пусть dij – веса дуг (i,j)E. Рассмотрим след.тернарную (3-местную) операцию, определенную для нек. фикс. в. j: dik=min{dik, dij+djk}, i,k j (*) Если выполнить операцию (*) в.j, то в случае 0 весов получ. в результате зн. dik= длинам кратчайших путей из i в k пар вер. j i k Положим dii=+ и применим (*) j,i иk. Если в.i:dii < 0 она <0 циклу. Сам <0 цикл восстанавливается переходя из в. i в смежную в. j, у кот. djj< 0. Из в. j переходим в новую в. k с dkk< 0… пока не вернемся в в. i. T=O(n3).
Пример стоимость проп. спос.
Пример v = 85