- •Г 55 Математичне програмування: Навчальний посібник. – Львів: Вид-во лка, 2004. – 240 с.
- •Передмова
- •Типова програма
- •Предмет і задачі математичного програмування деякі задачі управління і планування
- •Розділ 1. Лінійне програмування (лп)
- •Форми запису задач лп
- •1.2. Геометрична інтерпретація злп. Графічний метод розв’язування
- •Контрольні запитання та задачі
- •1.3. Опорні плани злп
- •Контрольні запитання та задачі
- •1.4.1. Загальні положення см
- •1.4.2. Алгоритм см у формі тотожних перетворень
- •1.4.3. Табличний запис злп. Алгоритм см для злп, представлених в симетричній формі.
- •Алгоритм см для злп, представлених в загальному виді
- •Контрольні запитання та задачі
- •1.5.1. Загальні зауваження
- •1.5.2. Теореми двоїстості. Економічний зміст оптимальних планів пари дз
- •1.5.3. Двоїстий см
- •Контрольні запитання та задачі
- •1. 6. Транспортна задача(тз)
- •1.6.1. Постановка тз. Відкрита і закрита моделі
- •1.6.2. Методи побудови опорного плану тз
- •Метод потенціалів для перевірки оптимальності плану тз
- •Контрольні запитання та задачі
- •1.7. Цілочислове програмування
- •1.7.1. Постановка задачі цілочислового програмування (зцлп)
- •Метод відтинаючих площин
- •Метод гілок і границь
- •1.7.4. Алгоритм Гоморі
- •Контрольні запитання та задачі
- •Розділ 2. Графи і мережі
- •2.1. Загальні поняття
- •2.2 Неорієнтовані графи
- •2.3. Орієнтовані графи
- •2.4. Матричне представлення графів
- •2.5 Мережі
- •2.5.1. Мінімізація мережі
- •2.5.2.Задача про найкоротший шлях
- •2.5.3. Потоки в мережах
- •Контрольні запитання та задачі
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 ми повинні додати до потоку
одну одиницю потоку по ланцюгу, який
використовується для побудови
.
