Графи131 162 PDF

You might also like

You are on page 1of 32

Розділ 3

ТЕОРІЯ ГРАФІВ
Теорія графів – один із розділів дискретної математики. Найбільш
ранні згадки про цю теорію зустрічаються в роботах Ейлера, і проблему,
якою він займався відносять до задач практики. Засновником теорії
графів, як і топології, є Л.Ейлер, який в 1736 році поставив задачу: на річці
Прегель є сім мостів, що з’єднують острови D і С із сушами А і B. Чи
можливо, вийшовши з якоїсь точки суші, пройти всі мости тільки по
одному разу і повернутися в цю ж точку суші? Схема мостів та
відповідний граф задачі подано на рисунку 3.1.

B
C

D C

A
A D B

Рис. 3.1. Парк в місті Кенігсберзі та відповідний граф

Легко, звичайно, спробувати розв’язати цю задачу емпірично,


перебором всіх маршрутів, але всі спроби закінчаться невдачею.
Винятковий внесок Ейлера в розв’язання цього завдання полягає в тому,
що він довів неможливість існування такого маршруту. Для доведення
того, що завдання не має розв’язку, Ейлер позначив кожну частину суші
точкою (вершиною), а кожен міст - лінією (ребром), що з'єднує відповідні
точки. Вийшов «граф», де точки відзначені тими ж буквами, що й чотири
частини суші на рис. 3.1. Твердження про не існування розв’язку у цій
задачі еквівалентно твердженню про неможливість обійти спеціальним
чином відповідний граф. Виходячи з цього тривіального випадку, Ейлер
узагальнив постановку задачі і знайшов критерій існування обходу
(спеціального маршруту) у даному графі, а саме граф повинен бути
зв'язним і кожна його вершина має бути інцидентною парному числу
ребер. Граф, показаний на рис. 3.1, зв'язний, але не кожна його вершина
інцидентна парному числом ребер.

131
Ейлер не тільки розв’язав цю задачу, але й узагальнив її, знайшовши
спеціальний вид обходу в даному графі.
Наступні пере відкриття теорії графів Кірхгофом та Келі також
виникли з реальних задач.
В 1847 році Кірхгоф розробив теорію дерев для розв’язання систем
лінійних рівнянь, яка дозволяє знайти силу струму в кожному провіднику і
в кожному контурі електричного кола.
Келі перечислив ізомери граничних насичених вуглеводів, що також
привело його до теорії дерев.
В цьому ж році Гамільтон
запропонував гру: У грі, використовується
додекаедр, кожній з 20 вершин якого
приписано назву відомого міста. Гравець
повинен обійти «навколо світу»,
знайшовши такий замкнутий шлях, що йде
по ребрах багатогранника та проходив би
через кожну вершину рівно один раз і
повернутися знову в початкове місто.
В 1869 році Кордан, незалежно від
Келі, ввів та вивчив дерева як математичні
Рис. 3.2. «Навколо світу»
об’єкти.
Існує декілька причин зростаючої
цікавості до теорії графів. Теорія графів застосовується в таких областях
як фізика, хімія, теорія зв’язку, проектування ЕОМ, електротехніка,
машинобудування, архітектура, дослідження операцій, генетика,
психологія, соціологія, антропологія, лінгвістика. Ця теорія пов’язана з
розділами математики: теорія груп, теорія матриць, чисельний аналіз,
теорія ймовірностей, топологія та комбінаторний аналіз. Граф є
математичною моделлю найрізноманітніших об’єктів, явищ і процесів, що
досліджуються і використовуються в науці, техніці та на практиці.
Коротко опишемо найвідоміші застосування теорії графів. Наприклад, у
вигляді графа можуть бути зображені: електричні і транспортні мережі,
інформаційні і комп’ютерні мережі, карти автомобільних, залізничних і
повітряних шляхів, газо- і нафтопроводів, моделі кристалів; структури
молекул хімічних речовин, моделі ігор, різні математичні об’єкти
(відношення, частково впорядковані множини, решітки, автомати,
ланцюги Маркова, алгоритми і програми тощо);
Прикладами застосування теорії графів є:
 пошук зв’язних компонентів у комунікаційних мережах;
 пошук найкоротших, «найдешевших» та «найдорожчих» шляхів у
комунікаційних мережах;

132
 побудова кістякового дерева: зв’язність з найменшою можливою
кількістю ребер;
 пошук максимального потоку для транспортної мережі, в якій
визначено вхідні та вихідні вершини та пропускні здатності ребер;
 ізоморфізм графів: ідентичність структур молекул (ізометрія);
 знаходження циклів графів:
 гамільтонів цикл: обійти всі вершини графа, побувавши в кожній з
них лише один раз (задача комівояжера);
 ейлерів цикл: обійти всі ребра (контроль дієздатності мережі);
 розфарбування графів: розфарбування географічних карт,
укладання розкладів, розміщення ресурсів тощо;
 планарність графів: проектування друкованих електронних та
електричних схем, транспортних розв’язок тощо;
 знаходження центрів графа: вершин, максимальна відстань від
яких до всіх інших вершин графа є мінімальною («столиць»)
Теорія графів приваблює своєю еластичністю у формі діаграм. В цій
теорії багато цікавих комбінаторних проблем.

3.1. Графи та різновиди графів.


Більшість фахівців з теорії графів вживають в книгах, статтях і
лекціях свою власну термінологію. На конференціях з теорії графів кожен
виступаючий, щоб уникнути неправильного розуміння, вважає за
необхідне визначити перш за все мову, якою він буде користуватися.
Навіть саме слово «граф» не є священним. Деякі автори дійсно
визначають «граф» як граф, інші ж мають на увазі такі поняття, як
мультиграф, псевдограф, орієнтований граф або мережа. Нам здається, що
однаковість в термінології теорії графів ніколи не буде досягнута, але,
можливо, воно й ні до чого. На жаль, необхідно сформулювати ряд
визначень, щоб надалі мати можливість використовувати основні поняття
і термінологію теорії графів.
Графом G  X ,  називається структура, яка складається з
множини X    та відображення  в ній. Можна привести альтернативне
означення: граф G  X , U складається з множини X    та
невпорядкованих пар U з множини X – вершин графа.
Пара u  x, y  , де x і y  X називається ребром графа G , при
цьому говорять, що x та y – суміжні вершини ( x adj y ), а ребро x, y 
інцидентне вершинам x і y . Якщо в G ребра u1 , u2 інцидентні одній і тій
же вершині, то вони називаються суміжними ребрами.

133
Граф з n  X вершинами та m  U ребрами називається n, m 
графом; граф (1,0) – тривіальний і ребро, що з’єднує вершину з собою
називається петлею.
Типи графів:
1. Мультиграф – граф, що не містить петель, але окремі пари вершин
в якому з’єднується декількома ребрами – кратними ребрами.
2 2. Псевдограф – граф, в якому
допускаються і петлі, і кратні ребра.
3. Орієнтований граф (орграф) –
граф G  X ,  , в якому U є
множиною впорядкованих пар
вершин із X . Елементи із U
1 3 називаються орієнтованими ребрами
або дугами. Дуги виду x, y  та  y, x 
- називаються симетричними дугами.
Рис. 3.3. Псевдограф 4. Направлений граф – орграф, що не
має симетричних дуг.
2 5. Граф називається поміченим або
перенумерованим, якщо його вершини
індексуються: x1 , x2 ,..., xn підмножиною
натуральних чисел.
6. Граф G1  X1, U1 називають підграфом
1 3 графа G  X , U , якщо X 1  X , U1  U .

Рис. 3.4. Орграф 7. Якщо G1 - підграф G , то G називається

x1 x2 x3 x1 x2 x3

G G1

x4 x5 x6 x4 x5 x6

