Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
26-03-2013_00-36-55 / Курс лекций 2 сем.doc
Скачиваний:
185
Добавлен:
26.03.2015
Размер:
5 Мб
Скачать
☆

Алгоритм Форда - Фалкерсона для нахождения потока наибольшей величины.

1°. Перенумеровать произвольным образом вершины сети , отличные от входа и выхода .

2°. Построить произвольный поток на транспортной сети (например, положить ).

3°. Просмотреть пути, соединяющие вход сети c выходом . Если поток полный, то перейти к пункту 4°. В противном случае рассмотреть путь , соединяющий с , все дуги которого не насыщены. Построить новый поток :

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

4°. Присвоить целочисленные метки вершинам сети и знаки «+» или «-» дугам по следующим правилам:

а) входу присвоить метку 0;

б) если вершина получила некоторую метку, а — еще непомеченная вершина, то вершине , такой что присвоить метку , а дуге — знак «+»; вершине , такой что , присвоить метку , а дуге — знак «-». Остальные непомеченные вершины и дуги метки и знака не получают;

в) повторить процесс, описанный в пункте 4°б) до тех пор, пока не прекратится появление новых отмеченных вершин и дуг. Если в результате процесса 4°б) вершина не получит метки, то поток обладает наибольшей величиной. В противном случае перейти к пункту 5°.

5°. Рассмотреть последовательность отмеченных вершин , каждая из которых имеет метку, равную номеру последующей вершины, и последовательность дуг и (не обязательно путь), соединяющих последовательные вершины из . Построить новый поток :

Перейти к пункту 4°.

2. Соотношение между величиной потока и пропускной способностью разреза сети.

Введем новые понятия теории транспортных сетей.

Определение 4: Пусть множество - такое множество вершин графа, что . Множество дуг, заходящих в , т. е. соединяющих вершины с вершинами , называется разрезом сети .

Определение 5: Пропускной способностью разреза называется сумма пропускных способностей дуг, входящих в разрез, т. е.

.

Лемма: Для любого потока и любого разреза справедливо соотношение:

.

Доказательство: В силу того, что выход сети , для величины потока справедливы соотношения:

.

Следствие: Если для некоторого потока и некоторого разреза выполняется равенство , то поток обладает наибольшей величиной.

Лемма и следствие необходимы для обоснования рассмотренного алгоритма.

Обоснование алгоритма.

Прежде всего, заметим, что реализация алгоритма состоит из конечного числа шагов. В самом деле, п. 3° может применяться лишь конечное число раз, так как на каждом шаге величина потока увеличивается, по крайней мере, на единицу. Вместе с тем величина любого потока не может превзойти суммарной пропускной способности дуг, инцидентных выходу сети .

Процесс присвоения меток в силу того, что каждый раз получают метку еще неотмеченные вершины, конечен. И, наконец, в п. 5° поток обладает большей величиной, чем . Это вытекает из того, что по определению вершины и правил п. 4°б) дугам, входящим в , может быть присвоен только знак «+».

Получаемая по правилу 3° функция — поток. Это непосредственно следует из того, что — путь. В соответствии с правилом п. 5° строится также поток. Чтобы доказать это утверждение, рассмотрим три соседние вершины последовательности . В силу правила 4°б) возможны только ситуации, представленные на рис. 10. Но в этих ситуациях — поток.

Пусть процесс, описанный в п. 4°б), приводит к тому, что вершина не получает метки. Обозначим через множество непомеченных вершин. В силу того, что , множество определяет разрез сети . Каждая дуга соединяет помеченную вершину с непомеченной вершиной . Вершина может остаться непомеченной при условии, что . Аналогично, на каждой дуге (выходящей из ) выполняется равенство , поэтому справедливы соотношения:

.

В силу леммы это означает, что поток обладает наибольшей величиной.

Рис. 10

Проведенное рассуждение совместно с леммой составляют доказательство следующей теоремы.

Теорема 1: Для заданной транспортной сети величина наибольшего потока равна наименьшей пропускной способности разрезов, т. е. .

Рис. 11

В качестве примера применения алгоритма Форда - Фалкерсона рассмотрим транспортную сеть и полный поток , для которого (рис. 11). Применяя правила 4° и 5° алгоритма, можно получить поток с величиной .

3. Задача о назначении на должность (комбинаторная прикладная задача).

Пусть в некотором учреждении имеется 6 вакантных должностей и 6 работников .

Рис. 12

Граф , изображенный на рис. 12, иллюстрирует, какие должности может в силу своей квалификации занимать работник . Пусть выполнено условие: каждый работник может занимать хотя бы одну должность и на каждую должность претендует хотя бы один работник. Можно ли произвести назначение на должности так, чтобы все шесть должностей заняли работники соответствующей квалификации?

Один из способов решения этой задачи состоит в рассмотрении вспомогательной транспортной сети . Для ее получения добавим к множеству вершин графа еще две вершины: вход и выход . Соединим с каждой вершиной дугой пропускной способности и каждую вершину с дугой пропускной способности . Припишем дугам исходного графа бесконечные пропускные способности. Получим транспортную сеть , изображенную на рис. 13.

Рис. 13

Ясно, что если на сети будет существовать поток такой, что , то есть поток, насыщающий выходные дуги (одновременно он будет насыщать и входные дуги ), то требуемое назначение будет возможно произвести. Нужно назначить работника на должность в том и только том случае, когда .

Соседние файлы в папке 26-03-2013_00-36-55