27
ПОТОКИ В СЕТЯХ ПОТОКИ В СЕТЯХ

ПОТОКИ В СЕТЯХ

  • Upload
    arissa

  • View
    69

  • Download
    1

Embed Size (px)

DESCRIPTION

ПОТОКИ В СЕТЯХ . Определения. Сеть - связный ориентированный граф G = ( V , A ) без петель и мультидуг, с 1 источником s  V и 1 стоком t  V . ( Запретим одновременное  дуг ( i , j ) и ( j , i ) ) - PowerPoint PPT Presentation

Citation preview

Page 1: ПОТОКИ В СЕТЯХ

ПОТОКИ В СЕТЯХ ПОТОКИ В СЕТЯХ

Page 2: ПОТОКИ В СЕТЯХ

ОпределенияОпределения

Сеть - связный ориентированный граф 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, для которых выполнены условия сохранения потока

tjv

tsjsjv

xxAkjk

jkAjii

ij

,,,,0,,

),(:),(:

и ограничения на дуговые потоки0 xij bij, (i, j) A

Page 3: ПОТОКИ В СЕТЯХ

Максимальный потокМаксимальный поток

;max),(: xAjsj

sjxv

tjv

tsjsjv

xxAkjk

jkAjii

ij

,,,,0,,

),(:),(:

0 xij bij, (i, j) A

З. ЛП для ее решения применим аппарат ЛП.Более того, mat ограничений удовлетворяет свойству абсолютной унимодулярности…

Известно неск. полиномиальных алг., трудоемкость кот. O(|V|3).

Page 4: ПОТОКИ В СЕТЯХ

ОпределенияОпределения

Пусть задан доп. поток из s в t. Назовем увеличивающим путем любой путь P из s в t в неориентированном графе, полученном из графа G игнорированием направлений дуг, кот. обладает след. свойствами:1) дуги (i, j) E, проходимой путем P в прямом направлении (и называемой прямой дугой), xij < bij, т. е. прямые дуги пути не ненасыщенны;2) дуги (j, i) E, проходимой путем P в обратном направлении i j (и называемой обратной дугой), xji > 0. st разрезом ),( XX наз. разбиение мн. вершин V на подмн. X и X

Пропускная способность st разреза ),( XX равна

XjXiEji

ijbXXC,:),(

),(

st разрез является узким местом сети: XtXsXXCv ,),,(

Page 5: ПОТОКИ В СЕТЯХ

ОпределенияОпределения

s ti j k

Увеличивающий путь:

ijij bx 0kjx

s t

i jijij bx

k l0lkx

Разрез и его пропускная способность:

Page 6: ПОТОКИ В СЕТЯХ

Теорема ФордаТеорема ФордаФалкерсонаФалкерсона

Наз. st разрез минимальным, если он имеет min проп. спос. среди всех st разрезов.

Теорема (ФордаФалкерсона). В сети величина max st потока = пропускной способности min st разреза. Доказательство. Рассмотрим доп. поток {xij}. Если v = проп. спос. некоторого разреза, то теорема доказана. В прот. сл. величину потока можно по приводимому ниже правилу до тех пор, пока v не станет = проп. спос. нек. разреза. Имея поток {xij}, находим подмн. в. Х по след. правилам:

0. Поместим источник s в мн. X.1. Если i X и xij < bij (дуга (i, j) не насыщена), то в. j X.2. Если i X и xji > 0 ( > 0 поток по (j, i)), то в. j X.

Page 7: ПОТОКИ В СЕТЯХ

Доказательство теоремы ФордаДоказательство теоремы ФордаФалкерсонаФалкерсона

Вершины Х поместим в мн. X

Исп-я пр. 0 – 2 для построения Х, получим 1 из 2-х результатов:

I. Сток .Xt Тогда дуги (i, j) E, i X, Xj

согласно пр. 1 вып. условие xij = bij и, согласно пр. 2, имеет место равенство xji = 0

XjXi

ijXjXi

ij bx,,

0,:),(

XjXiEjijixи

получен поток, величина кот. = ),( XXC

II. Сток .Xt Тогда из опр. мн. Х увеличивающий s-t путь

s,…,i,i+1,…,t, в кот. все прямые дуги (i, i+1) не насыщены, и >0 поток по всем обратным дугам пути xi+1,i > 0.

Page 8: ПОТОКИ В СЕТЯХ

Доказательство теоремы ФордаДоказательство теоремы ФордаФалкерсонаФалкерсона

Пусть 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 поток.

Page 9: ПОТОКИ В СЕТЯХ

РазрезыРазрезы

Следствие. Поток max не увеличивающего пути.В сети может несколько разл. max потоков и min разрезов.

Теорема. Пусть ),( XX ),( YY – min st разрезы. Тогдаи

),( YXYX и ),( YXYX также min st разрезы.

Теорема. Пусть ),( ii XX – min st разрезы, а ),( XX

полученный в доказательстве теоремы ФордаФалкерсона. Тогда – разрез,

i

iXX

В алгоритме вершина может находиться в 1 из 3 состояний: не помечена, помечена, помечена и просмотрена. В начале все в. не помечены.

Page 10: ПОТОКИ В СЕТЯХ

Алгоритм расстановки пометок Форда-ФалкерсонаАлгоритм расстановки пометок Форда-Фалкерсона

Шаг 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 остался непомечен.

Page 11: ПОТОКИ В СЕТЯХ

Алгоритм расстановки пометок Форда-ФалкерсонаАлгоритм расстановки пометок Форда-Фалкерсона

Если 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 в. и сток остался непомеч., то

),( XX – min разрез, и полученный поток max

Page 12: ПОТОКИ В СЕТЯХ

ЗамечанияЗамечания

Замечание. Если bijR, то алг. может не быть конечным или может сходиться не к max потоку. простые модификации алг. :Шаг 1. Удалить из сети все насыщенные дуги и перейти на шаг 2.Шаг 2. Найти увеличивающий путь и послать по нему max возможный поток. Перейти на шаг 1.Если такого пути нет, то перейти на шаг 3.Шаг 3. Восстановить все дуги сети. Найти увеличивающий путь и послать по нему max возможный поток. Перейти на шаг 1. Если увеличивающего пути нет, то алг. завершает работу.

Трудоемкость алг. ФордаФалкерсона зависит от v и является псевдополиномиальной. методы, в которых среди увеличивающих путей находится путь min длины (по количеству входящих в него дуг), имеющие полиномиальную трудоемкость O(|V|3).

Page 13: ПОТОКИ В СЕТЯХ

s t

1

2

1,1 3,0

2,1 2,2

1,1

проп. спос.

поток

ПримерПример

[s+,]

[s+,1]

[2─,1]

[1+,1]

Page 14: ПОТОКИ В СЕТЯХ

s t

1

2

1,1 3,1

2,1 2,1

1,0

проп. спос.

поток

ПримерПример

[s+,]

[s+,1]

[2+,1]

Page 15: ПОТОКИ В СЕТЯХ

s t

1

2

1,1 3,1

2,2 2,2

1,1

проп. спос.

поток

ПримерПример

[s+,]

Page 16: ПОТОКИ В СЕТЯХ

Потоки минимальной стоимостиПотоки минимальной стоимости

;min),( xAji

ijij xcZ

tjv

tsjsjv

xxAkjk

jkAjii

ij

,,,,0,,

),(:),(:

0 xij bij, (i, j) A

Если бы не было ограничений на проп. спос. дуг, то для решения задачи достаточно найти кратчайший (по cij) путь из s в t и пропустить по нему поток величины v.

Приведем 2 алгоритма для случая целочисленных bij

Page 17: ПОТОКИ В СЕТЯХ

Алгоритм БасакераАлгоритм БасакераГоуэнаГоуэна

Шаг 0. Положить все дуговые потоки и v = 0.Шаг 1. Определить модифицированные дуговые стоимости

.0,,,,0,

*

jiji

ijij

ijijij

ij

xcbxbxc

c

Шаг 2. Найти путь из s в t min длины и увеличить на 1 поток по этому пути. Если величина нового потока равна v, то алг. останавливается. В противном сл. перейти на шаг 1.

Page 18: ПОТОКИ В СЕТЯХ

s t1 2

3

4

ПримерПример

v = 21,1 1,2

1,1 1,2

2,22,2

1,1

стоимость

проп. спос.

Шаг 0. Полагаем xij = 0.Шаг 1. Определяем модиф. стоимости

*ij ijc c

Шаг 2. Находим путь из s в t min длины, например, {s, 1, 2, t}.Полагаем xs1 = x12 = x2t =1. Перейдем на Шаг 1.

Page 19: ПОТОКИ В СЕТЯХ

s t1 2

3

4

ПримерПример

v = 21,0 1,0

1,1 1,1

2,0

1,1

Шаг 1. *1sc

1*1 sc

*12c

2*21 c

*2tc

1*2 tc

2,0 поток

проп. спос.

Шаг 2. Находим путь {s, 3, 2, 1, 4, t} min длины 5. Пропустим 1 потока по этому пути:

Page 20: ПОТОКИ В СЕТЯХ

s t1 2

3

4

ПримерПример

v = 2

1,1 1,1

1,1 1,0

2,1

1,1

2,1 поток

проп. спос.

Page 21: ПОТОКИ В СЕТЯХ

Алгоритм КлейнаАлгоритм Клейна

Шаг 0. Найти произвольный доп. st поток величины v. Шаг 1. Определить модифицированные дуговые стоимости

.0,,,,0,

*

jiji

ijij

ijijij

ij

xcbxbxc

c

Шаг 2. Найти цикл <0 стоимости (назовем его отрицательным), где стоимость цикла равна сумме модиф. стоимостей входящих в него дуг. Увеличить поток по <0 циклу на =min{bij – xij, xji}, где min берется по всем прямым (i, j) и обрат. (j, i) дугам цикла, и перейти на шаг 2. Если <0 цикла нет, то найденный поток opt!(Если в сети несколько <0 циклов, то увеличить поток по каж. из них.)

Page 22: ПОТОКИ В СЕТЯХ

Корректность алгоритма КлейнаКорректность алгоритма Клейна

Теорема. Поток величины 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) либо частично совпадают.