G2 x2 Рис 3.5. Для графа G:


=K G1 – частинний граф,
3 G2 – породжений граф.
G2
x1

x4 x5 x6

134
надграфом для G1 .
8. Частинний граф (кістяковий граф) – це підграф, що містить всі
вершини графа G , але U1  U .
9. Підграф G1 з множиною вершин X 1  X називається породженим
графом G , якщо в G1 вершини суміжні тоді і тільки тоді, коли вони
суміжні в G .
На рис. 3.5 граф G1 отриманий з графа G шляхом вилучення ребер (x1,x2)
та (x2,x3) - частинний граф (𝐺1 = 𝐺\((𝑥1 , 𝑥2 ) ∪ (𝑥2 , 𝑥3 ))), а G2 отриманий з
G шляхом вилучення вершини x3 та інцидентних йому ребер –
породжений граф.
10. Два графи G і H називаються ізоморфними, G  H , якщо між
множинами їх вершин існує взаємно-однозначна відповідність із
збереженням суміжності, для прикладу графи, представлені на Рис.3.6 –
ізоморфні G1  G2  G3  G4 .

G1 G2 G3

G4
Рис 3.6. Приклади ізоморфних графів

Гіпотеза Улама. Нехай граф G має n-вершини x1 , x2 ,..., xn , граф H


має n-вершин y1 , y2 ,..., yn . Якщо для будь якої пари i та j підграфи G \ xi і
H \ y j ізоморфні, то і графи G і H – ізоморфні.
Відношення ізоморфізму є відношенням еквівалентності на
сукупності графів.
Інваріант графа G – це число, пов’язане з G , яке приймає одне і те
ж значення для будь-якого графа, що ізоморфний G . Наприклад, числа
n, m є інваріантами (n,m) – графа. Повний набір інваріантів графа визначає
граф з точністю до ізоморфізму.

Графи доцільно задавати за допомогою матриць суміжності вершин,


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

135
а) Матриця суміжності вершин А будується за правилом:


k , якщо x зв' язані k ребрами з x
i j
Aij  
 0, якщо x не суміжна з x
 i j
б) Матриця суміжності ребер В будується за правилом:


1, якщо ребра u та u суміжні,
i j
Bij  
 0 , якщо ребра u та u не суміжні.
 i j
в) Матрицею інцидентності для дуг графа G називається матриця,
елементи якої визначаються за правилом (як правило, використовується у
орграфах):
 1, якщо з xi виходить дуга U j

Cij   1, якщо в xi входить дуга U j
0, якщо x не інцидентна U
 i j

Теорема 3.1. Графи G1 та G2 ізоморфні тоді і тільки тоді, коли


матрицю суміжності (матрицю інцидентності) одного з цих графів
можна одержати з матриці суміжності (матриці інцидентності)
іншого графа за допомогою відповідних перестановок рядків та
стовпчиків.
Доведення. Справді, як було зазначено вище, ізоморфні графи G1 і G2
відрізняються між собою лише порядком нумерації вершин, тобто існує
бієктивне відображення  множини номерів вершин першого графа на
множину номерів вершин другого. Отже, кожен елемент aij матриці
суміжності A1 графа G1 збігається з елементом a(i)(j) (тобто елементом,
який знаходиться в рядку з номером (i) і стовпчику з номером (j))
матриці суміжності A2 графа G2. Таким чином, шляхом послідовного
одночасного обміну місцями (перестановок) рядків і стовпчиків з
номерами i та  (i) для всіх i=1,2,...,n матрицю суміжності A1 можна
перетворити у матрицю суміжності A2 і навпаки.
Якщо відображення  відоме, то таке перетворення виконати
неважко. У випадку, коли потрібно перевірити за допомогою матриць
суміжності, чи є ізоморфними два задані графи з n вершинами кожний,
необхідно здійснити різноманітні одночасні перестановки рядків і
стовпчиків однієї з них. Якщо після чергової з таких перестановок
дістанемо матрицю, яка повністю збігається з іншою, то ці графи
ізоморфні. Однак, щоб в такий спосіб з’ясувати, що задані графи не є
ізоморфними, потрібно виконати всі n! перестановок рядків і n!
перестановок стовпчиків. Вже для порівняно невеликих значень n
здійснити цей перебір практично неможливо навіть за допомогою
обчислювальної машини. У прикладній теорії алгоритмів розробляються

136
різноманітні алгоритми перевірки ізоморфізму графів, які для більшості
графів (або окремих типів графів) дозволяють суттєво скоротити обсяг
необхідних перевірок.
Для матриць інцидентності графів G1 і G2 з n вершинами і m ребрами
кожний справедливі аналогічні міркування. Відмінність у тому, що коли
G1 і G2 ізоморфні, тоді для їхніх множин вершин існує бієкція , а для
множин ребер  інша бієкція . Загальна ж кількість необхідних кроків
для перевірки ізоморфізму графів G1 і G2 у цьому випадку не перевищує
n!m!.
Теорема 3.2. Графи G1 i G2 ізоморфні тоді і тільки тоді, коли
ізоморфні їхні доповнення G 1 i G 2.
3.2. Маршрути та зв’язність графа
Графи прийнято ділити на незважені та зважені. У незваженому графі
довжина кожного з ребер приймається рівною одиниці. У зважених графах
G  X , , C u  , додатково задається цілочисельна функція C u   0 , яка
задає довжину ребра.
Шлях – це послідовність вершин x j , j  0, ..., k , де x j , x j 1 –
суміжні між собою вершини. Шлях буває складним (з повторенням дуг),
простим (без повторення дуг, але з повторенням вершин), елементарним –
з різними вершинами. Якщо x0  xk , то шлях називається контуром.
Контури також діляться на складні, прості і елементарні. Довжина шляху
у незваженому графі – це кількість дуг в ньому.
Ланцюг – послідовність суміжних ребер. Ланцюги, як і шляхи,
бувають складні, прості і елементарні. Замкнений ланцюг (початок
співпадає з кінцем) називається циклом. Цикли діляться на складні, прості
і елементарні.
Граф називається зв’язним, якщо будь-яка пара його вершин може
бути з’єднана елементарним ланцюгом.
Компонентою зв’язності графа G називається його зв’язний підграф
такий, що він вже не є власним підграфом жодного іншого зв’язного
підграфа графа G.
Відношення зв’язаності на графі G є рефлексивним, транзитивним і
симетричним, а значить, воно є відношенням еквівалентності на множині
U.
Віддаль d x, y  між вершинами x, y  G – це довжина найкоротшого
елементарного ланцюга, що з’єднує x з y ; якщо x і y не з’єднані в G ,
тоді прийматимемо d x, y    . З означення віддалі випливає, що:
1) d x, y   0 ; 2) d x, y   d  y, x  , 3) d x, y   d  y, z   d x, z  .

137
Найкоротший елементарний ланцюг x, y в графі G називається
геодезичною між x і y .
Діаметр d G  зв’язного графа G – це довжина найдовшої
геодезичної.
Степінь вершини xi в G - d i або deg( xi ) – це число ребер (дуг),
інцидентних вершині xі.
Орграф називається сильно зв’язним, якщо x, y  G , існує шлях
x, ..., y і шлях y , ..., x .
Розглянемо питання про число шляхів заданої довжини, які з’єднують
дві вершини xi та x j в графі G. Розглянемо граф G  X ,  , якому
відповідає матриця суміжності A  {aij } .

Теорема 3.3. Кількість шляхів довжини l даного графа G, що йдуть


з вершини xi в x j чисельно рівна елементу pij матриці P  Al .
Доведення: Для доведення застосуємо метод математичної індукції. У
випадку, коли l = 1 твердження очевидне. Нехай теорема справедлива для
l  n  1 . Доведемо справедливість теореми для l  n :
m
Al  Al 1  A   p
k 1
l 1
ik a kj .□

Приклад: Для орграфа G, заданого матрицею суміжності А


x1
 0 1 0
G  
A  0 0 1
1 0 0
 
x3 x2
х1 Побудуємо граф, що відповідає
0 0 1
 
A   1 0 0 , де p13  1.
2

х3  0 1 0
 

х2
х1

Знайдемо граф, що відповідає матриці A3 :


х3 х2

138
1 0 0
 
A   0 1 0 , де p11  p22  p33  1.
3

0 0 1
 
Наслідок 3.1. Нехай A  матриця суміжності графа G  X ,  з n
вершинами. В графі G вершини xi та x j є зв’язаними тоді і тільки тоді,
коли елемент pij матриці P=A+A2+A3+...+An-1 не дорівнює нулю.

3.3. Окремі види графів.


1. Повний граф K n – граф, кожна пара вершин x2
якого суміжні. Очевидно, що K n – граф має
x3 x1
 n  n (n  1)
   ребер. 112211
 2 2 121
2. K n - цілком незв’язний граф з n —
x4 x5
ізольованими вершинами.
3. Однорідний (регулярний) граф – граф, Рис.3.7. Повний граф K5
степені всіх вершин якого рівні (граф степеня r ).
4. Доповняльним G до
графа G називається граф в x1 x3 x1 x3
якому в якому дві вершини G G1
суміжні тоді і тільки тоді, x2
x2 x4 x4
коли в G вони не суміжні.

5. Самодоповняльний Рис. 3.8. Доповняльний граф до G


граф G – граф ізоморфний
своєму доповняльному графу, G  G1 .
6. Дводольний граф – це граф, множина вершин якого X  X 1  X 2 ,
X 1  X 2   така, що ребра G з’єднують множини X 1 і X 2 (будемо
говорити, що кожне ребро графа G з’єднує множини X1 і X2). Такий граф
доцільно позначати X 1  X 2 , . x x x
11 12 13
7. Повний дводольний граф K p ,q -
дводольний граф з X 1  p , X 2  q , де
кожна вершина з X 1 з’єднана з усіма x21 x22 x23
вершинами з X 2 .
Рис.3.9. Повний дводольний граф K 3, 3

139
8. Зірка (гроно, лапа) – повний дводольний
x2 граф K1, q .

x1 x3 9. Граф перетинів сім’ї множин:


Нехай S – множина, а F  s1 , s2 , ..., sn –
x4 сім’я різних непорожних його підмножин,
об’єднання яких дає S. Граф перетинів F 
Рис. 3.10. Зірка K1,3 цієї сім’ї – це граф з множиною вершин F , в
якому S i суміжна з S j якщо Si  S j   .
Наприклад:
1 S  1, 2, 3 , F  1, 1, 3, 2,3 .
1, 3
Ω(F) 10. Кліка графа – це його будь-який
максимально повний підграф.

11. Плоский граф – це граф,


2, 3 представлений на площині без само
перетину ребер.
12. Планарний граф – граф, що
x1 x3 x1 x3 ізоморфний плоскому графу.
13. Ейлерів граф – граф, в якому
існує ейлерів цикл, тобто простий
x2 x4 x2 x4 цикл, який охоплює всі ребра
графа.
Рис. 3.11. Планарний та плоский графи 14. Гамільтоновий граф – граф, в
якому існує елементарний цикл,
який охоплює всі вершини графа.
x1 15. Ациклічний граф – граф, що не має
циклів.
x2 x3 16. Дерево – зв’язний ациклічний граф.
17. Прадерево – направлений граф-
дерево.
x4 x5 x6 18. Реберний граф для G ; L( G ) - граф
перетинів (U ) .
Рис.3.12. Дерево

140
19. Тотальний граф T (G) – граф, в якого множиною вершин є X  U і дві

u2
x1 x2
x1 x2 x3 x4
G: u1 u3 T(G):

u1 u2 u3
x4 x3

Рис.3.13. Граф G та тотальний граф T ( G )

вершини суміжні тоді і тільки тоді, коли вони суміжні в G  X , U .


20. Зовнішньопланарний граф – планарний граф, якого можна вкласти на
площині так, щоб всі його вершини належали одній грані.
21. Турнір T – направлений повний граф.
22. Біграф –це граф, множина вершин якого X  X 1  X 2 , X 1  X 2  

така, що ребра G не з’єднують множини X 1 і X 2 (такий граф ще
називають графом з двома компонентами зв’язності).

3.4. Операції над графами.


1. Доповнення графа G – утворення G .

G G

Рис.3.14. Перетворення графа G у граф G

2. Квадрат графа G ( G 2 ), має ту ж саму множину вершин, що і в G ,


 
X G 2  X G  , але дві вершини x, y суміжні тоді і тільки тоді, коли
d  x, y   2 .

G G2

Рис.3.15. Побудова графа G 2

141
 
3. Степінь графа G : ( G k ), X G k  X G  і дві вершини в G k суміжні тоді
і тільки тоді, коли d x , y   k .
4. Об’єднання графів G1 і G2
Якщо розглянути графи G1  X 1 , U 1 , та G2  X 2 , U 2 то

x1 x3 x1
G1: G2: G1  G2 :
x3
x3 x4 x4
x2 x2
Рис.3.16. Побудова об’єднання графів

G1  G2  X 1  X 2 , U1  U 2 . В тому випадку, коли множини X 1 та X 2 є


диз’юнктивними множинами, отримуємо біграф.
5. Переріз графів G1 і G2 .
Якщо G1  X 1 , U 1 і G2  X 2 , U 2 тоді
G1  G2  X 1  X 2 , U1  U 2
При тому, якщо X 1  X 2   то і G1  G2   ,
6. Сполучення графів. Для графів G1  X 1 , U 1 та G2  X 2 , U 2 операція
сполучення G1  G2  G1  G2  U , де U - множина ребер, що з’єднує всі
вершини X 1 з усіма вершинами X 2 .

x1 x1 x3

G1: G2=K3 x5
G1  G2 :
x1
x2
x4
x2
Рис.3.17. Сполучення графів

G: 3G:

Рис.3.18. Кратність графа


7. Кратність графа: якщо G - зв’язний граф, то kG - граф з однаковими
компонентами, кожна з яких ізоморфна G .

142
8. Приєднання графів G1  G2  G : якщо G1 і G2 такі, що ототожнення
довільної вершини графа G1 з будь-якою вершиною графа G2 приводить
до одного і того ж графа (з точністю до ізоморфізму), то граф G ,
отриманий з допомогою описуваного ототожнювання двох вершин
називається операцією приєднання.

G1: G2: G1·G2:

Рис.3.19. Приєднання графів

9. Добуток графів G  G1  G2: Вершинами графа G є декартовий добуток


вершин G1 і G2 , при цьому вершини x1 , x2  ,  y1 , y2   G1  G2 є
суміжними тоді і тільки тоді, коли x1  y1 & x2 adj y2 або
x2  y2 & x1 adj y1 .
10. Композиція графів G  G1 G2  має множиною вершин декартовий
добуток X 1  X 2 , при цьому вершина x1 , x2  суміжна з вершиною
 y1 , y2  , якщо x1 adj y1 або x1  y1 & x2 adj y2 .
11. Прямий добуток графів G  G1  G2 .Для графів G1  X 1 , 1 та
G2  X 2 , 2 , граф G  G1  G2  X ,  , має множину вершин
X  X 1  X 2 і ребер X 1 , X 2   X 1  X 2 (вершини суміжні як по
першій, так і по другій компонентах).
12. Пряма сума графів G  G1  G2  X , U - Для графів G1  X 1 , 1 та
G2  X 2 , 2 , граф G  G1  G2  X ,  , має множину вершин
X  X 1  X 2 і ребер X 1 , X 2   X 1  X 2 (вершини суміжні як по
першій компоненті і другі співпадають, або по другій компоненті і перші
співпадають).

G1: x1 x2 x3 x3

G1  G2: x2
x4
x2 x4
G2:
x1
x5 x5

Рис.3.20. Пряма сума графів

143
13. Корона графів G  G1  G2 , кожна вершина xi графа G1 сполучається
(з’єднується) з одним екземпляром графа G2 .

x1 x2
G1 x1 x2
G1  G2
y1 y2
G2
y3
Рис.3.21. Корона графів

14. Розподілом ребра (xi,xj) графа називається операція введення в


граф вершини x' і заміни цього ребра на два суміжні ребра (xi, x') і (x', xj):
X'=X  {x'}, U'=U\{( xi,xj)}  {( xi, x'), ( x', xj)}.
Граф G' називається розподілом графа G, якщо він може бути
отриманий з G шляхом скінченого числа розподілів ребер. Два графи
називаються гомеоморфними, якщо для них існують ізоморфні розподіли..

Теорема 3.4. Якщо граф G  X ,U заданий матрицею суміжності


A  {aij } , а граф H  X ,V - матрицею суміжності B  {bij } , то:
1) сумі матриць А і В відповідає граф з тією ж самою
множиною вершин Х, а множина дуг належить об’єднанню U  V :
A  B  X ,U  V ;
2) добутку матриць А і В відповідає граф X ,W , в якому вершини
xi i x j суміжні лише тоді, коли xi , xk  U , xk , x j  V .
Розглянемо як приклад два орграфи з відповідними матрицями
суміжності вершин А та В. Додавши матриці А, В отримаємо матрицю
A  B  {aij  bij } , загальна кількість дуг якої дорівнює сумі дуг в
першому і другому графах.
х1 х2 х1 х2

G H

х4 х3 х4 х3

Для графів G i H побудуємо відповідно матриці суміжності А і В:

144
0 1 1 0 0 0 1 1
   
A
0 0 0 1 , B  0 0 0 0  , тоді С=А+В матиме вигляд:
1 0 0 0 0 1 0 0
   
0  1 0 0 0 
0 0 0 
0 1 2 1 і результуючий граф:
 
0 0 0 1 х1 х2
C 
1 1 0 0
 
1 0 0 0 

х4 х3

2) Якщо перемножити матриці


суміжності А, В отримаємо х1 х2

0 1 0 0
  і граф:
1 0 0 0
C  A B  
0 0 1 1
  х4 х3
0 0 0 0 

3.5. Шляхи в графі.


Розглянемо алгоритми знаходження найкоротших шляхів у
зваженому і незваженому графах.
3.5.1. Шлях з найменшою кількістю дуг.

Задано довільний незважений граф G  X ,  . Знайти такий шлях,


що з’єднує дві дані вершини a, b і містить найменшу кількість дуг.

Алгоритм розв’язку.
10. Присвоїти вершині a мітку 0 .
20. Якщо x  a і x  a , то присвоїти кожній такій вершині мітку 1 .
30. Нехай Am  , m  0, 1, 2, ...,- множина вершини, які отримали мітку m .
Побудуємо Am  1  x : x  Am , x  Ak , k  m.
40. Процес присвоєння вершинам міток припинити, якщо тільки вершина
b отримає мітку, b  An  .
50. Розглянути послідовність вершин xi1 , xi2 ,..., xin таких, що xi1  An  1 ,
b  i1 ; xi2  An  2  , xi1  xi 2 ,...,xin  A0, xin1  xin .
Шлях M  a  xn , xn1 ,...,b задає шуканий розв’язок.

145
3.5.2. Шлях найкоротшої довжини у зваженому графі.

Задано довільний зважений граф G  X ,, l u  , де l u  - довжина


дуги. Довжиною шляху M - називається сума довжин дуг, які входять в
M : l M    l u  .
n
Знайти у зваженому графі G шлях M найкоротшої довжини, що
з’єднує вершини a та b.
Алгоритм розв’язку:
10. Пронумерувати вершини графа G так, щоб вершина a отримала
номер 0. Позначити вершину a через x0 (при цьому вершина b отримає
номер xn ).
20. Присвоїти кожній вершині xi мітку i так, щоб 0  0 , i   при
i  0.
  
30. Знайти таку дугу xi , x j , для якої  j  i  l xi , x j , вважаючи, що 
    0 . У вершині x j замінити мітку  j на нову (меншу) мітку
 j  i  l xi , x j  .
40. Застосовуємо правило 30 до тих пір, поки для кожної дуги xi , x j не  
стане справедливою нерівність:  j  i  l xi , x j .  
50. В множині  1 xn , xn  b , знайти таку вершину x p1 , що
n   p1  l xi , x j .
Аналогічно, в множині  1 x p1 знайти таку вершину x pl , щоб виконувалась

рівність:  p1   pl  l xi , x j  і так далі.
Після деякої кількості кроків вершина x pk співпадає з вершиною x0  a .
Шлях M  a  x pk , x pk 1 ,, x p1 , b – найкоротший шлях довжиною n .

3.5.3. Кількість шляхів у графі, які відповідають заданій трійці


невід’ємних чисел.

Розглянемо граф G  X,Γ з матрицею суміжності A  aij та трійка  


невід’ємних цілих чисел  ,  ,  . Стверджують, що шлях   x0 , x1 ,, xk
відповідає заданій трійці невід’ємних цілих чисел  ,  ,  , якщо у
послідовності вершин знайдуться дві такі вершини xi , x j xi  x j , що  
шлях   x0 , x1 ,, xi має довжину  ( l  μα   α ), шлях
   xi , xi 1 ,  , x j має довжину   
( l μ   ), і відповідно
  x j , x j 1 ,, xk .

146
       x6
Тоді x3 x4
Як приклад, розглянемо
орграф: x7
  x0 , x1 , x 2 , x3 , x4 , x5 , x 2 , x6 , x7 x2 x5

  x0 , x1 , x2 ; l    2 ;
x0 x1
  x2 , x3 , x4 , x5 , x2 ; l    4;
x9
x8
  x2 , x6 , x7 ; l    2.

Теорема 3.5. Кількість шляхів у графі G  X,Γ з матрицею


 
суміжності A  aij , які відповідають числам  ,  ,  і йдуть з вершини xi
у вершину x j , дорівнює елементу qij матриці Q  A d A A .  
Доведення. Елементи матриці суміжності A , дорівнюють кількості
шляхів, що йдуть із вершини x0 у вершину xi , довжиною  . Елементи
 
матриці d A , задають кількість контурів довжиною  , які починаються
і закінчуються у вершині xi даного графа. Елемент A задає кількість
шляхів довжини  , що йдуть із вершини xi у вершину xk . Кількість
шляхів, які відповідають трійці 0,  ,  визначаються загальним членом
 
d A A . Кількість шляхів, які відповідають трійці  ,  ,  визначаються
загальним членом A d A A .□  
3.6. Знаходження ейлеревих циклів графа.
Одним з важливих різновидів зв’язних графів є так звані Ейлереві і
Гамільтонові графи.
Зв’язний граф G називається ейлеревим, якщо існує простий цикл,
який включає всі його ребра. Такий ланцюг називається ейлеревим
ланцюгом.
Зв’язний граф G називається напівейлеревим, якщо в ньому існує
ланцюг, який включає кожне його ребро. Таким чином, будь який ейлерів
граф буде напівейлеревим.

