Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ДГИО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.33 Mб
Скачать

Лекция 9. Алгоритм Гомори.

Утверждение1: Пусть G– неор. Граф и c – весовая функция для того чтобы остов T* был максимальным необходимо и достаточно, чтобы для любого ребра выполнялось неравенство , где –некоторая простая цепь остова T*. Для случая минимального остова – неравенство противоположное.

Определение: -потоковая функция. И будем говорить, что симметричная неотрицательная функция реализуема в качестве потоковой, если существует неор. граф G для которого она является потоковой(т.е. ее значение = величине максимального потока)

Утверждение2: Если – потоковая функция некоторого графа G, то для любых трех вершин выполняется неравенство:

Замечание: Из неравенства (2) следует, что из 3-х чисел – два должны быть равны и 3-е ”

Замечание: Для любого набора выполняется: (3)

Утверждение3: Если неотрицательная симметричная функция удовлетворяет неравенству (2) для любых , то существует неориентированная сеть, имеющая в качестве потоковой функции функцию .

Теорема: Для того, чтобы неотрицательная симметричная функция реализовывалась в качестве потоковой необходимо и достаточно, чтобы она удовлетворяла условию (2). Если функция реализуема, то она реализуема всегда деревом (показали в утверждении 3).

Определение: Два графа называются потоково эквивалентными, если они имеют одну и туже потоковую функцию.

Алгоритм:

Правила решения:

В начале X –один узел будущего дерева, выбираем в узле 2 вершины s,t и решаем задачу о максимальном потоке

Пусть величина потока , тогда разбиваем X: v

После этого выбираем один из узлов дерева, образованный множеством вершин, пусть это Y1

В ыберем в нем новые две вершины s,t строим w–сжатый граф, склеив все вершины Y2 в w. Затем решаем задачу о максимальном потоке и находим минимальный разрез и –величина максимального потока.

А) Если , то v1

v

Б) Если , то v1

v

Пример:

Найти потоковую функцию этого графа:

1. s=1, t=2

(в скобках указана пропускная способность дуги, а вне скобок итоговый поток по этой дуге, после применения алгоритма Ф-Ф)

(во множество попадают вершины помеченные на последнем шаге алгоритма Ф-Ф, во множество попадают все остальные вершины)

2. s=1, t=3

3. s=3, t=4

Решив этот пример до конца получим потоковую функцию для исходного графа.

Лекция 10 Многополюсные минимальные потоки.

Для формального описания алгоритма будем использовать следующие договорённости:

1. Дерево будем представлять списком рёбер и пропускных способностей.

Возникает вопрос – как нумеровать вершины. Если узел соответствует одноэлементному подмножеству, то этот узел будем нумеровать номером этой вершины. Если же узлу соответствует подмножество мощности |X|>1, то он будет иметь номер больший, чем n. (Для этого нужен специальный счётчик узлов. Если очередной узел делится на два, то с одной стороны счётчик увеличивается на +1, а с другой на +2). Необходимо описать процедуру, которая для любого подмножества определяет его номер.

Каждый раз, когда в результате деления того или иного узла появляются узлы мощности, большей 1, мы будем помещать их в стек, предварительно присвоив узлу порядковый номер.

2. Также, возникает вопрос, как задавать w-сжатый вспомогательный граф.

Зададим граф с помощью матрицы

Далее применим алгоритм Форда-Фалкерсона.

Пусть в результате применения алгоритма на матрицу получаются помеченные и непомеченные вершины: Y1 – помеченные, Y2 – непомеченные.

Правила преобразования дерева:

1.

В списке рёбер дерева проводятся преобразования:

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

2.

В списке рёбер дерева проводятся преобразования:

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

Обоснование.

Покажем, что построенное по указанной схеме дерево эквивалентно первоначальной сети.

Пусть T – дерево, построенное алгоритмом, - пропускная способность вершин.

T = (X, UT)

согласно алгоритму.

Построим потоковую функцию этого дерева:

, при условии, что

единственная цепь, соединяющая i и j.

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

(1)

Для любых трёх вершин I, j, k справедливо неравенство:

где выделенное ребро – ребро с минимальной пропускной способностью.

Тогда v(k,j) также определяется этим числом.

Докажем эквивалентность, т.е. выполнение (1) для любой пары вершин.

Докажем два противоположных неравенства. Рассмотрим произвольные два ребра, и цепь, соединяющую их.

Любое ребро этой цепи соответствует разрезу в графе G, отделяющему i от j.

А так как величина максимального потока равна величине пропускной способности минимального разреза, то

Докажем противоположное неравенство.

Докажем, что на любой итерации алгоритма любые два узла, соединённые в дереве ребром с пропускной способностью v таковы, что существуют в этих узлах вершины, величина максимального потока между которыми в исходном графе v[i,j] = v.

Докажем методом математической индукции.

На первом шаге будет построено дерево

v(s,t) = v.

На первой итерации утверждение верно.

Индуктивное утверждение:

Пусть после любой итерации с номером, меньшим k, выполняется указанное свойство.

Рассмотрим k-тую итерацию.

Рассмотрим любое ребро, на начало итерации соединяющее X1 и X’.

iεX’ j

Т.к. это начало итерации, то v(i,j) = v.

Пусть подвергается разбиению узел X1, т.е. в этом узле выбираются две вершины: s и t.

Все остальные вершины склеиваются.

v v’

i s t

j может попасть в X’1 или X’2.

Если , то пара (i, j) и остается той парой, для которой v(i,j) = v.

. Покажем, что нужной парой вершин является (i, s).

Если существует сжатие, то величина максимального потока между i и s сохранится. Заменим все пропускные способности между вершинами S’2 в исходной сети на бесконечность. Получим новую сеть.

Построим в новой сети максимальный поток из i в s. Обозначим его через .

.

Посчитаем величины:

Воспользуемся тем, что потоковая функция.

Следовательно, , т.к. имеет два смысла – величина максимального потока и минимального разреза.

Таким образом, получили неравенство

Из двух противоположных неравенств получили равенство, и (1) доказано.