Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ODM_GUZhVA_Lektsii_33_33_33.doc
Скачиваний:
46
Добавлен:
18.04.2019
Размер:
2.58 Mб
Скачать

Алгоритм поиска потока минимальной стоимости

  1. (Задание начальных условий)

  1. Каждой дуге принять значение . Кроме того, положить (р(х) – вершинные числа).

  1. (Выявление дуг, в которых допускается изменение потока)

Сформировать множество I, включив в него дуги , для которых выполняется и < .

  1. Сформировать множество R, включив в него дуги , для которых выполняется и 0< .

  2. Сформировать множество N, включив в него дуги, не вошедшие ни в I, ни в R.

На следующих этапах выполнения алгоритма изменение потока будет допускаться только в дугах, которые принадлежать I или R. Следовательно, потоки могут изменяться только в тех дугах, для которых выполняется условие .

  1. (Изменение потока)

    1. Применить алгоритм поиска максимального потока к исходу сети при найденном на шаге 2 распределении дуг на множества I, R, N.

Выполнение данного алгоритма заканчивается либо тогда, когда оказывается, что из вершины s в вершину t уже передано единиц потока, либо тогда, когда выясняется, что при текущем разбиении дуг на множества I, R, N полученный поток максимален.

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

Во втором - случае проверить, не является ли полученный поток максимальным в исходном графе. Это осуществляется путём использования разреза, определяемого по окончании процедуры окрашивания в соответствии с алгоритмом поиска увеличивающего пути.

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

  1. (Изменение вершинных чисел)

    1. Исходной информацией для выполнения данного шага являются результаты окрашивания вершин в алгоритме поиска увеличивающего пути.

    2. Увеличить на +1 вершинные числа р(х) для всех неокрашенных вершин. При этом обязательно увеличится число , поскольку вершина t является неокрашенной. Затем перейти к шагу 2.

Замечание:

Множество дуг, исключение которых из графа увеличивает число его компонент, называется разрезом. Разрез, который не содержит в качестве собственного подмножества никакого другого разреза, называется простым разрезом.

Пример простого разреза:

Множество дуг образует разрез, потому что образуется три компоненты связности.

Множество дуг также образует разрез (получается две компоненты связности), но этот разрез называется простым.

Рис. 64

Разрез называется насыщенным, если он содержит хотя бы одну дугу, поток по которой равен пропускной способности этой дуги.

Пример: Найти поток минимальной стоимости из вершины s в вершину t в графе

Первое число над дугой определяет стоимость передачи единицы потока

Второе число над дугой означает пропускную способность этой дуги.

Рис. 65

  1. Полагаем вершинные цифры равными 0.

  1. Все вершины не окрашены, за исключением вершины S.

  2. Поток каждой дуги .

  1. Сформируем множества I, R

    1. Все дуги относятся к множеству N, поэтому применять алгоритм поиска максимального потока нельзя, переходим к шагу 3.

  1. Поток в графе является максимальным.

Переходим к шагу 4.

  1. Увеличим вершинные числа на 1 для всех неокрашенных вершин:

Переходим на шаг 2.

  1. Формируем множества I, R

Получили:

  1. Переходим к шагу 3

  2. Применим алгоритм поиска максимального потока (найти увеличивающий путь)

  3. Окрашиваем вершину а и дугу (s, a). Все остальные вершины и дуги окрашивать не можем, так как они принадлежать множеству N.

  4. Переходим к шагу 4

  1. Увеличим на 1 все вершинные числа для неокрашенных вершин.

Переходим к шагу 2

Получили:

  1. Переходим к шагу 3

  2. Применим алгоритм поиска максимального потока (найти увеличивающий путь)

  3. Окрашиваем вершину b и дугу (a, b).

  4. Переходим на шаг 4

    1. Увеличим на 1 все вершинные числа для неокрашенных вершин.

Переходим к шагу 2

Получили:

Увеличиваем поток на 2 единицы

Переходим к шагу 1

  1. Окрашиваем вершину s. Вершинные числа и

НУЖНО ДОДЕЛАТЬ!!!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]