Задача о максимальном потоке. Остаточная сеть. Аугментальный (увеличивающий) путь. Алгоритм Форда-Фалкерсона

Задача о максимальном потоке.

Сеть – это ориентированный взвешанный граф G = (v,e) с положительными весами ребер с(е), в котором есть ровно одна вершина – источник (S) и ровно одна вершина – сток (T).

Вершины не равные S и Т называются внунтренними,

Вес ре6ра с(e) – пропускная способность ребра.

Потоком называется функция f, которая переводит множество ребер в множество действительных чисел.

Функция f удовлетворяет:

1. Для любого ребра e € E: 0<=f(e)<=c(e)

2. Для всех v € V, v<>S, v=T: div+ (v) =div_(v), где

· div+ - суммарный поток по всем ребрам е, таким что е=(u,v)
div+(v) = , e=(u,v) – величина входящего потока

· div_ - величина исходящего потока
div_(v) = ,

Свойство потока: div_(S)=div+(T)

Величина div_(S)=div+(T) называется величиной потока в сети.

 

Задача о максимальном потоке.

Найти поток, величина которого не меньше величины любого другого потока (найти поток с максимальной величиной)

 

Остаточная сеть.

Пусть дана сеть G и в ней запущен поток f, остаточная сеть – это взвешенный ориентированный граф с множеством вершин V и множеством дуг, определяющих:

1. если в сети G есть ребро (u,v) и величина потока по этому ребру меньше с(е), то в остаточной сети есть ребро e=(u,v) с весом с(е)-f(e) – прямые ребра

2. если в G есть ребро е=(u,v) и поток через это ребро >0, то в остаточной сети есть ребро e’=(u,v) с весом f(e) – встречные ребра

Аугментальный (увеличивающий) путь.

Если в остаточной сети существует ориентированный путь из S в T, то в исходной сети можно увеличить поток вдоль этого пути. При этом проход по прямым ребрам - увеличение потока в данном ребре исходной сети, а по встречному ребру – уменьшение потока.

 

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

1. Запустить 0-й поток f(e)=0

2. Построитьостаточнуюсеть

3. Найти в остаточной сети ориентированный путь из S в T

4. Если путь найден, то увеличить поток вдоль этого пути и перейти к шагу 2. Иначе конец алгоритма. Текущий поток является максимальным.

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: