Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник_Дослідження_операцій.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.51 Mб
Скачать

2.7 Задача про максимальну течію в мережі

Означення.

  1. Розбивальна множина зв’язного графа – це така множина його ребер, вилучення яких призводить до незв’язного графа.

  2. Розрізом називається така розбивальна множина, для якої ніяка власна підмножина не є розбивальною множиною.

Наприклад. Маємо граф

Розглянемо такі розбивальні множини його ребер:

  1. {u1, u2, u5};

  2. {u3, u6, u7, u8};

  3. {u1, u2}.

З цих розбивальних множин розрізом будуть лише {u1, u2} і {u3, u6, u7, u8}.

Розглянемо орієнтований граф, де вага дуги сij > 0 – це пропускна спроможність дуги.

Пропускна спроможність розрізу – це сума пропускних спроможностей дуг, що утворюють розріз.

Мінімальний розріз – це розріз з мінімальною пропускною спроможністю.

Приклад. Маємо орієнтований граф

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

Розріз R1: (1,4), (2,4), (3,4)

с14=1 с24= 4 с34=2.

Пропускна спроможність розрізу R1 дорівнює 1+ 4 + 2 = 7.

Розріз R2: (1,2), (1,4), (1,3)

с12=3 с14=1 с13= 5.

Пропускна спроможність розрізу R2 дорівнює 3 + 1+ 5 = 9.

Розріз R3: (1,2), (1,4), (2,3), (3,2), (3,4)

с12=3 с14=1 с23= 3 с32= 4 с34= 2.

Пропускна спроможність розрізу R3 дорівнює 3 + 1+ 3 + 4 + 2 = 13.

Розріз R4: (1,3), (3,2), (2,3), (1,4), (2,4)

с13=5 с32= 4 с23= 3 с14=1 с24= 4.

Пропускна спроможність розрізу R4 дорівнює 5 + 4 + 3 +1 + 4 = 17.

Дамо деякі означення.

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

  2. Дуга називається ненасиченою, якщо течія через неї менше її пропускної спроможності, тобто fij < cij.

  3. Дуга називається насиченою, якщо fij = cij.

Будемо вважати, що в мережі задано течію, якщо:

  1. для будь–якої проміжної вершини (не початкової і не завершальної) кількість продукту, що надійшла і що відправляється, рівні;

  2. кількість продукту, що відправляється з початкової вершини (джерела) дорівнює кількість продукту, що прибув у завершальну вершину.

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

Величина течії в одній і тій же мережі може бути різною.

Наприклад, розглянемо орієнтований граф

  1. f12 = 5

Таким чином, через даний граф пройшла течія, що дорівнює 5 одиниць продукту: f = 5.

2) f12 = 5

f14 = 2 .

Таким чином, через даний граф пройшла течія, що дорівнює f = 3 + 2 + 2 = 7 одиниць продукту.

3) f13 = 3 ,

f12 = 5 ,

f14 = 2 .

Таким чином, через даний граф пройшла течія, що дорівнює

f = 3 + 5 + 2=10 одиниць продукту.

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

Теорема Форда – Фалкерсона.

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

Введемо в розгляд деякі поняття.

Дуги графа можна віднести до двох категорій:

- дуги, в яких течію можна збільшити, − це ненасичені дуги, їх об’єднаємо в множину І – множина ненасичених дуг;

- дуги, в яких течію можна зменшити, − це невільні дуги, їх об’єднаємо

в множину R – множина обернених дуг.

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

Дуга може належати і множині І, і множині R одночасно.

Введемо в розгляд величини:

  1. і(х,у) =сху - fxy − це максимальна величина, на яку можна збільшити течію в дузі.

На рисунку маємо ланцюг, що збільшує, він містить прямі дуги (1,2), (2,3), (3,4). Течію з вершини 1 в вершину 4 можна збільшити на min(i(1,2), i(2,3), i(3,4)) = min (3;2;1) = 1;

2) r(x,y) − максимальна величина, на яку можна зменшити течію в дузі

На рисунку маємо ланцюг, що збільшує, який містить обернені дуги. Зменшення течії з вершини 4 до вершини 1 приводить до збільшення течії з вершини 1 до вершини 4. У мережі на рисунку течія з вершини 4 у вершину 1 може бути зменшена на min(r (2,1), r (3,2), r (4,3)) = min (1;2;1) = 1, і тим самим течію з вершини 1 у вершину 4 збільшимо на 1.

Сформулюємо алгоритм пошуку ланцюга, що збільшує.

Крок І Визначимо склад множин І і R. Зафарбуємо початкову вершину.

Крок ІІ Будемо зафарбовувати дуги і вершини відповідно до наведених нижче правил доти, поки або не буде зафарбована кінцева вершина, або

фарбування нових вершин стане неможливим.

Правило фарбування.

Якщо вершина х зафарбована, тоді фарбування вершини у і дуги (х,у) відбувається таким чином:

а) якщо дуга (х,у) І, то зафарбовується вершина у і дуга (х,у)

(х,у) І;

б) якщо дуга (у,х) R, тоді зафарбовується вершина у і дуга (у,х)

в) інших випадках вершина у і дуга (х,у) не фарбуються.

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

Зауваження.

Дуга фарбується лише тоді, коли одна з її вершин зафарбована, а інша ні. Отже не може бути зафарбована дуга, обидві вершини якої були раніше зафарбовані. Тому зафарбовані дуги не можуть утворювати цикл. Зафарбовані дуги утворюють дерево. Якщо зафарбовується кінцева вершина, то існує ланцюг з початкової вершини в кінцеву. Це і буде ланцюг, що збільшує, оскільки процедура фарбування гарантує, що прямі дуги цього ланцюга збільшують, а обернені – зменшують течію в мережі.

