- •С одержание
- •Введение
- •1. Основные понятия и определения теории графов
- •П онятие графа
- •1.2. Графическое представление графов
- •1.3. Виды графов
- •1 .4. Элементы графов
- •1.5. Представление графов с помощью матриц
- •1.5.1. Матрицы инцидентности и списки рёбер
- •1 .5.2. Матрицы смежности
- •2. Потоки в сетях
- •2 .1. Понятие сети
- •2.2. Задача о максимальном потоке
- •2 .3. Алгоритм размещения пометок для задачи о максимальном потоке
- •2.4. Алгоритм Форда-Фалкерсона
- •2.5. Графы со многими источниками и стоками
- •2 .6. Задача о многополюсном максимальном потоке
- •П рактическая часть
- •З аключение
- •С писок использованной литературы
2.2. Задача о максимальном потоке
На практике часто возникает проблема определения максимальной проводимости некоторой реальной сети: сети транспортной, сети ЭВМ, других. Иногда нужно определить самый дешёвый поток и т.д. Все эти и многие другие задачи решаются с помощью алгоритмов, которые работают на сетях. Так, алгоритм о максимальном потоке ищет максимально возможную пропускную способность сети, алгоритм минимальной стоимости – самый дешёвый поток. В данном разделе будем рассматривать задачу о максимальном потоке.
Задача заключается в нахождении такого множества потоков по дугам, чтобы величина Q(vs) была максимальной.
Разрез S отделяет vs от vt, если вершины vs, vt принадлежат разным сторонам разреза: vs Vs, vt Vt, V = Vs Vt. Пропускной способностью с(S) разреза S называется сумма пропускных способностей дуг разреза, которые начинаются в Vs и заканчивается в Vt:
с(S)
=
.
2 .3. Алгоритм размещения пометок для задачи о максимальном потоке
Алгоритм размещения пометок основан на следующей теореме.
Теорема 1.Теорема про максимальный поток и минимальный разрез. Для произвольной сети максимальная величина потока из vs в vt равняется минимальной пропускной способности разреза, который отделяет vs от vt.
Доказательство
Покажем, что величина w произвольного потока φ не превышает пропускной способности разреза (Vs,Vt), который отделяет vs от vt. Поскольку функция φ поток, то она удовлетворяет уравнению (1) сохранении потока:
-
= w,
- = 0, v vs, v t, (2)
-
= -w.
Сложим те уравнения из (2), которые соответствуют вершинам из Vs. Учитывая, что vs Vs, vt Vt, получаем:
w
=
-
.
Всё множество вершин распадается на две стороны: V = Vs Vt. Получаем
w
=
-
=
=
+
-
-
=
=
-
≤
≤
= c(Vs,
Vt).
Теперь нужно показать, что существуют некоторые поток φ и разрез (Vs, Vt), для которых величина потока равняется пропускной способности разреза. Как видно, все потоки от Vs до Vt ограничены и среди них можно выбрать максимальный поток φ. С её помощью определим разрез (Vs, Vt), для которого
= c(Vs, Vt), = 0.
Определим множество Vs рекуррентно:
1) vs Vs.
2 ) Если, vs Vs дуга e идёт из вершины vi в какую-либо вершину vj и φ(e) < c(e), то vj Vs.
3) Если vi Vs, дуга e идёт из вершины vr в вершину vi и φ(e), то vj Vs.
Шаг 1) построения множества
Vs
означает, что источник vs
принадлежит построенной стороне разреза.
Покажем, что сток тогда лежит на другой
стороне разреза – vt
Vt
= V/Vs.
Допустим противоположное: пусть vt
Vs.
Тогда существует “неориентированная”
цепь, которая идёт из источника vs
в сток vt,
такая, что для каждой дуги ei
цепи с направлением, совпадающим с
ориентацией “от источника к стоку”
> 0.
Обозначим через l1 = min{c(ej) - c(ei)} все дуги ei цепи с направлением, совпадающим с ориентацией “от источника к стоку”, l2 = min{φ(ei)} все дуги ei цепи с направлением, не совпадающим с ориентацией “от источника к стоку”, l = min(l1, l2). Поток φ можно увеличить на l, увеличив на l поток на дугах цепи, ведущих “от стока к источнику”. Это противоречит тому, что величина потока φ максимальная величина допустимого потока из вершины vs в вершину vt.
