Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 2.doc
Скачиваний:
13
Добавлен:
01.12.2018
Размер:
3 Мб
Скачать
☆

§ 2.6. Задачі про максимальний потік на мережі та про мінімальний розріз мережі

Розглянемо одну важливу часткову задачу на мережі з єдиним джерелом та єдиним витоком.

Вершину-джерело мережі позначимо , а вершину-витік літерою . Всі інші вершини (нейтральні) пронумеруємо числами . Нехай інтенсивність джерела . Інтенсивності нейтральних вершин дорівнюють нулю (). Згідно з умовою (2.4.3) існування потоку на мережі, інтенсивність витоку .

Як і раніше, множину вершин графа позначатимемо , множину дуг – , – пропускна здатність дуги . Значення (“ефективності” дуг) в задачі не використовуватимуться.

Для такої мережі множина дійсних чисел є потоком, якщо

, (2.6.1)

, (2.6.2)

, (2.6.3)

, . (2.6.4)

Не при всяких значеннях та існує розв’язок системи співвідношень (2.6.1) – (2.6.4), бо може не виконуватись умова (2.4.4).

Поставимо задачу про визначення такого найбільшого значення інтенсивності джерела , при якому цей розв’язок існує (пропускні здатності задані). Таке число називається величиною максимального потоку, а відповідний потік, тобто розв’язок системи рівнянь

(2.6.5)

який задовольняє умови

, ,

називається максимальним потоком на мережі. Цей розв’язок (максимальний потік) позначатимемо

.

Число називається компонентою максимального потоку, відповідною дузі .

Поставлену задачу можна інтерпретувати так.

Нехай у пункті (джерело) виробляється деяка продукція обсягом . Вироблену продукцію потрібно, використовуючи мережу комунікацій (дуг ), доставити в пункт (витік), враховуючи пропускні здатності комунікацій (комунікації – це шляхи, трубопроводи тощо). Нейтральні вершини – це пункти технологічного обслуговування вантажу (перевалочні пункти, пункти зміни виду транспортних засобів, перекачуючі насосні станції). Ставиться задача про максимальну кількість вантажу, яку можна доставити по транспортній мережі від джерела до витоку .

Поставлена задача тісно пов’язана з так званою задачею про мінімальний розріз мережі.

Нехай – деяка підмножина вершин мережі, яка містить джерело , але не містить витоку . Комунікації мережі (дуги), початок яких належить , а кінець не належить , утворюють розріз мережі, зумовлений множиною . Позначимо множину цих дуг (дуг, які утворюють розріз). Сума пропускних здатностей дуг, які входять у розріз , називається пропускною здатністю розрізу.

.

Мінімальним розрізом мережі називається такий розріз , що

.

Задача про визначення максимального потоку і задача про визначення мінімального розрізу є взаємно двоїстими. Нескладно довести [12], що

,

тобто величина максимального потоку чисельно збігається із пропускною здатністю мінімального розрізу.

Цей факт дуже важливий. Він означає, що збільшити величину максимального потоку (максимальний об’єм перевезень від джерела до витоку ) можна лише шляхом збільшення пропускних здатностей комунікацій, які входять у мінімальний розріз. Збільшення ж пропускних здатностей комунікацій, які не входять у мінімальний розріз, не приведе до збільшення величини потоку.

Ефективний метод визначення максимального потоку на мережі і мінімального розрізу мережі запропонували Форд (Ford L.R.) і Фалкерсон (Fullkerson D.R.). У літературі цей метод названо методом Форда-Фалкерсона.

Суть його полягає в тому, що за допомогою спеціальної процедури розстановки відміток вершин мережі здійснюється процес збільшення величини деякого заданого потоку на мережі або встановлюється, що заданий потік максимальний. Якщо знайдено максимальний потік, то зразу ж можна легко визначити мінімальний розріз.

Як початковий можна використати нульовий потік , , де всі .

Нехай задано деякий початковий потік величиною .

Побудуємо множину вершин мережі за правилами:

1) ; (2.6.6)

2) вершина , якщо , , , ; (2.6.7)

3) вершина , якщо , , , . (2.6.8)

Кожній вершині ставимо у відповідність подвійну відмітку за правилами:

    1. джерелу ставиться у відповідність відмітка ;

    2. вершині ставиться у відповідність відмітка , де , , якщо вершина включена у за правилом (2.6.7);

    3. вершині ставиться у відповідність відмітка , де , , якщо вершина включена у за правилом (2.6.8).

