Смекни!
smekni.com

Теория графов 2 (стр. 3 из 5)

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 выполняется равенство:

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

имеем:

Заметим, что для каждой дуги

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