а б в
Рис.3.22. неейлерів (а), ейлерів (б) і напівейлерів (в) графи.
147
Поняття ейлеревого графа виникло у зв’язку з відомою головоломкою
про кенігсбергські мости, в якій необхідно було визначити, чи має граф
ейлерів ланцюг, чи ні.
Виникає природне питання: як встановити, що заданий граф є
ейлеревим? Відповідь на це питання дають такі твердження.
Теорема 3.6. Якщо степінь кожної вершини скінченного графа не
менша двох, то граф має простий цикл.
Доведення. Нехай x — довільна вершина графа G. Користуючись
методом побудови за індукцією, побудуємо маршрут x, x1, …, xk, … так,
що xi+1 суміжна з xi і відмінна від xi-1. Існування такої вершини випливає з
умов теореми. Оскільки граф G скінченний, то на деякому кроці побудови
нашого маршруту прийдемо до вершини, вибраної раніше. Нехай xk —
перша з таких вершин. Тоді частина маршруту, яка лежить між першою і
другою появою xk в цьому маршруті, і є шуканим циклом. □
Теорема 3.7. Зв’язний граф G є ейлеревим тоді і тільки тоді, коли
кожна вершина G має парну степінь.
Доведення. Нехай G має ейлерів ланцюг Р. Тоді при всякому
проходженні ланцюга Р через будь-яку з вершин графа G степінь цієї
вершини зменшується на 2. А оскільки кожне ребро зустрічається в Р
тільки один раз, то кожна вершина повинна мати парну степінь.
Доведення у зворотному напрямку проводиться індукцією за числом
ребер у графі G. □
Наслідок 3.2. Зв’язний граф ейлерів тоді і тільки тоді, коли множину
його ребер можна розбити на цикли, що не перетинаються.
Наслідок 3.3. Зв’язний граф напівейлерів тоді і тільки тоді, коли він
має не більше двох вершин непарного степеня.
Теорема 3.8. (Флері) Нехай G  X,U — ейлерів граф. Тоді наступна
процедура завжди веде до побудови ейлерового ланцюга в графі G:
виходячи з будь-якої вершини x  X , ідемо по ребрах графа G довільним
чином згідно з наступими правилами:
(І) стираємо ребра, які пройдені, і стираємо ізольовані вершини які
при цьому виникають;
(ІІ) на кожному етапі йдемо по мосту лише тоді, коли немає інших
можливостей.
Доведення. Насамперед покажемо, що вказану процедуру можна
виконувати на кожному етапі. Нехай у процесі роботи процедури
досягнута вершина u. Тоді якщо u  x , то підграф Н, який залишився,
зв’язний і має рівно дві вершини непарного степеня, — це вершини u і x.
За наслідком 3.2 граф H має напівейлерів ланцюг Р із x в u. Оскільки
вилучення непарного ребра ланцюга Р не порушує зв’язності графа H, то

148
звідси випливає, що побудова, яка дається в теоремі, завжди можлива на
кожному етапі. Якщо ж u = x, то доведення залишається таким же доти,
доки ще є ребра, інцидентні вершині u.
Залишається лише показати, що дана процедура завжди приводить до
повного ейлеревого ланцюга. Але це очевидно, оскільки в G не може бути
ребер, які не були пройдені після використання останнього ребра,
інцидентного вершині x (інакше, вилучення деякого ребра, суміжного з
одним із тих, які залишилися, веде до незв’язного графа, а це суперечить
умові (II) теореми). □
Алгоритм розв’язку.
1. Вибрати довільну вершину a  G .
2. Вибрати довільне ребро з U , інцидентне a , і присвоїти йому номер
1 (пройдене ребро викреслити).
3. Кожне наступне ребро викреслювати і присвоювати йому номер на
одиницю більший номера попереднього викресленого ребра.
4. Знаходячись у вершині x  G , не вибирати ребра, які з’єднують x з
a , якщо тільки є можливість іншого вибору.
5. Знаходячись у вершині x  G , не вибирати ребра, які є
«перешийком» (при видаленні цього ребра граф, утворений не
закресленими ребрами, розпадається на дві компоненти зв’язності, що
мають хоча б по одному ребру).
6. Після того, як у графі будуть закреслені всі ребра, цикл
 
  U i1 ,U i2 ,,U im , утворений ребрами з номерами від 1 до m , де m –
число ребер у графі, є ейлеревим циклом.
Близькою до задачі пошуку ейлеревих циклів є задача пошуку виходу
з лабіринту, коридори якого не обов’язково знаходяться на одному рівні.
Також це стосується мандрівок в печерах або катакомбах.
Припущення: Вважаючи, що можна певним способом визначити
(помітити), в якому напрямку пройдено коридор і який коридор приводить
до перехрестя вперше треба, знаходячись на перехресті a знайти вихід b
із лабіринту.
Алгоритм знаходження виходу:
Ніколи не проходити по одному й тому ж коридору в одному й тому
ж напрямку двічі.
Знаходячись на перехресті, не вибирати коридор, який привів на це
перехрестя вперше, якщо тільки є можливість іншого вибору.
Відповідь на умови існування циклу та ланцюга Ейлера в графі дає
наступна теорема.
Теорема 3.9 (Ейлера). Якщо граф G  X ,U – зв’язний і містить
лише дві вершини a і b непарного степеня, а інші вершини парного

149
степеня, то існує ланцюг   a,..., b . Якщо ж всі вершини графа мають
парну степінь, то існує ейлерів цикл.
Доведення (методом математичної індукції)
1. Для графа (2,1) – теорема очевидна.
2. Нехай теорема справджується для випадку, коли граф має k  1
ребер.
3. Доведемо її справедливість для k ребер. Нехай a і b вершини з
непарного степеня, а всі інші вершини парного степеня. Виходимо з
вершини a і проходимо весь час нові ребра. Дійдемо таким способом до
вершини b . В залишених (не пройдених) ребрах кожна вершина має
парну степінь, кількість ребер менша k , отже існує ейлерів цикл. Нехай
маємо графи G1 , G2 ,..., Gr , де x1 , x2 ,..., xr – точки зустрічі з частинами
G1 , G2 ,..., Gr відповідно:

G1 G2
Gr

x2
a x1
xr
b
В сукупності весь ланцюг буде ейлеревим.
Зауваження. Можна довести, що якщо в даному зв’язному графі є 2q
вершин непарного степеня, то такий граф можна накреслити q
розчерками пера.

3.7. Властивості гамільтонових графів.


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

150
Теорема 3.10. (Дірак) Якщо в графі G = <X,U> з n  3 вершинами
deg( xi )  n / 2 , то граф G є гамільтоновим.
Доведення. Введемо в граф G k нових вершин і з’єднаємо кожну з цих
вершин із усіма вершинами графа G. Будемо вважати, що k — найменше
число вершин, які потрібно ввести в граф G для того, щоб побудований
граф G′ став гамільтоновим.
Припустимо, що k > 0 і v, p, w, ..., v — гамільтоновий цикл, де v і w —
вершини G, а р — одна з нових вершин. Тоді v і w несуміжні, оскільки в
протилежному випадку вершина р зайва, а це суперечить мінімальності k.
Більше того, вершина (наприклад, w′), суміжна з вершиною w, не може
безпосередньо слідувати за вершиною v′, суміжною з v, оскільки тоді ми
могли б замінити v, р, w, ..., v′, w′, ..., v на v, v′, ..., w, w′, ..., v, обернувши
частину циклу, яка знаходиться між вершинами w і v′. Звідси випливає, що
число вершин графа G′, не суміжних з w, не менше числа вершин,
суміжних з v, тобто, у крайньому випадку, воно рівне n / 2  k . З іншого
боку, очевидно, що число вершин графа G′, суміжних з w, теж не менше
n / 2  k . Оскільки будь-яка вершина графа G′ не може бути одночасно
суміжною і несуміжною з w, то загальна кількість вершин графа G′, яка
дорівнює n  k , не менша n  2k . Це може бути лише тоді, коли k = 0.
Отримана суперечність доводить теорему. □
Якщо в графі G = <X, U> зафіксувати одну з вершин і обхід графа
завжди починати з неї, то будь якому гамільтоновому циклу буде
відповідати перестановка елементів множини X. Отже, знайти гамільтонів
цикл або переконатися в його відсутності можна перебором, а це (n  1)!
перестановок. Якщо граф G гамільтонів, то цей перебір у повному обсязі
необхідно буде зробити лише у випадку великого невезіння, тобто коли
перестановка, що відповідає гамільтоновому циклу, зустрічається в цьому
процесі останньою. Якщо ж граф G — не гамільтонів,
то, діючи таким чином, необхідно буде перебрати всі
(n  1)! перестановки. Хоча на практиці користуються
різними алгоритмами часткового перебору, але
складність цих алгоритмів залишається високою
(пропорційною (n  1)! ).

