
- •ЗАВДАННЯ
- •ВСТУП
- •Завдання 1.
- •Завдання 2.
- •Завдання 3.
- •Завдання 4.
- •Завдання 5.
- •Завдання 6.
- •Завдання 7.
- •Завдання 8.
- •Завдання 9.
- •Завдання 10.
- •Завдання 11.
- •Завдання 12.
- •Завдання 13.
- •Завдання 14.
- •Завдання 15.
- •Завдання 16.
- •Завдання 17.
- •Завдання 18.
- •Завдання 19.
- •Завдання 20.
- •Частина – 2. Теорія графів. Дерева.
- •Завдання 1.
- •Завдання 2.
- •Завдання 3.
- •СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
Частина – 2. Теорія графів. Дерева.
Завдання 1.
Одним зі способів подання графів є матриця суміжності.
Нехай G=(V,E) — простий граф, |V | n . Припустимо, що вершини графа G занумеровані: v1 , v2 , ..., vn . Матрицею суміжності графа G називають
булеву n n |
матрицю А з елементами ai, j (i,j= 1, ..., n ), де |
||
|
|
|
1, якщо vi ,v j E, |
ai, j |
|
|
|
|
|
|
|
|
|
0 в протилежному випадку. |
|
|
|
||
|
|
|
Цілком очевидно, що для неорієнтованого графа ai, j a j,i , тобто матриця
суміжності симетрична. Більше того, оскільки у простому графі немає петель, то для нього з матриці суміжності ai,i 0 (i 1,..., n) .
Матрицю суміжності можна використовувати також для подання
псевдографа. |
|
|
Тоді це не булева матриця: елемент |
ai, j дорівнює кількості ребер, що |
|
з'єднують vi |
та v j . Петлю у вершині vi |
подають значенням діагонального |
елемента ai,i 1. |
|
|
Для подання орієнтованих графів також використовують матрицю |
||
суміжності. |
|
|
Це булева n n матриця А з елементами ai, j (i, j 1,...,n) , де |
||
|
1, якщо vi ,v j E, |
|
|
|
|
ai, j |
|
|
0 в протилежному випадку.
Матриця суміжності орієнтованого графа несиметрична.
Матрицю суміжності можна використовувати й для подання орієнтованого мультиграфа. У такому разі це не булева матриця: елемент ai, j дорівнює
кількості дуг, які мають vi початковою вершиною, a v j — кінцевою.
Велика перевага матриці суміжності як способу подання графа — швидкий доступ до інформації: за один крок можна одержати відповідь на питання, чи існує ребро (дуга) з vi у v j . Вада полягає в тому, що незалежно від кількості
ребер обсяг пам'яті становить n2 комірок.

1.1. Розглянемо подану матрицю суміжності. Оскільки вона несиметрична, можемо зробити висновок, що даний граф – орієнтований. Крім того, матриця не є булевою, а отже задано орієнтований мультиграф. Враховуючи ці дані, побудуємо заданий граф.
v2
|
е1 |
|
е2 |
|
|
||
|
|
|
|
v3 |
|
||
|
v1 |
|
е15 |
|
е3 |
||
|
|
|
|
|
|
||
|
|
е14 |
|
|
е8 |
е4 |
|
|
|
|
е7 |
|
е9 |
||
|
е13 |
|
|
е5 |
|
||
|
|
е11 |
е6 |
|
|
||
|
|
|
е12 |
|
|
|
|
|
v5 |
|
е16 |
|
v4 |
е10 |
|
|
|
|
е17 |
|
|
||
|
|
|
|
|
|
|
|
1.2. |
Метод зображення |
графа |
списком |
пар, які відповідають його |
ребрам (або дугам), значно економніший щодо пам'яті, особливо якщо m (кількість ребер) значно менша, ніж n2 ( n — кількість вершин). Пара u,v відповідає ребру u,v , якщо граф неорієнтований, і дузі (u,v) , якщо граф
орієнтований. Обсяг пам'яті в цьому разі дорівнює 2m ( m — кількість ребер або дуг). Це найекономніший щодо пам'яті спосіб. Його вада — велика (порядку m ) кількість кроків для знаходження множини вершин, до яких ідуть ребра чи дуги із заданої вершини.
Запишемо всі пари дуг, що належать даному графові:
v1 ,v2 , |
v2 ,v3 , |
v3 ,v3 , |
v3 ,v4 , |
v3 ,v4 , |
v3 ,v5 , |
v4 ,v2 , |
v4 ,v3 , |
v4 ,v3 , |
v4 ,v4 , |
v4 ,v5 , |
v4 ,v5 , |
v5 ,v1 , |
v5 ,v1 , |
v5 ,v3 , |
v5 ,v4 , |
v5 ,v4 . |
|
1.3. Кількість вершин: 5 ( v1 ,v2 ,v3 ,v4 ,v5 ). Кількість дуг: 17.
Якщо в орієнтованому мультиграфі G=(V, E), (u, v) Е, то вершину u
називають початковою (ініціальною), а вершину v — кінцевою
(термінальною) вершиною дуги e (u,v) . Петля має початок і кінець в одній
ітій самій вершині.
Ворієнтованому мультиграфі напівстепенем входу вершини v
називають кількість дуг, для яких вершина v кінцева; позначають deg (v) . Напівстепенем виходу вершини v називають кількість дуг, для яких вершина v початкова; позначають deg (v) .
Тоді для заданого графа:

