Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Графы со многими источниками и стоками

Читайте также:
  1. Глава IV. Я знакомлюсь еще со многими домами Общины. Оранжевый домик. Кого я в нем видел и что было в нем
  2. Изобрана многими сия премудрость
  3. Тахографы и их использование на автотранспорте.
  4. Я знакомлюсь еще со многими домами Общины. Оранжевый домик. Кого я в нем видел и что было в нем

Алгоритм Форда-Фалкерсона примененный и для определения величины максимального потока между множеством вершин – источников и множеством вершин – стоков. Разобьем множество вершин на множество источников V + = { v V: Q (v) > 0}, которые образуют поток, множество стоков V - = { v V: Q (v) < 0},которые используют поток и множество промежуточных вершин V0 = { v V: Q (v) = 0},которые сохраняют поток .Преобразуем поток φ в поток, который имеет только один источник и только один сток, увеличив количество вершин в сети. Для этого добавим две новые вершины – “фиктивный” источник vs и “фиктивный” сток vt. Соединим вершину vs со всеми действительными источниками. Этим дугам припишем поток, который образован соответствующим источником. А из каждого действительного стока направим дугу в “фиктивный” сток vt. Этим дугам припишем поток, который используется соответствующим стоком. При этом пропускные способности добавленных дуг считаем бесконечными. В результате получаем сеть с одним источником и одним стоком. Применяя к ней алгоритм Форда-Фалкерсона, находим максимальный поток, который максимальный и для исходной сети.

Проиллюстирируем на примере преобразования сети с несколькими источниками и несколькими стоками до сети с одним источником и одним стоком.

 

Рис. 2.5.1 Сеть с двумя стоками

 

На рис. 2.5.1 изображена сеть с двумя источниками v1 и v3 и тремя стоками v7, v8, v9 Q (v1) = 5, Q (v3) = 3, Q (v7) = 3, Q (v8) = 4, Q (v9) = 1, Q (v2) = Q (v4) = Q (v5) = Q (v6) = 0

Преобразуем эту сеть в сеть с одним источником и одним стоком.

На рис. 2.5.2 изображена сеть уже с одним источником vs и одним стоком vt.

Рис. 2.5.2 Преобразованная сеть

 

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

Рассмотрим задачу нахождения максимального потока для всех пар узлов в неориентированной сети. Эту задачу можно рассматривать как обобщение задачи с одним источником и одним стоком, которую можно решить, применяя алгоритм Форда-Фалкерсона для каждой пары вершин. Однако более эффективным является алгоритм, предложенный Р. Гомори и Т. Ху.

Алгоритм Гомори-Ху

1. Выберем некоторые две вершины графа. Обозначим одну из них через vs, а другую через vt.

2. Применим алгоритм Форда-Фалкерсона и найдём максимальный поток из источника vs в сток vt. При этом множество помеченных вершин и множество непомеченных вершин образуют две стороны минимального разреза Vs и Vt.

3. Выберем две вершины графа vi и vj Vs.

4. Заменим дуги из минимального разреза (Vs, Vt) одной дугой, а вершины бока разреза, в котором не лежат вершины vi, vj, (например, Vt), – одной вершиной. Пропускную способность в таким образом определённой дуге примем равной пропускной способности разреза (Vs, Vt).

5. Положим: vi = vs, vj = vt и вернемся ко второму шагу. После того, как будет выбрана n - 1 пара вершин, мы определим все величин максимального потока для исходной сети. Основная идея алгоритма лежит в итеративном построении максимального остовного дерева, ветви которого соответствуют разрезам, а пропускные возможности ветвей равны пропускным способностям этих разрезов. Если бы мы применили алгоритм Форда-Фалкерсона к каждой паре вершин, то нам бы пришлось его применить раз. В алгоритме же Гомори-Ху максимальный поток между парой вершин определяется с помощью алгоритма расстановки пометок только n - 1 раз. Проиллюстрируем на примере алгоритм Гомори-Ху.

Рассмотрим сеть, изображённую на рис. 2.6.1

Рис. 2.6.1 Сеть с пропускными возможностями

Числа, приписанные дугам, отвечают их пропускным способностям, отвечают их пропускным способностям. Нужно для каждой пары узлов сети определить величину максимального потока между ними. Эта задача решается при n – 1= 6 – 1 = 5 итераций алгоритма Гомори-Ху. Если алгоритм Форда-Фалкерсона расстановки пометок применялся бы к каждой паре узлов, то нужно было бы решить пятнадцать задач о максимальном потоке.