3.8. Нескінченні графи


Нескінченним (неорієнтованим) графом
називається пара <X, U>, де X — нескінченна
множина вершин і U — нескінченна множина ребер. Рис.3.23. Локально
Якщо обидві множини X і U зчислені, то і граф скінченний граф
називається зчисленим. Слід зазначити, що ці

151
означення не стосуються того випадку, коли X — скінченна множина, a U
— нескінченна множина, або коли U — скінченна множина, а X —
нескінченна множина. У цих випадках граф G можна вважати скінченним
графом, якщо він має в першому випадку скінченне число вершин і
нескінченне число кратних ребер (або петель), а в другому випадку —
скінченне число ребер і нескінченне число ізольованих вершин.
Означення таких понять, як суміжні вершини, інцидентні ребра,
ізоморфні графи, підграфи графа, зв’язний граф, компонента зв’язності
повністю переносяться на нескінченні графи.
Степенем вершини x нескінченного графа називається потужність
множини ребер, інцидентних вершині x. Отже степінь вершини в
нескінченному графі може бути як скінченною, так і нескінченною.
Нескінченний граф називається локально скінченним, якщо степінь
кожної його вершини скінченна. Прикладом локально скінченного графа
може бути квадратна решітка, складена з цілих чисел (рис. 3.23).
Аналогічно дається означення локально зчисленого нескінченного
графа: нескінченний граф називається локально зчисленим, якщо кожна
вершина цього графа має зчислену степінь.
Теорема 3.11. Будь-який зв’язний локально зчислений нескінченний
граф є зчисленим.
Доведення. Нехай x — довільна вершина такого нескінченного графа і
нехай А — множина всіх вершин, суміжних з вершиною x (A = S(u)), В —
множина всіх вершин, суміжних з вершинами з множини А і т.д. За
умовою теореми множина А зчислена, множина В зчислена і т.д. За
теоремою об’єднання цих множин є множиною зчисленою. Оскільки
послідовність {x}, А, В, ... внаслідок зв’язності графа містить кожну
вершину нескінченного графа, то цим теорема доведена.□
Наслідок 3.4. Будь-який зв’язний локально скінченний граф є
зчисленим.
Доведення випливає з того, що об’єднання зчисленої множини
скінченних множин є зчисленою множиною.
На нескінченні графи переноситься і поняття маршруту, причому це
поняття може мати такі різновиди:
1) скінчений маршрут у нескінченному графі G визначається так, як
і у випадку скінченних графів;
2) нескінченним в одну сторону маршрутом у графі G, який
починається у вершині x0, називається нескінченна послідовність ребер
( x0 , x1 ), ( x1 , x2 ), ( x2 , x3 ), ...;
3) нескінченним в обидві сторони маршрутом в графі G називається
нескінченна послідовність ребер ..., ( x 2 , x1 ), ( x1 , x0 ), ( x0 , x1 ), ( x1 , x2 ),... .

152
Нескінченні в одну і обидві сторони ланцюги і прості ланцюги
визначаються так, як і поняття довжини ланцюга і відстані між
вершинами. Умови існування нескінченних ланцюгів у графах дає
теорема, яка в теорії графів відома під назвою леми Кйоніга.
Лема Кйоніга. Нехай G — зв’язний локально скінченний граф. Тоді для
будь-якої його вершини x існує нескінченний в один бік простий ланцюг,
який починається у вершині x.
Доведення. Якщо y — довільна вершина графа G, відмінна від
вершини x, то існує деякий простий ланцюг, який з’єднує вершини x і y.
Звідси випливає, що в G повинно бути нескінченно багато простих
ланцюгів з початком у вершині x. Оскільки степінь вершини x скінченна,
то нескінченна множина таких простих ланцюгів повинна починатися з
одного і того ж ребра. Якщо таким ребром є ребро (y, x1), то, повторивши
цю процедуру для вершини x1, отримуємо нову вершину x2 і відповідне їй
ребро (x1, x2). Продовжуючи цей процес далі, отримуємо нескінченний в
одну сторону простий ланцюг x, x1, x2, ... □
Важливе значення леми Кйоніга полягає в тому, то вона дає
можливість отримувати результати про нескінченні графи з відповідних
результатів про скінченні графи.
Розглянемо на закінчення даного параграфу нескінченні ейлерові та
гамільтонові графи.
Зв’язний зчислений граф G називається ейлеревим, якщо в ньому
існує нескінченний в обидві сторони ланцюг, що містить кожне ребро
графа G. Такий ланцюг називається (двостороннім) ейлеревим ланцюгом.
Зчисленний граф G називається напівейлеревим, якщо в ньому існує
нескінченний в одну або в обидві сторони ланцюг, який містить в собі
кожне ребро графа G.
Теорема 3.12. Нехай G — зв’язний зчислений ейлерів граф, тоді:
а) в G кожна вершина має нескінченну або парну степінь;
б) для всякого скінченного підграфа Н графа G доповнення H графа
Н в графі G мас не більше двох компонент зв’язності;
в) якщо Н — скінченний підграф графа G і кожна вершина підграфа
Н має парну степінь, то доповнення H має рівно одну нескінченну
компоненту зв’язності.
Доведення. Доведемо (а). Нехай Р — ейлерів ланцюг графа G. Тоді
при будь-якому проходженні по ланцюгу Р через довільну вершину графа
G степінь цієї вершини збільшується на два. Оскільки кожне ребро
зустрічається в Р тільки один раз, то будь-яка вершина графа G має або
зчислену степінь, або парну.

153
Доведемо (б). Нехай Р — ейлерів ланцюг графа G. Розіб’ємо Р на три
підланцюги Р- , Р0, Р+ так, щоб Р0 являв собою скінченний ланцюг, який
містить всі ребра графа H (і, можливо, ще деякі ребра графа G, що не
належать графу Н), а Р- і Р+ — два нескінченних в один бік ланцюги. Тоді
нескінченний граф К, вершинами якого є вершини з Р- і Р+, а ребрами —
ребра цих ланцюгів, має не більше двох компонент зв’язності. Оскільки H
можна отримати з графа К введенням лише скінченного числа ребер, то
звідси випливає, що і H теж може мати не більше двох компонент
зв’язності.
При доведенні (в) розіб’ємо, як і в попередньому випадку, ейлерів
ланцюг Р на три підланцюги Р- , Р0, Р+. Нехай u — початкова, x — кінцева
вершина ланцюга Р0. Покажемо, що u і x з’єднані маршрутом в Н.
Якщо u = x, то все ясно, а якщо u  v , то, вилучивши ребро (u, x)
графа H, отримаємо, що вершини u і x мають непарні степені в H. А звідси
за наслідком 3.3 випливає, що u і x зв’язані напівейлеревим ланцюгом.
Отже, H має рівно одну компоненту зв’язності. □

3.9. Задача про найбільший потік у зваженому графі.