|
|
deg- (v ) 2, |
|
deg- (v ) 2, |
|
|
deg- (v ) 5, |
deg- (v ) 5, |
deg- (v ) 3; |
|
|||||||||||||||||||
|
|
|
|
1 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
3 |
|
|
|
4 |
|
|
5 |
|
|
|
|
deg (v ) 1, |
|
deg (v ) 1, |
deg (v ) 4, |
deg (v ) 6, |
deg (v ) 5. |
|
|||||||||||||||||||||
|
|
|
|
1 |
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
3 |
|
|
|
4 |
|
|
5 |
|
|
|
|
1.4. Нехай |
G=(V, |
E) |
— |
|
простий |
граф |
із |
множиною |
вершин |
|||||||||||||||||||
|
|
V v1 ,v2 , |
,vn і множиною ребер E e1 ,e2 , ,en |
|
|
|
|
|
|||||||||||||||||||||
|
|
Матрицею інцидентності орієнтованого графа G, яка відповідає |
|||||||||||||||||||||||||||
|
|
заданій нумерації вершин і дуг, називають булеву n m матрицю М |
|||||||||||||||||||||||||||
|
|
з елементами mi, j (i 1, |
|
, n; |
j 1, |
, m) |
, де |
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
1, |
якщо дуга ej |
|
виходить з вершини vi , |
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
1, якщо дуга e |
j |
входить в вершину v , |
|
|
|
|
|
|
||||||||||||||||
|
|
mi, j |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
петля у вершині vi , |
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
2, якщо дуга ej |
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 в інших випадках. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
e |
e |
2 |
e |
3 |
e |
4 |
e |
5 |
e |
6 |
e |
7 |
|
e |
8 |
e |
9 |
e |
|
e |
e |
e |
e |
e |
e |
e |
||
|
1 |
|
|
|
|
|
|
|
|
|
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|
17 |
||||||||||
v1 |
1 0 0 0 |
|
0 0 0 0 0 0 0 0 1 |
1 |
0 0 0 |
||||||||||||||||||||||||
v |
1 1 0 0 |
|
0 0 1 0 0 0 0 0 0 0 |
0 0 0 |
|
||||||||||||||||||||||||
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v3 |
|
0 1 2 1 |
|
1 1 0 1 |
|
|
1 0 0 0 0 0 |
1 0 0 |
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v4 |
|
0 0 0 1 |
1 0 1 1 1 2 1 1 0 0 |
0 1 |
1 |
||||||||||||||||||||||||
v |
|
0 0 0 0 |
|
0 1 0 |
|
0 0 0 1 |
1 1 1 |
1 1 1 |
|
||||||||||||||||||||
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.5. |
Нехай G1 (V1 , E1 ) і G2 (V2 , E2 ) — прості |
графи, a :V1 |
V2 — |
|||
бієкція. Якщо для будь-яких вершин u |
та v графа G1 |
їх образи (u) |
та (v) |
|||
суміжні в G2 тоді й лише тоді, коли u |
та v суміжні в G1, то цю бієкцію |
|||||
називають ізоморфізмом графа G1 на граф G2, а графи G1 і G2 — ізоморфними |
||||||
(записують G1 |
G2 ). Отже, прості графи G1 і G2 ізоморфні, якщо існує така |
|||||
бієкція |
( :V1 |
V2 , що |
u,v V1 ({u,v} E1 тоді |
й лише тоді, коли |
{ (u), (v),} E2 ).
Для побудови ізоморфного графа до даного, використаємо властивість ізоморфних графів: графи ізоморфні тоді й тише тоді, коли їх матриці суміжності можна отримати одну з одної однаковими перестановками рядків і стовпців.
|
v1 |
v2 |
v3 |
v4 |
v5 |
|
|
|
|
|
|
v1 |
v3 |
v2 |
v5 |
v4 |
v1 |
0 |
1 0 |
0 |
0 |
|
|
|
|
|
v1 |
0 |
0 1 |
0 |
0 |
||
v2 |
0 |
0 |
1 |
0 |
0 |
|
|
Переставимо між собою |
|
v2 |
0 |
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
v3 |
0 |
0 |
1 |
2 |
1 |
|
2 і 3 та 3 і 4 стовпці: |
|
v3 |
0 |
1 |
0 |
1 |
2 |
||
|
|
|
|
|||||||||||||
v4 |
|
|
|
|
|
|
|
|
|
|
v4 |
|
|
|
|
|
0 |
1 2 |
1 |
2 |
|
|
|
|
|
0 |
2 1 |
2 |
1 |
||||
v |
2 |
0 1 |
2 |
0 |
|
|
|
|
|
v |
2 |
1 0 |
0 |
2 |
||
5 |
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|

|
|
|
|
|
|
v1 |
v3 |
v2 |
v5 |
v4 |
|
|
|
u1 |
u2 |
u3 |
u4 |
u5 |
||
|
|
|
|
|
v1 |
0 |
0 1 |
0 |
0 |
|
u1 |
0 |
0 1 |
0 |
0 |
|||||
|
|
Переставимо між собою |
|
v |
0 |
1 |
0 |
1 |
2 |
|
u |
|
0 |
|
1 |
0 |
|
1 |
2 |
|
|
|
|
3 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|||
|
2 і 3 та 3 і 4 рядки: |
|
v2 |
0 |
1 |
0 |
0 |
0 |
|
u3 |
0 |
|
1 |
0 |
|
0 |
0 |
|||
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
v5 |
|
|
|
|
|
|
u4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 0 |
0 |
2 |
|
2 |
1 0 |
0 |
2 |
|||||||
|
|
|
|
|
v |
0 |
2 1 |
2 |
1 |
|
u |
0 |
2 1 |
2 |
1 |
|||||
|
|
|
|
|
4 |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
Отримана в результаті матриця є матрицею суміжності графа, ізоморфного
до даного. Побудуємо отриманий граф:
u2
u1 |
u3 |
u5 |
u4 |
1.6. Ейлеровим циклом у зв'язному орієнтованому мультиграфі називають орієнтований простий цикл, який містить усі ребра графа. Орієнтований граф ейлерів (тобто містить Ейлерів шлях), якщо він зв’язний і напівстепені входу і виходу рівні для кожної вершини.
На основі цього твердження та значень напівстепенів входу на виходу, отриманих у 1.3. можемо зробити висновок, що Ейлеровий цикл у даному граф не існує.
Ейлерів шлях існує в орієнтованому графі тоді і тільки тоді, коли відповідний граф зв’язний, не більше, ніж одна вершина має deg (v) deg (v) 1, не більше, ніж одна вершина - deg (v) deg (v) 1, а всі
інші вершини мають рівні напівстепені входу і виходу deg (v) deg (v) Таким чином, даний граф не містить Ейлерового шляху.

1.7.Шлях x0 , x1 ,..., xn 1, xn у зв'язному графі G = (V, Е) називають
гамільтоновим шляхом, якщо V x0 , x1 ,..., xn 1 , xn і xi x j для 0 i j n . Цикл x0 , x1 ,..., xn 1 , xn , x0 (тут n >1) у графі G = (V, Е) називають гамільтоновим циклом, якщо x0 , x1 ,..., xn 1, xn — гамільтонів шлях. Інакше кажучи, гамільтонів цикл і гамільтонів шлях проходять через кожну вершину графа точно один раз (можливо, окрім першої й останньої вершин). Гамільтонові цикл і шлях можуть не містити усіх ребер графа.
Для знаходження гамільтонових циклу та шляху використовується бектрекінг, суть якого зводиться до побудови дерева усіх можливих варіантів проходження графа. Головна ідея методу полягає в тому, що розв'язок будують поступово, починаючи з порожньої послідовності (довжиною 0). Загалом, якщо є частковий (неповний) розв'язок (x1 ,..., xi ) для скінченної послідовності
(x1 ,..., xn ) , де і < n , то намагаємося знайти таке допустиме значення xi 1 , що можна продовжувати (x1 ,..., xi , xi 1 ) до одержання повного розв'язку. Якщо таке допустиме, але ще не використане значення xi 1 існує, то долучаємо цю нову компоненту до часткового розв'язку та продовжуємо процес для послідовності (x1 ,..., xi , xi 1 ) . Якщо такого значення xi 1 немає, то повертаємося до попередньої послідовності (x1 ,..., xi 1 ) і продовжуємо процес, шукаючи нове, іще не використане значення xi . Тому процес називають бектрекінгом (англ. backtracking — пошук із поверненнями).
Спробуємо побудувати гамільтонів шлях і цикл.
v1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
е1 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
е3 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
е3 |
|
е4, |
|
|
е6 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
е5 |
|
|
|
|
|
||
|
|
|
v3 |
|
|
|
|
v4 |
|
|
|
|
v5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
е16, |
|
е7 |
е8, |
|
|
|
|
е11, е13, |
|
|
|||||||
|
|
|
|
|
|
|
е17 |
|||||||||
|
е9 |
|
е10 |
|
е12 |
е14 |
е15 |
|||||||||
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||
v2 |
|
|
v3 |
|
|
v4 |
|
v5 |
|
|
v1 |
|
v3 |
|
v4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
е13, |
|
|
|
||||
|
|
|
|
|
|
|
|
|
е14 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v1

Як бачимо, даний граф містить і гамільтонів шлях, і гамільтонів цикл.
(v1 ,v2 ,v3 ,v4 ,v5 ) :
Шлях:
(v1 ,v2 ,v3 ,v5 ,v4 ) :
Цикл: (v1 ,v2 ,v3 ,v4 ,v5 ,v1 ) :
(e1 ,e2 ,e4 ,e11 )(e1 ,e2 ,e4 ,e12 )(e1 ,e2 ,e5 ,e11 ) ;(e1 ,e2 ,e5 ,e12 )(e1 ,e2 ,e6 ,e16 )(e1 ,e2 ,e6 ,e17 )
(e1 ,e2 ,e4 ,e11 ,e13 )(e1 ,e2 ,e4 ,e12 ,e13 )(e1 ,e2 ,e5 ,e11 ,e13 )(e1 ,e2 ,e5 ,e12 ,e13 )(e1 ,e2 ,e4 ,e11 ,e14 )(e1 ,e2 ,e4 ,e12 ,e14 )(e1 ,e2 ,e5 ,e11 ,e14 )(e1 ,e2 ,e5 ,e12 ,e14 )
1.8. Зваженим називають простий граф, кожному ребру є якого приписано дійсне число w(e). Це число називають вагою ребра е. Аналогічно означають зважений орієнтований граф: це такий орієнтований граф, кожній дузі є якого приписано дійсне число w(e), називане вагою дуги.
Спочатку визначимо вагу кожного ребра:
|
|
v2 |
|
|
|
2 |
|
|
5 |
|
|
|
|
|
v3 |
|
|
v1 |
|
4 |
|
3 |
|
|
|
|
|
|
|
|
3 |
|
1 |
3 |
|
|
|
3 |
2 |
||
4 |
1 |
5 |
|
||
|
2 |
3 |
|
|
|
|
|
|
|
|
|
v5 |
|
3 |
v4 |
4 |
|
|
|
5 |
|
||
|
|
|
|
|
|
Знайдемо найкоротший шлях від вершини v5 |
до вершини v2 . Для цього |
використаємо алгоритм Дейкстри. Цей алгоритм застосовний лише тоді, коли вага кожного ребра (дуги) додатна.
Нехай G = (V,E) — зважений орієнтований граф, w(vi , v j ) — вага дуги
(vi , v j ) . Почавши з вершини а, знаходимо віддаль від а до кожної із суміжних
із нею вершин. Вибираємо вершину, віддаль від якої до вершини а найменша; нехай це буде вершина v . Далі знаходимо віддалі від вершини а до кожної вершини суміжної з v вздовж шляху, який проходить через вершину v . Якщо для якоїсь із таких вершин ця віддаль менша від поточної, то заміняємо нею поточну віддаль. Знову вибираємо вершину, найближчу до а й не вибрану раніше; повторюємо процес.
Описаний процес зручно виконувати за допомогою присвоювання вершинам міток. Є мітки двох типів — тимчасові та постійні. Вершини з постійними мітками групують у множину М, яку називають множиною позначених вершин. Решта вершин має тимчасові мітки, і множину таких вершин позначимо як Т, Т= V\M. Позначатимемо мітку (тимчасову чи постійну) вершини v як l(v). Значення постійної мітки l(v) дорівнює довжині найкоротшого шляху від вершини а до вершини v, тимчасової — довжині найкоротшого шляху, який проходить лише через вершини з постійними мітками.
Фіксованою початковою вершиною вважаємо вершину а; довжину найкоротшого шляху шукаємо до вершини z (або до всіх вершин графа).
Крок 1. Присвоювання початкових значень. Виконати l(v):= 0 та вважати цю мітку постійною. Виконати l(v) := для всіх v a а й уважати ці мітки тимчасовими. Виконати х := а, М:= {а}.
Крок 2. Оновлення міток. Для кожної вершини v є Т(х)\М замінити мітки l(v) : min{l(v);l(x) w(x,v)}, тобто оновлювати тимчасові мітки
вершин, у які з вершини х іде дуга.
Крок 3. Перетворення мітки в постійну. Серед усіх вершин із тимчасовими мітками знайти вершину з мінімальною міткою, тобто знайти вершину v з умови l(v ) min{l(v)} , v Т, де Т= V\M.
Крок 4. Уважати мітку вершини v постійною й виконати M : M {v }; x : v (вершину v включено в множину М).
Крок 5. а) Для пошуку шляху від а до z: якщо x = z, то l(z) — довжина найкоротшого шляху від а до г, зупинитись; якщо x z, то перейти до кроку 2.
б) Для пошуку шляхів від а до всіх інших вершин: якщо всі вершини отримали постійні мітки (включені в множину М), то ці мітки дорівнюють довжинам найкоротших шляхів, зупинитись; якщо деякі вершини мають тимчасові мітки, то перейти до кроку 2.