Кожна вершина відмічається один раз. Побудову множини і відміток її вершин ведуть доти, поки в не буде включено витік і поставлено йому у відповідність відмітку .

Якщо витік включено в , то, використовуючи відмітки, легко визначити ланцюг дуг, який з’єднує джерело з витоком. Зауважимо, що в цьому ланцюгу можуть бути дуги, напрямлені від витоку до джерела. Це дуги, початок яких відмічено від’ємним .

Будуємо новий потік:

, якщо дуга не входить у побудований ланцюг;

, якщо дуга входить у побудований ланцюг, причому у відмітках кінців цих дуг ;

, якщо дуга входить у побудований ланцюг, причому у відмітках кінців цих дуг .

Неважко переконатися, що множина є потоком на мережі, а його величина . Оскільки , величина потоку зросла на .

Використовуючи потік , за правилами (2.6.6) – (2.6.8) будують множину і кожній вершині ставлять у відповідність нові відмітки.

Процес продовжують доти, поки на деякому кроці стає неможливим включити витік у множину відмічених вершин.

Доведено [7],[12], що у цьому випадку потік є максимальним потоком величиною , а розріз є мінімальним розрізом мережі.

Розглянемо приклад визначення максимального потоку і мінімального розрізу мережі.

Нехай мережа задається таблицями

Дуги

(1,2)

(1,3)

(1,4)

(2,5)

(2,6)

(3,7)

(4,5)

4

4

3

1

3

4

1

Дуги

(4,7)

(5,3)

(5,6)

(5,8)

(6,7)

(6,8)

(7,8)

1

2

1

2

3

3

7

Оскільки граф містить всього 8 вершин і 14 дуг, то для унаочнення будемо його зображати. Вершини позначатимемо кругами, вписуючи в крузі номер вершини. Біля кожної дуги у квадратику виписуватимемо її пропускну здатність і поруч – значення відповідної компоненти потоку. Відмітки вершини будемо виписувати біля самих вершин. Для заданої мережі джерелом є вершина 1, а витоком – 8.

Нехай задано деякий початковий потік . Значення випишемо в другому рядку таблиць

Дуги

(1,2)

(1,3)

(1,4)

(2,5)

(2,6)

(3,7)

(4,5)

4

3

1

1

3

4

0

Дуги

(4,7)

(5,3)

(5,6)

(5,8)

(6,7)

(6,8)

(7,8)

1

1

0

0

1

2

6

Легко підрахувати, що . Зобразимо мережу

Джерелу 1 ставимо відмітку . Від 1 до 3 додатково можна ставити вантажу. Тому вершині 3 ставимо відмітку .

Вершину 5 можна включити в по дузі згідно з пунктом (2.6.8). Тому цій вершині ставимо у відповідність відмітку . Вершину 2 помічаємо відміткою . Витік 8 можна включити у згідно з (2.6.7), використовуючи дугу . Тому відмітка витоку – , вершина 7 – , вершина 4 – .

Згідно з помітками, джерело з витоком з’єднує ланцюг із дуг , , . .

Переходимо до нового потоку за правилами його побудови:

, якщо дуга не входить у побудований ланцюг;

, , .

Отримуємо нові таблиці

Дуги

(1,2)

(1,3)

(1,4)

(2,5)

(2,6)

(3,7)

(4,5)

4

4

1

1

3

4

0

Дуги

(4,7)

(5,3)

(5,6)

(5,8)

(6,7)

(6,8)

(7,8)

1

0

0

1

1

2

6

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

Зобразимо мережу з новим потоком і побудуємо відмітки вершин. Виявляється, що знову всі вершини можна розмітити, а отже, збільшити величину потоку.

За відмітками утворюємо ланцюг , , , який з’єднує джерело з витоком. При цьому . Будуємо новий потік, збільшуючи його величину на .

, якщо дуга не належить ланцюгу;

, , .

Маємо

Дуги

(1,2)

(1,3)

(1,4)

(2,5)

(2,6)

(3,7)

(4,5)

4

4

2

1

3

4

1

Дуги

(4,7)

(5,3)

(5,6)

(5,8)

(6,7)

(6,8)

(7,8)

1

0

0

2

1

2

6

При цьому .

Знову будуємо мережу і знаходимо відмітки вершин, використовуючи значення компонент нового потоку .

Вдається розмітити лише дві вершини 1 та 4. Витік 8 не відмічений. Отже, знайдений потік максимальний. Його величина . Множина вершин зумовлює мінімальний розріз , який складається з дуг , , , .

.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]