Поняття потоку на транспортній мережі, алгоритм знаходження
найбільшого потоку та критерії існування потоку, який насичує вихідні
дуги мережі, є корисними для багатьох прикладних і теоретичних задач
комбінаторного аналізу. Теорія транспортних мереж виникла при
розв’язанні задач, пов’язаних з організацією перевезень вантажів.
Транспортна мережа T є сукупністю двох об’єктів:
1) зв’язного орграфа G  X , Γ з наступними властивостями:
 в графі G відсутні петлі;
 в графі G існує одна і тільки одна вершина z (вихід мережі ,
стік) така, що множина Γz   ;
 в графі G існує одна і тільки одна вершина x0 (вхід мережі,
джерело) така, що множина Γ 1 x0   .
2) цілочисельної невід’ємної функції C u  , заданої на множині Γ
дуг графа G .
Нехай U  x – множина дуг, що заходять у вершину (степінь півзаходу
вершини) x , а U  x – множина дуг, які виходять із вершини (степінь
піввиходу) x . Цілочисельна невід’ємна функція  u  , задана на множині
Γ дуг графа G називається потоком, якщо вона задовольняє таким
умовам:
а)  u    u , x  x0 , x  z ;
uU  x uU  x

154
б)  u   C u  .
Із а) випливає, що   u     u  .
uU  x0 uU  z

Величина  u  називається величиною потоку  u  і позначається  z .


uU  z
Наше завдання полягає у побудові потоку найбільшої величини на
транспортній мережі T .
Дуга u називається насиченою, якщо  u   C u  . Потік  u 
називатимемо повним, якщо кожен шлях із x0 у z містить хоча би одну
насичену дугу.
Алгоритм Форда – Фалкерсона знаходження найбільшої величини потоку.
I. Формування потоку.
10 Перенумерувати довільним чином вершини мережі T відмінні
від x0 і z .
20 Побудувати довільний потік  u  на транспортній мережі T
(наприклад задати  u   0, u  Γ ).
30 Розглянути шляхи, що з’єднують вхід мережі x0 з виходом z ,
якщо потік  u  повний – перейти до пункту 40. В іншому випадку
розглянути шлях  , що з’єднує x0 з z , всі дуги якого ненасичені.
Побудувати новий потік:
  u , u  

 u    u   k , u   , де k  min cu    u  .
 u
Повторювати 3 до отримання повного потоку  .
0

II. Максимізація (перерозподіл) потоку.


40. Присвоїти цілочисельні мітки вершинам мережі T і знаки (+) або
(-) дугам за правилами:
а) входу x0 присвоїти мітку 0;
б) якщо вершина xi одержала деяку мітку, а y – ще не помічена
вершина, то вершині y  Γxi , такій, що   xi , y   c xi , y  , присвоїти
мітку i , а дузі xi , y знак (+); вершині y  Γ 1 xi , такій, що   y, xi   0 ,
присвоїти мітку i , а дузі y, xi знак (-); інші вершини і дуги мітки і знаку
не отримують;

в) розглянути послідовність відмічених вершин   z, xi1 , xi2 ,, x0 , 
кожна з яких має мітку, що дорівнює номеру наступної вершини, і

155
послідовність дуг  (необов’язково шлях), що з’єднує послідовні
вершини із  . Побудувати новий потік  u  таким чином:
 u , u  

 u    u   1, u   і має знак () ;
 u   1, u   і має знак ()

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

3.9.1. Співвідношення між величиною потоку і пропускною здатністю


розрізу мережі.
1. Нехай A  X – така підмножина вершин графа, що x0  A, z  A .
Множину дуг U A , що входять в A , тобто з’єднують вершини y  A з
вершинами x  A , називають розрізом транспортної мережі T .

2. Пропускною здатністю C U A   розрізу U A називається сума


пропускних здатностей дуг, які входять в розріз C U A    C u  .
uU A

Лема. Для будь-якого потоку  і будь-якого розрізу U A справедливе


співвідношення  z  C U A  
Доведення. Так як z  A, то
 z  

 u    u    u   C  .
U A
uU A uU A uU A

Гіпотеза. Якщо для деякого потоку  і для деякого розрізу U A


 
виконується рівність  z  C U A , то потік володіє найбільшою величиною.
3.9.2. Обґрунтування алгоритму Форда – Фалкерсона
1. Реалізація алгоритму складається із скінченної кількості кроків;
2. Процес присвоєння міток скінчений, причому  z   z , бо дугам, що
входять в z , може бути присвоєно лише знак (+);

3.   – також потік;

156
4. З пункту 50 алгоритму випливає що,   – також потік, бо для
послідовності вершин із   xik 1 , xik , xik 1 можливі ситуації:

xik xik xik


+ + + - - +

xik-1 xik+1 xik-1 xik+1 xik-1 xik+1


а) збільшення б) зменшується в) перерозподіл
потоку повернення потоку
потоку

5. Якщо вершина z не отримає мітки, то потік  буде найбільшим,


справді, якщо А- множина не помічених вершин, то z  A і x0  A, так що
U A - розріз мережі; u U A з’єднує помічену вершину y з непоміченою
вершиною x  A. Але x A - не помічена при умовах
 ( x, y )  C ( y, x ), або u U A і  ( x, y )  0, звідки
 ( z)   (u)   (u)   C (u)  C (U 
A ).
uU A uU A uU A

Цим обґрунтуванням ми фактично довели теорему.


Теорема 3.13.( Форда-Фалкерсона) Для заданої транспортної
мережі величина найбільшого потоку дорівнює найменший пропускній
здатності розрізу, тобто max z  min

C (U A ).
 UA

3.9.3. Деякі застосування методу Форда-Фалкерсона:


Задача 1. Порти x1 , x2 ,..., xn володіють запасами продуктів, на які є
попит в портах y1 , y2 ,..., yn . Запас продукту в порту xi становить g i , а
потреба в цьому продукті в y j дорівнює d j . Позначимо через cij
максимальну кількість продукту, яку здатні перевезти пароплави, що
пливуть із xi в y j . Чи можливо задовольнити всі потреби? Як
організувати перевезення? Для того, щоб звести цю задачу до задачі про
найбільший потік, достатньо з’єднати вхід x0 з кожною вершиною xi
дугами пропускної здатності g i , з’єднати вершини xi з y j дугами cij та
з’єднати кожну із вершин y j з виходом z дугами пропускної здатності

157
d j . Якщо  - найбільший потік, то  ( xi , y j ) буде означати кількість
продукту, яку треба перевезти із xi в y j , щоб оптимально задовольнити
всі потреби.
Задача 2. Динамічні транспортні мережі.
З різних міст x1 , x2 ,..., xn в одне і те саме місце призначення y
відправляються автомобілі; якщо  xi , x j  - дорога, що з’єднує два міста
xi , x j , то нехай tij означає тривалість проїзду по ній із xi в x j ; cij -
кількість автомобілів, яку вона може пропустити за одиницю часу (у
випадку відсутності дороги cij  0 ); cii - кількість автомобілів, яка може
одночасно знаходитися в місті xi , ai - початкова кількість машин в xi . Як
слід організувати рух, щоб на протязі певного часу  в пункт y прибула
найбільш можлива кількість автомобілів? Визначимо транспортну мережу
множиною вершин якої служить декартовий добуток
X  {x1 , x2 ,..., xn , y} {0,1,..., }. Для вершини xi (t )  xi , t  визначимо
дуги  xi (t ), x j (t  t j )  з пропускними здатностями cij .
Позначимо через  ( xi (t ), x j (t  t j ) ) кількість автомобілів, що
виїжджають з міста xi в момент t і направляються в x j , при цьому
 ( xi (t ), x j (t ) ) - це кількість машин, що залишаються в xi в момент