1.З вершини v5 виходять п’ять дуг вагою 4,3,4,3,5. Мінімальну вагу (3) мають дві дуги ( e14 ,e16 ), які ведуть до вершин v1 i v4 відповідно.
2.З вершини v1 до v2 довжина шляху (дуга
e1 )дорівнює 3 2 5, з v4 до v2 (дуга e7 ) 3 3 6.
Таким чином, найкоротший шлях від вершини v5 до вершини v2
(v5 ,v1,v2 ) через дуги (e14 ,e1 ), і його довжина дорівнює 5.
|
|
|
v2 |
|
|
|
2 |
|
|
|
5 |
|
|
|
|
|
|
v3 |
3 |
|
v1(3) |
|
|
4 |
|
||
|
|
|
|
|
|
|
3 |
|
|
|
1 |
3 |
|
|
|
|
3 |
2 |
|
|
4 |
1 |
|
5 |
|
||
2 |
3 |
|
|
|||
|
|
|
|
|
||
v5(0) |
|
|
3 |
|
v4(3) |
|
|
5 |
|
|
|||
|
|
4 |
|
|
||
|
|
|
|
|
|
|
|
|
|
v2 |
|
|
|
2 |
|
|
|
5 |
|
|
|
|
|
|
v3 |
3 |
|
v1(3) |
|
|
|
|
||
3 |
|
|
|
1 |
3 |
|
|
|
|
3 |
2 |
|
|
|
1 |
5 |
|
|||
|
2 |
3 |
|
|
||
|
|
|
|
|
|
|
v5(0) |
|
|
3 |
|
v4(3) |
|
|
|
|
|
|
||
|
|
|
v2 |
4 |
|
|
2 |
|
|
|
|
v3 |
|
v1 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
v5 v4
1.9.Простим графом називають пару
G=(V,Е), де V — непорожня скінченна множина елементів, називаних
вершинами, Е — множина невпорядкованих пар різних елементів із V. Елементи множини Е (невпорядковані пари різних вершин)
називають ребрами.
V3
Побудуємо простий граф з
чотирма вершинами:
V1 V4
V2