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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.

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

.

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

.

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

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

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

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

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

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

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

.

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

Рис. 10

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

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

Рис. 11

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

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

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

Рис. 12

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

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

Рис. 13

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

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