Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділи 1-3.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
4.06 Mб
Скачать

2.5.3. Потоки в мережах

Надалі, щоб відрізнити орієнтований граф від мережі, позначатимемо мережу .

Визначення 2.14. Потоком в мережі називається цілочислова функція визначена на .

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

Величину інтерпретують як постійну швидкість потоку однорідної речовини через дугу . Напрям потоку визначається знаком з врахуванням наведених вище умов.

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

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

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

Згрупуємо вершини мережі в множини:

, , .

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

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

Нехай і — потоки в одній і тій же мережі , а p — ціле число. Тоді для кожної дуги потоки , і визначаються за допомогою співвідношень:

, .

Будемо писати тоді і тільки тоді, коли .

Кажуть, що потік обмежений значеннями і , якщо для кожної дуги мережі.

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

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

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

Визначимо функцію на наступним чином:

На рисунку 2.8 зображений простий ланцюг С, орієнтований з у , орієнтований простий цикл S і відповідні функції і .

Рис.2.8.

Якщо C – простий ланцюг, який з’єднує v і w і орієнтований від v до w, то є потоком із v до w, величина якого дорівнює 1. Цей потік називається простим потоком в ланцюзі з v в w. Аналогічно, якщо S — цикл орієнтований в одному з двох напрямків, то — потік в , величина якого рівна нулю, називається простим потоком по циклу. Потоки цих двох типів (і тільки цих) називаються простими потоками.

Визначення 2.16. Мережа називається мережею з обмеженою пропускною здатністю, якщо на визначені дві функції і , які приймають цілочислові значення, причому для всіх .

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

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

Якщо і — допустимі потоки, а — будь-який потік, обмежений потоками і , то також є допустимим.

Р озглянемо мережу, зображену на рисунку 2.9.

а)

б)

в)

г)

Рис.2.9.

Наша мета — максимізувати потік з v в w. Очевидно, що максимальна довжина потоку не може бути менша ніж 5 одиниць. Виберемо ланцюг v, у, х, w і припишемо кожній дузі потік величиною 2. Решти дугам припишемо потоки рівні нулю. Отримаємо потік, зображений на рисунку 2.9 б). Візьмемо тепер ланцюг v, х, z, w і припишемо одиничний потік кожній із його дуг. Додавши новий потік до попереднього, отримаємо потік, зображений на рисунку 2.9.в), з трьома насиченими дугами. Єдиний спосіб, з допомогою якого можна збільшити величину потоку з v в w, полягає в тому, щоб відмовитись від раніше прийнятого рішення пропустити потік від у до х. Додамо потік величини 2 в ланцюг v, х, у, z, w. Одержаний в результаті потік, показаний на рисунку 2.9 г) і його величина є максимальною.

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

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

Припустимо, що – задана мережа з обмеженнями і на пропускні здатності дуг. Нехай на ній задана функція , яка приймає дійсні значення і кожній дузі ставить у відповідність одиничну вартість . Якщо – довільний допустимий потік, то загальна вартість потоку позначається і визначається із співвідношення . Якщо , то можна інтерпретувати як вартість переміщення одиниці потоку з в по дузі . Тоді – сумарна вартість потоку в мережі.

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

Розглянемо спочатку транспортні мережі (для них ). Основна задача запишеться так: для заданої транспортної мережі і функції вартості знайти допустимий потік з в , величина якого рівна і вартість мінімальна.

Д ля мережі

знайти допустимий потік мінімальної вартості. Перші цифри визначають вартість потоків на дугах, другі – пропускні здатності цих дуг.

Весь обчислювальний процес зображатимемо на рисунку 2.10.

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

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

3

B

5

B

B

Рис. 2.10.

В загальному випадку знайдено чотири потоки на ланцюгах, які мають величини 5, 2, 3 і 1 відповідно. Кінцевий потік величиною 11 одиниць, очевидно буде максимальним, оскільки обидві дуги вже насичені.

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

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

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

Слід зауважити, що хоча ми обійшлися без побудови потоків величини 1, 2, 3, 4, 6, 8 і 9 в розглянутому вище прикладі, такі потоки мінімальної вартості можна отримати. Наприклад, для одержання потоку мінімальної вартості величини 8 ми повинні додати до потоку одну одиницю потоку по ланцюгу, який використовується для побудови .