Максимальный поток в сети и его приложения

Содержание

Слайд 2

Поток в сети Определение Дивергенция функции f в вершине v (от

Поток в сети

 

Определение
Дивергенция функции f в вершине v (от лат. divergere

— расхождение)
определяется как разность сумм её значений на выходящих и входящих дугах:

 

источник

сток

Г.М. Адельсон-Вельский, Е.А. Диниц,
А.В. Карзанов. Потоковые алгоритмы. М.,Наука, 1975 г.

Слайд 3

Определение Потоком в сети D называют функцию дивергенция которой на внутренних

Определение
Потоком в сети D называют функцию дивергенция которой на внутренних вершинах

сети равна 0 .
Внутренние вершины сети – это вершины, отличные от источника и стока.

 

 

 

 

0

 

величина потока f

ФПМИ БГУ

Слайд 4

Зададим на дугах сети D для потока f ограничения: верхнее ограничение

Зададим на дугах сети D для потока f ограничения:

 

верхнее ограничение называют
пропускной

способностью дуги

в классической задаче
нижнее ограничение d(e)=0

 

ФПМИ БГУ

Слайд 5

Замечания В дальнейшем мы будем работать с целочисленными потоками, то есть

Замечания
В дальнейшем мы будем работать с целочисленными потоками, то есть все

ограничения – целые числа.
Считаем, что любая внутренняя вершина сети лежит на некотором (s,t)-пути (m ≥ n – 1).
Предполагаем, что в сети нет кратных дуг.

ФПМИ БГУ

Слайд 6

Максимальный поток и минимальный разрез X ФПМИ БГУ c f

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

 

 

X

ФПМИ БГУ

c

f

Слайд 7

Максимальный поток и минимальный разрез Разрез, пропускная способность которого минимальна, называется

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

 

Разрез, пропускная способность которого минимальна, называется минимальным

разрезом.

Утверждение
Для сети G величина любого потока f не превосходит пропускной способности любого разреза R: M(f) ≤ с(R).

2

ФПМИ БГУ

Значит, величина максимального потока не превосходит пропускной способности минимального разреза M(fmax)≤с(Rmin). Поэтому, если для некоторого потока f справедливо, что с(R)=M(f), то это будет означать, что f – максимальный поток.

Слайд 8

Лестер Рэндольф Форд младший англ. Lester Randolph Ford, Jr. 1927 –

Лестер Рэндольф Форд младший
англ. Lester Randolph Ford, Jr.
1927 – 2017
США
Научная сфера -

математик

1955 год (метод Форда-Фалкерсона)

Джек Р. Эдмондс
англ.  Jack Edmonds
1934
США
Научная сфера - комбинаторная оптимизация

1972 год (алгоритм Эдмондса-Карпа)

Ричард Мэннинг Карп
англ. Richard Manning Karp
1935
США
Научная сфера – теория алгоритмов и биоинформатика

Делберт Рей Фалкерсон
англ. Delbert Ray Fulkerson
1924 – 1976
США
Научная сфера - комбинаторика

ФПМИ БГУ

Слайд 9

Лестер Рэндольф Форд младший Метод Форда-Фалкерсона Делберт Рей Фалкерсон ФПМИ БГУ

Лестер Рэндольф Форд младший

Метод Форда-Фалкерсона

Делберт Рей Фалкерсон

ФПМИ БГУ

Слайд 10

Пусть f некоторый поток в сети D, тогда следующие утверждения эквивалентны:

Пусть f некоторый поток в сети D, тогда следующие утверждения эквивалентны:
f

– максимальный поток;
для потока f в сети остаточных пропускных способностей Df нет увеличивающего (s, t)-пути
M(f) = c(R) для некоторого разреза R сети.

ФПМИ БГУ

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

Лестер Рэндольф Форд младший
англ. Lester Randolph Ford, Jr.

Делберт Рей Фалкерсон
англ. Delbert Ray Fulkerson

Слайд 11

сеть остаточных пропускных способностей ФПМИ БГУ Найти максимальный поток в сети методом Форда-Фалкерсона 1-я итерация

 

сеть остаточных пропускных способностей

ФПМИ БГУ

Найти максимальный поток в сети методом Форда-Фалкерсона

1-я

итерация
Слайд 12

1-я итерация (продолжение) ФПМИ БГУ

1-я итерация (продолжение)

ФПМИ БГУ

Слайд 13

2-я итерация ФПМИ БГУ

2-я итерация

 

ФПМИ БГУ

 

Слайд 14

3-я итерация См. доказательство: «Сборник задач по теории алгоритмов : учеб.-метод.

3-я итерация

 

См. доказательство: «Сборник задач по теории алгоритмов : учеб.-метод. пособие»

/ В. М. Котов [и др.]. – Минск : БГУ, 2017. С. 26-30.

По теореме Форда-Фалкерсона текущий поток f - максимальный.

Слайд 15

1-я итерация 2-я итерация 3-я итерация ФПМИ БГУ Пример 2

1-я итерация

2-я итерация

3-я итерация

 

 

 

ФПМИ БГУ

Пример 2

Слайд 16

4-я итерация ФПМИ БГУ

4-я итерация

 

ФПМИ БГУ

Слайд 17

ФПМИ БГУ Метод Форда ̶ Фалкерсона Поэтому, если на итерациях метода

ФПМИ БГУ

Метод Форда ̶ Фалкерсона

Поэтому, если на итерациях метода Форда-Фалкерсона используется

поиск в глубину, то можно выписать следующую оценку
O(сmax·n ·m) - псевдополиномиальный алгоритм

Работает для сетей с целочисленными пропускными способностями дуг.

Время работы: O( M(fmax ) · ? ), где

M(fmax ) – величина максимального потока

? – время поиска увеличивающего пути

Слайд 18

ФПМИ БГУ Алгоритми Эдмондса ̶ Карпа полиномиальный алгоритм O(n+m) – время

ФПМИ БГУ

Алгоритми Эдмондса ̶ Карпа
полиномиальный алгоритм

O(n+m) – время работы поиска в

ширину;
O(n·m) – число итераций алгоритма;
Поиск увеличивающего пути: поиск в ширину (BFS).
После каждой итерации алгоритма длина dist(s,v) (в дугах) наименьшего пути из источника s в вершину v монотонно не убывает. Так как длина (s,t)-пути не превосходит (n-1), то конечная вершина t может изменять свою метку dist(s,t) не более, чем n раз.
Назовем k-этапом совокупность итераций, на которых длина наименьшего пути сохраняется равной k. Эти итерации идут подряд. На k-этапе после каждой итерации алгоритма из новой сети вычёркивается хотя бы одна дуга, построенного на этой итерации увеличивающего пути и она не может появиться вновь, так как она не является обратной дугам следующих увеличивающих путей k-этапа. Поэтому число итераций алгоритма на k-этапе не превосходит m.
Получаем оценку на число итераций O(n·m).

Время работы:

O(n·m ·(n+m))=O(n · m2),

Слайд 19

работает для сетей с целочисленными пропускными способностями дуг O(сmax·n ·m) O(n

работает для сетей с целочисленными пропускными способностями дуг
O(сmax·n ·m)
O(n · m2)

ФПМИ

БГУ

Метод Форда ̶ Фалкерсона
псевдополиномиальный алгоритм

Алгоритми Эдмондса ̶ Карпа
полиномиальный алгоритм

Слайд 20

1: [ (2,2) , (5,3) ] cuv u v g 2:

1: [ (2,2) , (5,3) ]

cuv

u

v

g

2: [ (9,3) , (3,4) ]

3:

[ (7,4) ]

Представление сети остаточных пропускных способностей на списках смежности

списки смежности для остаточной сети

списки смежности для исходной сети

4: [ ]

Слайд 21

https://github.com/larandaA/alg-ds-snippets Псевдокод функций для работы с сетью остаточных пропускных способностей

https://github.com/larandaA/alg-ds-snippets

Псевдокод функций для работы с сетью
остаточных пропускных способностей

Слайд 22

https://github.com/larandaA/alg-ds-snippets dfs bfs Общая схема метода Форда – Фалкерсона

https://github.com/larandaA/alg-ds-snippets

dfs

bfs

Общая схема метода
Форда – Фалкерсона

Слайд 23

Приложения ФПМИ БГУ

Приложения

ФПМИ БГУ

Слайд 24

Наибольшее число попарно различных путей ФПМИ БГУ

Наибольшее число попарно различных путей

ФПМИ БГУ

Слайд 25

Наибольшее число (s,t)-путей, которые попарно не пересекаются Ответ= 2 Задан ориентированый

Наибольшее число (s,t)-путей, которые попарно не пересекаются

Ответ= 2

Задан ориентированый граф,

в котором выделены две вершины s и t.
(1) Необходимо найти наибольшее число (s,t)-путей, которые попарно не пересекаются по дугам.

(2) Необходимо найти наибольшее число (s,t)-путей, которые попарно не пересекаются по вершинам.

После преобразования решается задача нахождения наибольшего числа (s,t)-путей, которые попарно не пересекаются по дугам (пропускные способности всех дуг сети полагаются равными 1).

Время работы

O(m·n)

ФПМИ БГУ

Слайд 26

2 3 1 2 3 2 2 M(f)=6 - решение задачи

2

3

1

2

3

2

2

M(f)=6 - решение задачи

V1={1, 2, 3}

V2={11, 12, 13, 14}

строим сеть

находим максимальный

поток

Время работы алгоритма:

O(m2)

Задан ориентированый граф, в котором выделены два подмножества вершин: V1 и V2.
Необходимо найти наибольшее число путей, которые начинаются в V1 и заканчиваются в V2 и попарно не пересекаются по дугам.

Слайд 27

Наибольшее паросочетание в двудольном графе (англ. maximum matching) ФПМИ БГУ

Наибольшее паросочетание в двудольном графе (англ. maximum matching)

ФПМИ БГУ

Слайд 28

Задан двудольный граф. Необходимо найти: наибольшее паросочетание; наибольшее паросочетание минимального веса

Задан двудольный граф. Необходимо найти:
наибольшее паросочетание;
наибольшее паросочетание минимального веса (взвешенный

граф).

1

2

4

5

M1={{1,5}, {3,6}}

максимальное паросочетание

M2={{1,4}, {2,5}}

паросочетание

3

6

M3={{1,4}, {2,5}, {3,6}}

наибольшее паросочетание

M4={{1,5}, {1,4}}

НЕ паросочетание

Паросочетание это некоторое подмножество рёбер графа, в котором никакие два ребра не смежны.

maximum matching – наибольшее паросочетание

maximal matching – максимальное паросочетание

совершенное паросочетание

ФПМИ БГУ

Слайд 29

Наибольшее паросочетание в двудольном графе Задан двудольный граф. Известно разбиение на

Наибольшее паросочетание в двудольном графе

Задан двудольный граф.
Известно разбиение на доли.


Необходимо найти наибольшее паросочетание.

M={{1,4}, {2,5}, {3,6}}

достраиваем
до сети

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

рёбра двудольного
графа, по которым поток
равен 1, включаем
в наибольшее
паросочетание

ФПМИ БГУ

Слайд 30

Наибольшее паросочетание минимального веса в двудольном графе ФПМИ БГУ

Наибольшее паросочетание минимального веса в двудольном графе

ФПМИ БГУ

Слайд 31

Задан двудольный граф. Каждому ребру которого приписан целочисленный вес c (e)≥0.

Задан двудольный граф. Каждому ребру которого приписан целочисленный вес c (e)≥0.

Известно разбиение вершин двудольного графа на доли.
Необходимо найти: наибольшее паросочетание минимального веса в двудольном графе.

|M1|=3, с(M1)=20+4+3=27

сначала найдём
наибольшее
паросочетание

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

рёбра двудольного
графа, по которым поток
равен 1, включаем
в наибольшее
паросочетание

ФПМИ БГУ

Слайд 32

(продолжение) наибольшее паросочетание минимального веса контур отрицательного веса (=-16): 1 ->

(продолжение) наибольшее паросочетание минимального веса

контур отрицательного веса (=-16):
1 -> 4 ->

2 -> 5 -> 1

новое паросочетание
|M2|=3,
с(M2)=1+7+3=11

контур отрицательного веса: НЕТ

M2={{1,5}, {2,4}, {3,6}} –
наибольшее паросочетание
минимального веса
c(M2 )=11

ориентируем
рёбра графа

перестраиваем
паросочетание

повторяем
процесс

ФПМИ БГУ

Слайд 33

( O(n·m) + О(m)) Время работы алгоритма поиск наибольшего паросочетания в

( O(n·m) + О(m))

Время работы алгоритма

поиск наибольшего паросочетания в

двудольном графе;

О(cmax ·m · n2)

ФПМИ БГУ

максимальный вес наибольшего паросочетания
(в паросочетании не может быть более, чем n рёбер), поэтому данной величиной можно оценить наибольшее число итераций поиска контура отрицательного веса;

поиск контура отрицательного веса алгоритмом Форда ̶ Беллмана и перестройка наибольшего паросочетания вдоль контура отрицательного веса

+

О(cmax ·n)

О(n·m)

·

Слайд 34

Максимальный поток минимальной стоимости (англ. max flow min cost) ФПМИ БГУ

Максимальный поток минимальной стоимости (англ. max flow min cost)

ФПМИ БГУ

Слайд 35

Стоимость потока f : Максимальный поток, но среди всех максимальных потоков

 

 

Стоимость потока f :

 

 

 

Максимальный поток, но среди всех максимальных потоков его

удельная стоимость не является минимальной.

f(e)

c(e)

Слайд 36

Максимальный поток минимальной стоимости Метод устранения отрицательных циклов ФПМИ БГУ

Максимальный поток минимальной стоимости Метод устранения отрицательных циклов

ФПМИ БГУ

Слайд 37

C={ (6,5),(5,4),(4,6)} – контур отрицательной стоимости -28; перераспределяя вдоль контура 1

C={ (6,5),(5,4),(4,6)} – контур отрицательной стоимости -28;
перераспределяя вдоль контура 1

единицу потока, получим поток той же величины, но стоимость которого меньше на |p'(C)| единиц, чем у текущего потока;

исходная сеть

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

сеть остаточных пропускных способностей на последней итерации алгоритма построения максимального потока

Слайд 38

f(e) берём сеть остаточных пропускных способностей последней итерации алгоритма построения максимального

 

 

f(e)

берём сеть остаточных пропускных способностей последней итерации алгоритма построения максимального потока

и вдоль контура отрицательного веса перераспределяем поток

ФПМИ БГУ

исходная сеть

Слайд 39

О(cmax · n · pmax) · Время работы: О(n·m2) – поиск

О(cmax · n · pmax) ·

Время работы:

О(n·m2) – поиск максимального потока,

например, алгоритмом Эдмондса ̶ Карпа

О(cmax · pmax · m · n2 + n · m2)

+

ФПМИ БГУ

наибольшая возможная удельная стоимость максимального потока (по предположению сеть целочисленная и нет кратных дуг)

поиск циклов отрицательной удельной стоимости, например, алгоритмом Форда ̶ Беллмана

О(n · m)

Слайд 40

Максимальный поток минимальной стоимости Метод минимальных путей ФПМИ БГУ

Максимальный поток минимальной стоимости Метод минимальных путей

ФПМИ БГУ

Слайд 41

Исходная сеть сеть остаточных пропускных способностей 1-я итерация оставляем дуги, для

Исходная сеть

сеть остаточных
пропускных способностей

 

1-я итерация

оставляем дуги, для которых остаточная
пропускная

способность >0;
дуге e исходной сети приписываем p(e),
а её обратной дуге приписываем –p(e)

в сети могут быть дуги отрицательного веса, но нет отрицательных контуров; находим кратчайший по удельной стоимости (1,6)-путь:

вдоль данного пути увеличиваем
текущий поток, как и на итерациях
метода Форда-Фалкерсон

 

 

Слайд 42

сеть остаточных пропускных способностей 2-я итерация оставляем дуги, для которых остаточная

сеть остаточных
пропускных способностей

2-я итерация

оставляем дуги, для которых остаточная
пропускная способность

>0;
дуге e исходной сети приписываем p(e),
а её обратной дуге приписываем –p(e)

находим кратчайший по удельной стоимости (1,6)-путь:

вдоль данного пути увеличиваем
текущий поток

 

 

ФПМИ БГУ

Слайд 43

сеть остаточных пропускных способностей 3-я итерация оставляем дуги, для которых остаточная

сеть остаточных пропускных способностей

3-я итерация

оставляем дуги, для которых остаточная
пропускная способность

>0;
дуге e исходной сети приписываем p(e),
а её обратной дуге приписываем –p(e)

находим кратчайший по удельной стоимости (1,6)-путь:

вдоль данного пути увеличиваем текущий поток

 

 

Слайд 44

сеть остаточных пропускных способностей 4-я итерация оставляем дуги, для которых остаточная

сеть остаточных
пропускных способностей

4-я итерация

оставляем дуги, для которых остаточная
пропускная способность

>0;
дуге e исходной сети приписываем p(e),
а её обратной дуге приписываем –p(e)

находим кратчайший по удельной стоимости (1,6)-путь:

вдоль данного пути увеличиваем текущий поток

 

 

ФПМИ БГУ

Слайд 45

сеть остаточных пропускных способностей 5-я итерация оставляем дуги, для которых остаточная

сеть остаточных
пропускных способностей

5-я итерация

оставляем дуги, для которых остаточная
пропускная способность

>0;
дуге e исходной сети приписываем p(e),
а её обратной дуге приписываем –p(e)

НЕТ (1,6)-пути

 

 

ФПМИ БГУ

Слайд 46

О(cmax · n) · (О(n·m) + О(m) ) Время работы О

О(cmax · n) · (О(n·m) + О(m) )

Время работы
О (cmax ·

m · n2)

О (pmax · m2 · n2)

О(pmax · n · m) · (О(n·m) + О(m) )

ФПМИ БГУ

время работы алгоритма Форда ̶ Беллмана; модификация потока вдоль найденного увеличивающего пути.

число шагов запуска алгоритма нахождения кратчайшего пути (доказательство оценки выполняется по той же схеме, как и в алгоритме Эдмондса ̶ Карпа)

так как сеть целочисленная, нет кратных дуг и на каждой итерации метода минимальных путей строится поток большей величины, то число итераций алгоритма ограничено сверху наибольшей возможной величиной потока конкретной индивидуальной задачи, т.е. cmax · n.

время работы алгоритма Форда ̶ Беллмана; модификация потока вдоль найденного увеличивающего пути.

Слайд 47

Максимальный поток минимальной стоимости О(cmax · m · n2) Метод минимальных

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

О(cmax · m · n2)

Метод
минимальных путей

Метод
устранения

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

О(cmax · pmax · m · n2 + n · m2)

оба алгоритма ̶ псевдополиномиальные
О(pmax · m2 · n2)

ФПМИ БГУ

Слайд 48

Общие задачи в iRunner для закрепления навыков 0.11 Максимальный поток в

Общие задачи в iRunner для закрепления навыков

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

(простая версия) 0.12 Максимальный поток в сети (большие ограничения, по желанию)

ФПМИ БГУ