Далі розглянемо алгоритм пошуку максимальної течії у графі.

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

Крок І Беремо будь-яку початкову течію з початкової до кінцевої вершини, наприклад, нульову.

Крок ІІ Сформуємо множини дуг І і R. На цих множинах застосуємо алгоритм пошуку ланцюга, що збільшує.

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

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

    1. Пропустимо через всі дуги мережі нульову течію.

    2. Всі дуги мережі відносяться до множини І. Розглянемо ланцюг, що збільшує

(1,2), (2,3), (3,5)

і(1,2) = 2 – 0 = 2 і(2,3) = 3 – 0 = 3 і(3,5) = 2 - 0 =2.

Через цей ланцюг можна пропустити течію, що дорівнює min( 2;3;2) = 2.

Течія в дугах даного ланцюга збільшується на дві одиниці.

Повертаємось до кроку ІІ.

    1. Знову шукаємо ланцюг, що збільшує. Зауважимо, що дуги (1,2) і (3,5) належать до множини R. Розглянемо ланцюг

(1,3), (2,3), (2,4), (4,5)

І R І І

і(1,3) = 3 – 0 = 3 r(2,3) = 2 і(2,4) = 4 - 0 = 4 і(4,5) = 1 - 0 = 1.

Тепер течія через мережу буде дорівнювати 2 + 1 = 3.

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

Далі розглянемо метод знаходження максимальної течії в неорієнтованому графі.

Маємо неорієнтований граф.

    1. По Av1v2B можна пропустити течію, що дорівнює min(5,2,6) = 2. Ребро з мінімальною спроможністю (v1,v2) вилучається, із решти пропускних спроможностей віднімаємо число 2.

    1. По Av3v4B можна пропустити течію, що дорівнює min(2,3,2) = 2. Повторюємо процедуру пункту 1.

    1. По Av4v2B можна пропустити течію, що дорівнює min(3,4,4) = 3. Тоді одержуємо:

Шляхів із А в В немає. Течія із А в В дорівнює 2 + 2 + 3 = 7.

Питання для самоперевірки

  1. Сформулюйте означення графа.

  2. Сформулюйте означення орієнтованого та неорієнтованого графа.

  3. Сформулюйте означення маршруту у графі.

  4. Сформулюйте означення ланцюга, ланцюга простого, цикла, простого цикла, шляха, контура у графі.

  5. Який граф називається ейлеровим, гамільтоновим?

  6. Що таке матриця суміжності вершин графа?

  7. Що таке матриця суміжності ребер (дуг графа)?

  8. Що таке матриця інцидентності графа?

  9. Дайте означення остовного дерева графа.

  10. Як підрахувати число остовних дерев графа?

  11. Сформулюйте алгоритм побудови остовного дерева графа, остовного дерева максимальної та мінімальної довжини.

  12. Сформулюйте алгоритм Дейкстри побудови найкоротшого шляху в графі.

  13. Сформулюйте метод поміток побудови найкоротшого та найдовшого шляху в графі.

  14. Дайте означення мережевого графа.

  15. Сформулюйте правила, яких необхідно дотримуватись при побудові мережевого графа.

  16. Як на мережевому графі відображаються роботи (операції проекта)?

  17. Що таке найбільш ранній і найбільш пізній термін настання події?

  18. Як їх обчислити?

  19. Що таке повний, вільний та незалежний резерв часу операції? Чи є зв’язок між ними?

  20. Що таке критична операція?

  21. Що таке критичний шлях у мережевому графі?

  22. Дайте означення розбивальної множини графа та розрізу графа.

  23. Що таке пропускна спроможність розрізу? Що таке мінімальний розріз?

  24. Дайте означення течії по дузі.

  25. Яка дуга називається насиченою, ненасиченою, вільною?

  26. Сформулюйте задачу про максимальну течію в графі.

  27. Сформулюйте теорему Форда-Фалкерсона.

  28. Сформулюйте алгоритм пошуку ланцюга, що збільшує.

  29. Сформулюйте алгоритм пошуку максимальної течії у графі.

Задачі для самостійної роботи

1 М аємо граф

Побудувати матриці суміжності вершин графа, дуг графа і матрицю інцидентності орграфа.

2 Маємо граф

Побудувати матриці суміжності вершин і ребер не орграфа.

  1. За матрицею інцидентності відновити граф.

S=

  1. Маємо граф

Для цього графа:

а) обчислити кількість остовних дерев графа;

б) побудувати остовне дерево графа, мінімальне остовне дерево і максимальне остовне дерево;

5 Маємо граф

Для цього графа обчислити:

а) найкоротший шлях методом Дейкстри;

б) найкоротший та найдовший шлях методом поміток;

в) максимальну течію в графі.

6 Маємо проект будівництва спортивної споруди (за нижеподаною таблицею).

Етап

Робота, що виконується

Попередній етап

Потрібний час (тиж)

А

Підготовка будмайданчика

-

1

Б

Побудова фундаменту

А

3

В

Підводка магістральних ліній електро- і водопостачання

А

2

Г

Монтаж вертикальних стін

Б

4

Д

Монтаж стріха

Г

2

Е

Укладання дерев’яних перекриттів

Г

2

Ж

Установка дверей та вікон

Г

1

З*

Монтаж електрообладнання

Д

1

І

Монтаж системи опалення

В, Г

1

К

Установка сантехніки

В, Г

1

Л

Оздоблювальні роботи

З*, І, К

3

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