- •Лекція 2-3 Застосування методів теорії графів для розв’язання типових задач оптимізації мереж поштового зв’язку
- •2.1. Основні поняття теорії графів
- •2.2. Задача побудови найкоротшої мережі перевезень пошти
- •2.3. Задача побудови найкоротших радіальних маршрутів між вузлами мережі перевезень пошти
- •2.4. Задача побудови найкоротших кільцевих маршрутів між вузлами мережі перевезень пошти
- •2.5. Задача побудови маршруту листоноші
- •2.6. Задача визначення максимальних потоків між вузлами мережі перевезень пошти
Лекція 2-3 Застосування методів теорії графів для розв’язання типових задач оптимізації мереж поштового зв’язку
2.1. Основні поняття теорії графів
Графом G (X,Y) називається подання заданої множини об’єктів
X = {x1, x2, …, xn}
і заданої множини зв’язків між ними
Y = {y1, y2, …, ym}
у виді відповідної множини точок і відповідної множини ліній, що ці точки з’єднують.
Точки графа називаються його вершинами, а лінії – дугами, якщо їхні напрямки визначені, або ребрами, якщо ці напрямки не визначені.
Граф, що містить лише дуги, називається орієнтованим; граф, що містить лише ребра – неорієнтованим; граф, що містить як дуги, так і ребра – змішаним.
У подальшому тексті вершини графа позначені їхніми послідовними номерами (1, 2, 3 і т.д.), а дуги або ребра – значеннями номерів вершин, які вони з’єднують.
У позначеннях дуг (і, j) перші елементи визначають вершини, з яких відповідні дуги починаються, а другі – в яких вони закінчуються.
У позначеннях ребер порядок подання елементів може бути довільним, тобто можна писати (і, j), можна ( j, і).
На рис. 2.1. наведений приклад змішаного графа G (X,Y), в якому
n = 5, m = 7.
1 2
3
4 5
Рисунок 2.1. Приклад змішаного графа
Вершинами графа рис. 2.1 є X = {1, 2, 3, 4, 5}, дугами (ребрами) –
Y= {(1, 2), (2, 5), (3, 2), (3, 4), (3, 5), (4, 1), (4, 5)}.
Вершинам або дугам (ребрам) графа можуть бути надані ваги, що визначають ті чи інші характеристики:
пропускну спроможність,
протяжність,
час просування,
вартість перевезення,
надійність тощо.
Граф, вершинам або дугам (ребрам) якого надані ваги, називається зваженим.
Послідовність вершин або дуг (ребер), що веде з вершини р до вершини s безпосередньо або через проміжні вершини, називається шляхом з вершини р до вершини s.
Граф, в якому існують шляхи між будь-якими його вершинами, називається зв’язним.
Граф, в якому існують вершини, між якими немає шляхів, називається незв’язним.
Дуга (ребро) (р, р), що починається і закінчується в вершині р, називається петлею.
Шлях, що починається і закінчується в вершині р, називається циклом.
Граф, в якому відсутні петлі і цикли, називається деревом. Дерево – це граф з мінімальним числом дуг (ребер), яке дорівнює числу його вершин, зменшеному на одиницю.
Граф, в якому існують дуги (ребра) між кожною парою його вершин, називається повним або повнозв’язним.
2.2. Задача побудови найкоротшої мережі перевезень пошти
Задача формулюється так: заданий початковий зв’язний зважений граф, вершини якого відповідають вузлам мережі перевезень пошти, ребра – шляхам, що з’єднують ці вузли, а ваги ребер – протяжностям відповідних шляхів. Побудувати новий зв’язний зважений граф, сукупність вершин якого співпадає, а сукупність ребер є частиною сукупності ребер початкового графа, за умови, що сумарна вага ребер нового графа мінімальна.
Очевидно, що новий граф є дерево, отже йдеться про побудову дерева з мінімальною сумарною вагою ребер.
Алгоритм побудови такого дерева заснований на формуванні фрагментів, що являють собою частини зазначеного дерева. Ребра графа повинні перевірятися в порядку зростання їх ваги (ребра зі співпадаючими вагами можуть перевірятися в довільному порядку).
У залежності від того, як співвідносяться кінцеві вершини перевірного ребра з іншими вершинами графа, можливі 4 випадки.
Випадок 1: формування нового фрагмента.
У цьому випадку жодна з кінцевих вершин перевірного ребра не належить жодному з раніше сформованих фрагментів. Новий фрагмент формується з перевірного ребра й обох його кінцевих вершин.
Випадок 2: розширення існуючого фрагмента.
У цьому випадку перша кінцева вершина перевірного ребра належить деякому раніше сформованому фрагменту, а друга – не належить жодному фрагменту. Розширений фрагмент формується з раніше сформованого фрагмента, перевірного ребра та його другої кінцевої вершини.
Випадок 3: об’єднання двох раніше сформованих фрагментів.
В цьому випадку перша кінцева вершина перевірного ребра належить одному раніше сформованому фрагменту, а друга – іншому. Об’єднаний фрагмент формується з обох зазначених раніше сформованих фрагментів та перевірного ребра.
Випадок 4: збереження раніше сформованих фрагментів.
У цьому випадку обидві кінцеві вершини перевірного ребра належать деякому раніше сформованому фрагменту. Перевірне ребро не включається до складу жодного з фрагментів.
Процес перевірки ребер закінчується, коли всі вершини графа увійдуть в один фрагмент, або коли загальна кількість ребер, що увійшла в зазначений фрагмент, дорівнює числу вершин графа, зменшеному на одиницю.
Алгоритм побудови графа з мінімальною сумарною вагою ребер наведений на рис. 2.2.
Алгоритм містить 10 блоків.
У блоці 1провадиться введення в довільному порядку переліку ребер початкового графа з зазначенням їх ваг.
У блоці 2здійснюється вибір чергового перевірного ребра мінімальної ваги згідно з будь-яким алгоритмом пошуку мінімального числа.
У блоці 3з переліку ребер початкового графа виключається перевірне ребро для запобігання його повторного вибору.
У блоці 4перевіряється умова формування нового фрагмента (випадок 1). В разі виконання умови – перехід до блоку 5, в разі невиконання – до блоку 6.
У блоці 5провадиться формування нового фрагмента.
У блоці 6перевіряється умова розширення існуючого фрагмента (випадок 2). В разі виконання умови – перехід до блоку 7, в разі невиконання – до блоку 8.
У блоці 7провадиться формування розширеного фрагмента.
У блоці 8перевіряється умова об’єднання двох існуючих фрагментів (випадок 3). В разі виконання умови – перехід до блоку 9, в разі невиконання – до блоку 10.
У блоці 9провадиться формування об’єднаного фрагмента.
У блоці 10перевіряється умова закінчення формування графа. В разі невиконання умови – повернення до блоку 2, в разі виконання – закінчення роботи алгоритму.
Зазначимо, що оскільки перевірка будь-якого ребра завжди призводить до одного з чотирьох зазначених випадків, достатньо перевірити умови виконання лише трьох з них, тому в наведеному алгоритмі умова виконання випадку 4 не перевіряється.
Початок
1. Введення переліку
ребер початкового
графа
2. Вибір чергового перевірного
ребра мінімальної ваги
3. Виключення перевірного
ребра з переліку ребер
початкового графа
4. Жодна
з кінцевих вершин Так 5. Формування нового фрагмента з
перевірного ребра не належить перевірного ребра і двох його
жодному фрагменту кінцевих вершин
Ні
6. Перша
кінцева вершина 7. Включення перевірного ребра
перевірного ребра належить Так і його другої кінцевої вершини
деякому фрагменту, а друга - не до фрагмента, якому належить
належить жодному перша кінцева вершина зазначе-
фрагменту ного ребра
Ні
8. Перша
кінцева вершина пере- 9. Формування об’єднаного
вірного ребра належить одному Так фрагмента з перевірного ребра
фрагменту, а друга - іншому і двох фрагментів, яким належать
фрагменту його кінцеві вершини
Ні
10. Всі
Ні вершини графа
увійшли в один фрагмент
Так
Кінець
Рисунок 2.2. Алгоритм побудови графа з мінімальною сумарною вагою ребер
Наведемо приклад побудови найкоротшої мережі перевезень пошти. Граф початкової мережі зображений на рис. 2.3. Біля ребер графа зазначені їх ваги.
2 5
3
4 4 3
1 1 3 3 6 2 8
4 2 4 1 4
4 3 7
Рисунок 2.3. Граф початкової мережі
У табл. 2.1 наведений перелік ваг ребер початкового графа.
Таблиця 2.1. Перелік ваг ребер початкового графа
Ребро |
(1,2) |
(1,3) |
(1,4) |
(2,5) |
(2,6) |
(3,4) |
(3,6) |
(4,6) |
(4,7) |
(5,8) |
(6,7) |
(6,8) |
(7,8) |
Вага |
4 |
1 |
4 |
3 |
4 |
2 |
3 |
4 |
3 |
3 |
1 |
2 |
4 |
У табл. 2.2 наведено послідовність кроків формування графа з мінімальною сумарною вагою ребер
Таблиця 2.2. Послідовність кроків формування графа з мінімальною сумарною вагою ребер
Крок |
Перевірне ребро |
Вага перевірного ребра |
Вершини | ||
Фрагмент 1 |
Фрагмент 2 |
Фрагмент 3 | |||
1 |
(1,3) |
1 |
1,3 |
|
|
2 |
(6,7) |
1 |
1,3 |
6,7 |
|
3 |
(3,4) |
2 |
1,3,4 |
6,7 |
|
4 |
(6,8) |
2 |
1,3,4 |
6,7,8 |
|
5 |
(2,5) |
3 |
1,3,4 |
6,7,8 |
2,5 |
6 |
(3,6) |
3 |
1,3,4,6,7,8 |
|
2,5 |
7 |
(4,7) |
3 |
1,3,4,6,7,8 |
|
2,5 |
8 |
(5,8) |
3 |
1,3,4,6,7,8,2,5 |
|
|
Усього для формування графа з мінімальною сумарною вагою ребер знадобилось 8 кроків, при чому крок 7 (перевірка ребра (4,7)) виявився зайвим.
На рис. 2.4 наведений граф, на якому жирними лініями виділене дерево з мінімальною сумарною вагою ребер.
2 5
3
4 4 3
1 1 3 3 6 2 8
4 2 4 1 4
4 3 7
Рисунок 2.4. Дерево з мінімальною сумарною вагою ребер.
В наведеному прикладі сумарна вага ребер початкового графа складає 38, а дерева з мінімальною сумарною вагою ребер – 15.
Зазначимо, що за іншим порядком перевірки ребер однакової ваги можна отримати інше дерево з мінімальною сумарною вагою ребер, але значення цієї сумарної ваги не зміниться.