Главная страница

Теория графов. Задача о нефтепроводе максимальной пропускной способности. 20


Скачать 0.63 Mb.
НазваниеЗадача о нефтепроводе максимальной пропускной способности. 20
АнкорТеория графов
Дата06.05.2022
Размер0.63 Mb.
Формат файлаdoc
Имя файлаТеория графов.doc
ТипРеферат
#515733
страница3 из 4
1   2   3   4

1.3 Нахождение максимального потока в сети


Транспортной сетью называется конечный Связный орграф G(V, E) без петель, каждой дуге которого поставлено в соответствие некоторое неотрицательное число c( ), называемое пропускной способностью дуги, и существует:

  1. ровно одна вершина , в которую не заходит ни одна дуга, называемая источником или началом сети;

  2. ровно одна вершина , из которой не выходит ни одной дуги; эта вершина называется стоком или концом сети.

Потоком сети называется неотрицательная функция f(1) такая, что f(e) меньше или равно c(e). (Поток не может превышать пропускную способность дуги.)

Дуга называется насыщенной потоком f, если (Поток называется полным, если содержит насыщенную дугу f(e)=c(e).)

Разрезом L сети G(V,E) называется множество насыщенных дуг, отделяющих источник s от стока t.

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

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

Пусть . Тогда выполняется равенство

(1)



Если , так как в противном случае, используя имеем , а следовательно, в силу существует путь нулевой длины из в , что противоречит условию . Но тогда из (1) получаем

Следствие 1. Используя теорему Форда-Фалкерсона получаем, что величина максимального потока в транспортной сети равна пропускной способности минимального разреза.

Следствие 2. Пусть - допустимый поток в транспортной сети D. Тогда, если длина минимального пути из v1 в vn в орграфе приращений равна бесконечности, то - максимальный поток.

Алгоритм решения можно представить следующим образом.Сначала будем строить полный поток, затем проверим, можно ли его увеличить. Если нет, то этот поток является максимальным. Если же его можно увеличить, то будем строить другой полный поток и т.д. Решать задачу будем с помощью метода расстановки пометок.

Две основные процедуры (операции алгоритма):

 операция расстановки пометок;

 операция изменения потока.

Рассмотрим первую процедуру. Для каждой вершины данной сети нужно приписать пометку, которая имеет следующий вид: или где , а – натуральное число или бесконечность. Вообще возможны три состояния вершины:

  1. не помечена;

  2. помечена, но не просмотрена;

  3. помечена и просмотрена.

Расставлять пометки начнем с источника S. Он получит пометку Источник помечен, но не просмотрен. Остальные вершины не помечены. Чтобы источник S был помечен и просмотрен, надо поместить все вершины, смежные с S.

Вершина получит пометку , где .

Теперь все вершины смежные с S, помечены, но не просмотрены. А вершина S помечена и просмотрена. Начнём просматривать ту из вершин , которая имеет наименьший индекс. Для этого нужно расставить пометки вершинам, смежным с . Если для вершины выполняется следующее условие , то она получит метку , где . Если же для вершины выполняется условие , то получает метку , где . Далее просматриваем следующую вершину, и так до тех пор, пока не пометим сток t или же пока нельзя будет больше пометить ни одной вершины, сток при этом останется не помеченным. Если сток окажется не помеченным, то процесс нахождения максимального потока в сети можно считать законченным, а если сток помечен, то нужно переходить к процедуре 2.

Рассмотрим процедуру изменения потока. Если вершина имеет пометку , то заменяем на , если же вершина имеет пометку , то заменяем на

Переходим к следующей вершине и так до тех пор, пока не достигнем источника S. Здесь изменение потока прекращается. Далее переходим к процедуре 1 и так до тех пор, пока величину потока уже нельзя изменить.

Дана сеть G(V,E) с источником S и стоком t. Пропускные способности дуг указаны. Найти максимальный поток из S в t.

Функция , определенная на множестве X дуг транспортной сети D и принимающая целочисленные значения, называется допустимым потоком (или просто потоком) в транспортной сети D, если:

•для любой дуги величина , называемая потоком по дуге , удовлетворяет условию ;

•для любой промежуточной вершины v выполняется равенство

т.е. сумма потоков по дугам, заходящим в v, равна сумме потоков по дугам, исходящим из v.

Для любого допустимого потока в транспортной сети D выполняется равенство:

По определению допустимого потока имеем:

Заметим, что для каждой дуги где , величина входит в левую часть равенства лишь один раз и при этом со знаком плюс. Аналогично для каждой дуги , величина входит в левую часть равенства лишь один раз и при этом со знаком минус. С другой стороны, для каждой дуги величина входит в левую часть равенства один раз со знаком плюс (при ) и один раз со знаком минус (при ), что в сумме даёт нулевой вклад в левую часть равенства.

Величиной потока в транспортной сети D называется величина , равная сумме потоков по всем дугам, заходящим в , или, что то же самое – величина, равная сумме потоков по всем дугам, исходящим из




Пусть - допустимый поток в транспортной сети D. Дуга называется насыщенной, если поток по ней равен её пропускной способности, т.е. если . Поток называется полным, если любой путь в D из содержит, по крайней мере, одну насыщенную дугу.

Поток называется максимальным, если его величина принимает максимальное значение по сравнению с другими допустимыми потоками в транспортной сети D.

Очевидно, что максимальный поток обязательно является полным (т.к. в противном случае в D существует некоторая простая цепь из V1 в Vn, не содержащая насыщенных дуг, а следовательно, можно увеличить на единицу потоки по всем дугам из и тем самым увеличить на единицу , что противоречит условию максимальности потока). Обратная же, вообще говоря, неверно. Существуют полные потоки, не являющиеся максимальными. Тем на менее полный поток можно рассматривать как некоторое приближение к максимальному потоку.

Введем для заданной транспортной сети D и допустимого потока в этой сети орграф приращений , имеющий те же вершины, что и сеть D. Каждой дуге транспортной сети D в орграфе приращений соответствует две дуги: и - дуга, противоположная по направлению дуге . Припишем дугам орграфа приращений длину :





т.е. орграф является нагруженным. При этом очевидно, что длина любого пути из в в орграфе равна либо 0, либо бесконечности.

Важным следствием теоремы Форда-Фалкерсона является Алгоритм построения максимального потока в транспортной сети.

Алгоритм:

Шаг 1. Полагаем i=0. Пусть - любой допустимый поток в транспортной сети D (например, полный, можно начинать с нулевого потока: ).

Шаг 2. По сети D и потоку строим орграф приращений .

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

1   2   3   4


написать администратору сайта