Page 23: ПОТОКИ В СЕТЯХ

Доказательство теоремыДоказательство теоремы

Случай a. Рассмотрим цикл из s в t по oi, затем из t в s по пути pi. Это отрицательный цикл (для модифицированных стоимостей). Получили противоречие.

Случай b. Обозн. через f 1-ю в., после кот. пути oi и pi начинают различаться, а через l – 1-ю в., после кот. они совпадают. Стоимость потока по участку пути oi от f в l меньше стоимости по участку пути pi от f в l. найден <0 цикл: из f в l по пути oi, а из l в f по пути pi. Это противоречие доказывает теорему.

s t

oi

pi

f lpi

oi

s t

Page 24: ПОТОКИ В СЕТЯХ

Нахождение отрицательных цикловНахождение отрицательных циклов

Для нахождения <0 циклов можно воспользоваться след. проц. ФлойдаУоршелла. Пусть dij – веса дуг (i, j)E. Рассмотрим след. тернарную (3-местную) операцию, определенную для нек. фикс. в. j: dik=min{dik, dij+djk}, i,k j (*)Если выполнить операцию (*) в. j, то в случае 0 весов получ. в результате зн. dik = длинам кратчайших путей из i в k пар вер.

Положим dii=+ и применим (*) j, i и k. Если в. i : dii < 0 она <0 циклу. Сам <0 цикл восстанавливается переходя из в. i в смежную в. j, у кот. djj < 0. Из в. j переходим в новую в. k с dkk < 0… пока не вернемся в в. i. T=O(n3).

i k

j

Page 25: ПОТОКИ В СЕТЯХ

ПримерПример

проп. спос.стоимость

Page 26: ПОТОКИ В СЕТЯХ

ПримерПример

v = 85

Page 27: ПОТОКИ В СЕТЯХ

ПримерПример

i\j s 1 2 4 6s 3 1 -3 2 2 -6 -2 1 4 -2 -1 96 -9

i\j 3 5 7 8 9 t3

5 -1 5

7 -5 -2 48 -3 3

9 -1 3

t -4 -3