- •Розділ 2. Транспортна задача. Найпростіші задачі на мережах
- •§ 2.1. Транспортна задача. Основні властивості
- •§ 2.1. Методи визначення початкового допустимого плану
- •§ 2.3. Метод потенціалів розв’язування транспортної задачі
- •§ 2.4. Поняття про мережу. Загальна оптимізаційна задача на мережі
- •Потоком на мережі називається така множина дійсних чисел , що
- •2) Для будь-якої підмножини вершин мережі
- •§ 2.5. Задача про визначення найкоротшого шляху. Метод Мінті
- •§ 2.6. Задачі про максимальний потік на мережі та про мінімальний розріз мережі
- •Контрольні запитання та завдання
§ 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)
Кожній
вершині
ставимо у відповідність подвійну
відмітку
за правилами:
-
джерелу
ставиться у відповідність відмітка
; -
вершині
ставиться у відповідність відмітка
,
де
,
,
якщо вершина
включена у
за правилом (2.6.7); -
вершині
ставиться у відповідність відмітка
,
де
,
,
якщо вершина
включена у
за правилом (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 не відмічений. Отже, знайдений потік
максимальний. Його величина
.
Множина вершин
зумовлює мінімальний розріз
,
який складається з дуг
,
,
,
.
.
Збільшення
потоку можна добитися, лише збільшуючи
пропускні здатності дуг, які належать
.
Збільшення пропускних здатностей інших
дуг не приведе до збільшення величини
потоку.
