Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ДМ.doc
Скачиваний:
25
Добавлен:
16.11.2019
Размер:
3.29 Mб
Скачать

4.5.3 Алгоритм Форда и Фалкерсона нахождения максимального потока транспортной сети

Основан на теореме Форда и Фалкерсона:

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

Алгоритм Форда и Фалкерсона:

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

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

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

=

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

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

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

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

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

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

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

Примечание 1. Если в найденном пути номера индексов совпадают, то вторую вершину можно опустить, перейдя непосредственно к меньшему индексу, что не приведёт к изменению потока. Таким образом, - максимальный поток. Дальнейшее увеличение возможно только при увеличении пропускной способности дуг.

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

Пример нахождения максимального потока

Дана транспортная сеть (рисунок 4.8). Найти для нее максимальный поток.

3

x2 (9) x3

3 4

(6) 2 (9)

x0 (4) z

(7) (5)

4 x1 (3) x4 3

2

Рисунок 4.8 – Транспортная сеть

Таблица 4.5 – Первый этап решения задачи

xi

0

(0+,)

1

(0+,3)

2

(0+,3)

3

(2+,3)

4

(3+,3)

5

(3+,3)

6

x2 (9) x3

6 7

(6) 2 (9)

x0 (4) z

(7) 2 (5)

4 x1 (3) x4 3

Рисунок 4.9 – Транспортная сеть после первого этапа

Таблица 4.6 – Второй этап решения задачи

xi

0

(0+,)

1

(0+,3)

2

---

3

(1+,2)

4

(1+,1)

5

(4+,1)

6

x2 (9) x3

7

2 (9)

x0 (4) z

(7) (5)

5 x1 (3) x4 4

Рисунок 4.10 – Транспортная сеть после второго этапа

Таблица 4.7 – Третий этап решения задачи

xi

0

(0+,)

1

(0+,2)

2

---

3

(1+,2)

4

(3+,2)

5

(3+,2)

6

x2 (9) x3

9

4 (9)

x0 (4) z

(7) (5)

7 x1 x4 4

Рисунок 4.11 – Транспортная сеть после третьего этапа

Максимальный поток: 3+1+2=6.