Реализуем алгоритм Гомори-Ху на данной сети.

1. Выберем вершины s = v1 и t = v2. Минимальную пропускную способность относительно источника s = v1 и стока t = v2 имеет разрез со сторонами Vs = { v1, v3, v4, v5, v6 } и Vt = { v2 }. По теореме 1 величина максимального потока между вершинами v1 и v2 равна пропускной способности разреза (Vs, Vt): w12 = w21 = c (Vs, Vt) = 2 + 3 = 5. Объединим вершины с Vs в одну вершину и соединим её с вершиной v2 веткой с пропускной способностью 5 (рис. 2.6.2).

 

Рис. 2.6.2 Первый шаг алгоритма

 

2. Выберем вершины s = v1 и t = v3. Минимальную пропускную способность относительно источника s = v1 и стока t = v3 имеет разрез со сторонами Vs = { v1 } и Vt = { v2, v3, v4, v5, v6 }. По теореме 1 величина максимального потока между вершинами v1 и v3 равна пропускной способности разреза (Vs, Vt): w13 = w31 = c (Vs, Vt) = 2 + 4 + 2 = 8. Объединим вершины v3, v4, v5, v6 в одну вершину и соединим её с вершиной v1 веткой с пропускной способностью 8 (рис. 2.6.3).

Рис 2.6.3 Второй шаг

3. Выберем вершины s = v4 и t = v3. Минимальную пропускную способность относительно источника s = v4 и стока t = v3 имеет разрез со сторонами Vs = { v4 } и Vt = { v1, v2, v3, v5, v6 }. По теореме 1 величина максимального потока между вершинами v4 и v3 равна пропускной способности разреза (Vs, Vt): w43 = w34 = c (Vs, Vt) = 2 + 5 + 4 = 11. Объединим вершины v3, v5, v6 в одну вершину и соединим её с вершиной v4 веткой с пропускной способностью 11 (рис. 2.6.4).

Рис. 2.6.4 Третий шаг

 

4. Выберем вершины s = v5 и t = v3. Минимальную пропускную способность относительно источника s = v5 и стока t = v3 имеет разрез со сторонами Vs = { v5 } и Vt = { v1, v2, v3, v4, v6 }. Величина максимального потока между вершинами v5 и v3 равна пропускной способности разреза (Vs, Vt): w53 = w35 = c (Vs, Vt) = 5 + 4 = 9. Объединим вершины v3, v6 в одну вершину и соединим её с вершиной v5 веткой с пропускной способностью 9 (рис. 2.6.5).

 

Рис. 2.6.5. Четвёртый шаг

 

5. Выберем вершины s = v6 и t = v3. Минимальную пропускную способность относительно источника s = v6 и стока t = v3 имеет разрез со сторонами Vs = { v6 } и Vt = { v1, v2, v3, v4, v5 }.

Рис. 2.6.6 Остаточное дерево разрезов

 

Величина максимального потока между вершинами v6 и v3 равна пропускной способности разреза (Vs, Vt): w63 = w36 = c (Vs, Vt) = 5 + 6 + 4 = 15. Объединим вершину v3 с вершиной v6 веткой с пропускной способностью 15 (рис. 2.6.6).

По дереву перерезов, изображённого на рис. 2.6.6, легко найти остальные величины максимальных потоков. Например, v16 = v61 = 8, поскольку в цепи дерева разрезов, которая соединяет вершины v1 и v2, минимальная пропускная способность веток равна 8. Запишем величины максимальных потоков в виде матрицы:

.

Здесь на пересечение i- строки и j- столбца стоит величина максимального потока между вершинами vi и vj.


 

2. Практическая часть

Задача 1. На сети сформировать максимальный по величине поток, направленный из истока в сток . Выписать ребра, образующие на сети разрез минимальной пропускной способности.


Дата добавления: 2015-08-09; просмотров: 279 | Нарушение авторских прав


Читайте в этой же книге: Введение | Виды графов | Представление графов с помощью матриц | Потоки в сетях | Задача о максимальном потоке | О максимальном потоке | Решение. Этап 1. | Этап 3. |
<== предыдущая страница | следующая страница ==>
Алгоритм Форда-Фалкерсона| Решение. Этап 1.

mybiblioteka.su - 2015-2024 год. (0.01 сек.)