часу t. З’єднаємо вхід x0 з кожною із вершин xi дугою пропускної
здатності ai , а вершини y(1), y (2),..., y () - з виходом z дугами
пропускної здатності, що дорівнює  . Тоді найбільший потік такої
транспортної мережі визначить оптимальне використання доріг.
Задача 3. Задача про призначення.
В установі є p працівників x1 , x2 ,..., x p і q посад, а саме y1 , y2 ,..., yq .
Кваліфікація кожного працівника дозволяє йому зайняти деякі із
посад. Чи можливо провести призначення таким чином, щоб кожний
працівник зайняв посаду у згідно своєї кваліфікації? Якщо позначити
через xi множину тих посад, яку може зайняти особа xi , то задача
зведеться до знаходження найбільшого потоку мережі: вхід x0 з’єднується
із xi , з пропускною здатністю 1, вершини xi і y j з’єднуються дугами з
пропускними здатностями, що дорівнюють 1, всі вершини y j з’єднується
з виходом z дугою пропускної здатності 1.

158
3.9.4. Потреби підмножини вершин графа.
Нехай задано граф G  X , , C (u) , з вершинами x0 ,..., z .
Потребою вершини у цього графа називається число d ( y), яке
визначається наступним чином:
 C ( y, z ), y   1 z
d ( y)  
0, y   1 z
Для будь-якої підмножини А вершин графа G потребою називається
величина d ( A)   d ( y) .
yA

1. Сумарна величина потоку даної підмножини вершин транспортної


мережі.
2. Для A  X , F (A) - найбільша сумарна кількість речовини, яку
можна доставити у вершини А цієї мережі: F ( A)  max

  (u ).
uU A

Всі вершини А з’єднані з виходом дугами нескінченної пропускної


спроможності F ( A)  C (U A ).

Лема. В заданій транспортній мережі графа G A0  X /x0 , z. Якщо


для  A0  A виконується C (U A )  d ( A), то F ( A0 )  d ( A0 ).
Доведення:
По даній транспортній мережі графа G, побудуємо нову транспортну
мережу G0 .
(1) відкинемо всі дуги, які виходять із вершини A0 , а також вихід z.
(2) всі елементи A0 ототожнюємо між собою і позначимо їх спільну
вершину z0 .
На такій транспортній мережі G0 найбільша величина потоку
дорівнює F ( A0 ) і за теоремою Форда-Фалкерсона F ( A0 )  C (W ), де W -
деякий розріз.
W  U A , x0  A, z  A.
F ( A0 )  C (U A )  C (U A0 )  d ( A0 )
F ( A0 )  d ( A0 )

Теорема 3.14.( Гейля) Для того, щоб існував потік  (u) заданої
транспортної мережі G  X , , C (u) , який насичував би всі дуги
виходу:
 ( y, x )  C ( y, x ), y  1z

159
необхідно і достатньо, щоб для будь-якої множини А вершин цієї мережі
виконується умова
C (U A )  d ( A).
Доведення. Необхідність. Нехай  (u), який насичує всі дуги виходу.
 ( y, x )  C ( y, x ), y   1z.
У вершини у можна постачити стільки речовини, скільки вимагають
дуги, що йдуть на вихід.
F ( A)  d ( A), але C (U A )  F ( A)  C (U A )  d ( A).
Достатність. Нехай C (U A )  d ( A)
Розглянемо довільний розріз W  U S , A  S /{z}  A  X .
d ( A)  C (U A )  C (U S )   C ( x, z )  C (W )  d ( X / A)
x A

C (W )  d ( A)  d ( X / A)  d ( X )
C (W )  d ( X )  min C (W )  d ( X )
max  z  d ( X ),

Такий потік насичує і всі дуги виходу.


Наслідок 3.5 (Теорема про насичення) Для того, щоб
 ( B), G  X ,   (потік, який насичує всі дуги виходу) необхідно і
достатньо, щоб для B   1 z, виконувалася умова
F ( B)  d ( B).
3.9.5. Зв'язок задачі максимізації потоку з іншими задачами
дослідження операцій.
Домовимося надалі x0z-мережу називати стандартною x0z -мережею.
Це нам необхідно, щоб відрізняти її від x0z-мереж, що мають додаткові
обмеження чи специфічні властивості.
1. Потік з декількома джерелами і джерелами приймачами. Задано
орграф G  X,U , C (u ) . Множина X складається з множини джерел
X 0  {x1,x2 ,...,x l } , множини проміжних вершин N  {xl 1,...,x m } і
множини джерел приймачів Z  {xm1,....,x n } .
Розширимо орграф G до орграфа G  (X ,U , C (u) ) , додавши дві
фіктивні вершини x0 і xn 1 ( x0 - джерело; xn 1 - джерело приймач) і
фіктивні дуги (x 0 ,x j ), j  1,l і (xi ,xn 1 ),i  m  1,n . Пропускні здатності
фіктивних дуг:

160
b0 , j   b ji(j  1,l ) і bi ,n 1   b ji(i  m  1,n ).
(j,i)X (j,i)X
Величину потоку у вихідному орграфі G і в розширеному орграфі
G  визначають пропускні здатності дуг орграфа G . Отже, задача про
максимальний потік з множини джерел X 0  {x1,x2 ,...,x l } у множину
джерел приймачів Z  {xm1,....,x n } орграфа G еквівалентна задачі про
максимальний потік у стандартній x0z-мережі. Приклад зведення на рис.
3.24. (фіктивні дуги - пунктирні).

2
x1 x4 4
5
3 2
x0 x3 z
4 3
9
x2 x5 8
5

Рис. 3.24 . Орграф з двома джерелами та двома витоками.

2. Потік з обмеженнями на пропускні здатності вершин. Нехай


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

4
x1(5) x4(2)
3 3
3 2
x0(5) z(5)
4 2
4 4
x2(4) x5(4)
2

Рис. 3.24а . Орграф з обмеженнями на пропускні здатності


вершин.

потік, що задовольняє цим додатковим обмеженням. Ця задача


еквівалентна задачі про максимальний потік у стандартній x0z -мережі.

161
Дійсно, можна побудувати стандартну x0z -мережу, в якій для кожної
вихідної вершини xi долучають фіктивну вершину x*i , а пропускну

здатність фіктивної дуги x , x 


i
*
i встановлюють рівною пропускній
здатності вершини xi . Приклад x0z -мережі з обмеженнями на пропускні
здатності вершин на рис. 3.24а. (пропускну здатність вершини зазначено
над нею). Зведення цієї мережі до стандартної x0z -мережі
проілюстровано на рис. 3.24б. (фіктивні дуги - пунктирні).

x11 5 4 2
x0(5)
x66 x3 x8
3 3
2
5 5
x0 x5 z x10
2
4 4
4 2 x4 4 x9
x2 x7
Рис. 3.24б. Зведення мережі до стандартної.

3.10. Досконалі паракомбінації у дводольних графах

Розглянемо задачу про представників, що є похідною від теореми


Філіпа Холла про максимальну паракомбінацію у дводольному графі або
відомою під іншою назвою як теорема Холла про весілля. Для розв’язання
цієї задачі оптимальним є угорський
алгоритм, запроваджений Гароль- g1
дом Куном в 1955 р. на основі праць b1
угорських математиків Денеша
g2
Кйоніга та Ейгена Егерварі (що і
b2
дало назву методу). Цей метод
полягає в пошуку максимальної g3
паракомбінації у дводольному графі. b3
Щодо задачі про представників,
то найпоширенішим є наступне g4
формулювання умови задачі: Нехай b4
задані скінчені множини юнаків та
g5
дівчат. При цьому кожен юнак з
першої множини знайомий з
Рис.3.25. Граф знайомств
декількома дівчатами з другої.

162

You might also like