Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
129
Добавлен:
16.04.2013
Размер:
632.32 Кб
Скачать

Алгоритм построения максимального потока в сети.

1-й шаг. Полагаем для каждого ребра данной сети

2-й шаг. Будем просматривать узлы сети и расставлять на них пометки вида или по следующему принципу. Источнику присваиваем метку Если вершина уже помечена, а вершина ещё нет, то мы помечаем вершину в следующих случаях:

если есть ребро из в и

если есть ребро из в и

В случае вершина получает метку где в случае метку где

П

Рис. 2.74

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

  1. вершина оказалась помеченной;

  2. вершина не помечена, но больше никакие вершины пометить невозможно.

Покажем, что в случае (1) величину потока можно увеличить, а в случае (2) построенный поток является максимальным. Действительно, пусть имеет место случай (1). Тогда в процессе расстановки меток можно будет “добраться” из в Следовательно, существует путь состоящий из помеченных вершин. Будем считать, что вершины этого пути взяты в “хронологическом” порядке (т.е. в порядке, в котором расставлялись метки). Некоторые из стрелок прямые, а некоторые обратные (см. рис 2.74).

М

Рис. 2.75

етки для прямых и обратных стрелок выглядят так, как показано на рис. 2.75.

И

Рис. 2.76

з принципа расстановки меток видно, что

3-й шаг. Увеличим величину потока на число прибавив к потоку для прямых рёбер и отняв от для обратных рёбер (см. рис. 2.76).

Условия (а) и (б) при этом не нарушатся, и мы получим поток величины После этого стираем все метки и начинаем расстановку меток заново, т.е. возвращаемся к шагу 2.

Пусть теперь имеет место случай (2), т.е. в процессе расстановки меток “добраться” до вершины невозможно. Докажем, что в этом случае алгоритм можно считать завершённым, так как построенный поток уже максимальный. Обозначим через множество всех помеченных вершин, а непомеченных. Очевидно, разрез. Покажем, что для стрелок из в имеет место равенство а для стрелок из в равенство

Действительно, пусть Если то вершина может быть помечена меткой поэтому что невозможно. А если то вершина получает метку поэтому что невозможно. Для данного разреза мы имеем:

Рис. 2.77

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

Проверим теперь эффективность этого алгоритма, т.е. тот факт, что, применяя его, за конечное число итераций будет построен максимальный поток. Проверку осуществим для случая, когда все пропускные способности являются рациональными числами. Это ограничение не носит принципиального характера, так как действительное число можно приблизить с любой степенью точности рациональным числом, а при реализации на компьютере действия и так проводятся лишь с рациональными числами. Заметим, что наш алгоритм монотонный в том смысле, что величина потока в ходе алгоритма постоянно увеличивается. Так как числа рациональны, то можно их привести к общему знаменателю, а затем умножить на знаменатель; 7таким образом, можно считать, что все целые числа. В ходе работы алгоритма числа будут также получаться целыми, а значит, и числа целые. Монотонность алгоритма означает, что ( величина потока на i-й итерации алгоритма). Очевидно, последовательность ограниченная. Так как члены последовательности – целые числа, то величина достигнет своего наибольшего значения, а значит, алгоритм будет завершён.

Из алгоритма нахождения максимального потока и леммы следует основная теорема о потоках в сетях:

Теорема Форда – Фалкерсона. Для всякой сети существуют поток и разрез такие, что величина потока равна пропускной способности разреза: В этом случае поток максимальный.

Соседние файлы в папке Прокофьевская книга по дискретке