- •Теорія графів Конспект лекцій
- •6. 050103 „Програмна інженерія”
- •1. Основні означення та властивості
- •2. Деякі спеціальні класи простих графів
- •3. Способи подання графів
- •3.3.2. Матриця суміжності
- •3.3.3. Подання графа списком пар (списком ребер)
- •3.3.4. Подання графа списками суміжності
- •4. Ейлерів цикл у графі
- •5. Алгоритм Флері побудови ейлерового циклу
- •6. Гамільтонів цикл у графі
- •3.7. Зважені графи й алгоритми пошуку найкоротших шляхів
- •3.8. Алгоритм Дейкстри
- •3.9. Алгоритм Флойда
- •3.9. Обхід графів
- •3.9.1. Пошук углиб у простому зв'язному графі
- •3.9.2. Пошук ушир у простому зв'язному графі
- •3.10. Планарні графи
2. Деякі спеціальні класи простих графів
Розглянемо деякі спеціальні класи простих графів, часто використовувані як приклади й широко застосовувані [15].
Повний граф з п вершинами (позначають як Кп) — це граф, у якому будь-яку пару вершин з'єднано точно одним ребром.
Приклад 3.9. На рис. 3.9 зображено графи Кп для п = 1, 2, 3, 4, 5.
Рис. 3.9 Повні графи
Граф називають порожнім, якщо Е = 0, тобто такий граф не має ребер. Порожній граф з п вершинами можна розбити на дві підмножини У4 і У2, що не перетинаються (VX U V2=V, Vx U У2 = 0), так, що кожне ребро з'єднує вершину з V, і вершину з V2. Дводольний граф називають повним, якщо кожну вершину з У4 з'єднано ребром із кожною вершиною з V2. Повний дводольний граф позначають як Кт , де т= \УХ\, п= |У2|. Граф Кх називають зіркою.
Граф Кт×п має п + т вершин та п×т ребер.
Приклад 3.10. На рис. 3.10 наведено повні дводольні графи Ki5, K32 та К33.
Рис. 3.10 Дводольні графи
Циклом Сп, п > 3, називають граф із множиною вершин і множиною ребер Е={{ot, v2}, {v2, v^}, ..., {vn^, vn), {vn, vx}}.
Приклад 3.11. На рис. 3.11 зображено цикли C3, C4, C5 i C6.
Рис. 3.11 Цикли
Колесом Wn називається граф, який можна одержати з циклу Сп додаванням іще однієї вершини, з'єднаної з усіма и вершинами в Сп новими ребрами.
Приклад 3.12. На рис. 3.12 зображено колеса W3, W4, W5, W6.
Простий граф, вершини якого зображають yсі 2 бітові рядки довжиною п, називають п - вимірним кубом і позначають Qп. Дві вершини в Qп з'єднано ребром тоді и лише тоді, коли бітові рядки, які їx подають, відрізняються точно в одному біті.
Граф Qn+1 можна отримати з двох графsв Q з'єднавши ребрами їxнi однаково позначені вершини. Після цього до бітових рядків у вершинах одного з графів Qn зліва дописують 0, другого — 1.
Приклад 3.13. На рис. 3.13 зображено графи Q1 ,Q2 та Qз
Рис. 3.13 N-вимірні куби
3. Способи подання графів
Найзрозуміліший і корисний для людини cпоcі6 подання (зображення) графів — це рисунок на площині у вигляді точок і ліній, які з'єднують ці точки. Проте цей cпoсі6 подання абсолютно непридатний, якщо потрібно розв'язувати на комп'ютері задачі з графами.
Розглянемо декілька інших способів подання графів для двох найважливіших графів: простого й орієнтованого (рис. 3.15).
Рис. 3.15 Простий та орієнтований граф
Матрицю, кожний елемент якої дорівнює 0 чи 1, називають булевою.
3.3.1. Матриця інцидентності
Нехай G=(V,E) — простий граф із множиною вершин V={v1 , v2, ..., vn} і множиною ребер Е - {е1, е2, ..., ет).
Матрицею інцидентності графа G, яка відповідає заданій нумерації вершин і ребер, називають булеву п×т матрицю М з елементами mij (і= 1,..., п; j = 1,..., m), де mij = 1, якщо вершина vi та ребро ei, інцидентні, mij = 0 у протилежному випадку.
Приклад 3.14. Для неорієнтованого графа, зображеного на рис. 3.14, матриця інцидентності має вигляд
Отже, для простого графа в матриці інцидентності в кожному стовпці точно дві одиниці, і немає однакових стовпців. Матрицю інцидентності можна використовувати й для подання мультиграфа. Тоді з'являться однакові стовпці (вони відповідають кратним ребрам). Для подання псевдографа, якщо в ньому є петлі, у відповідних позиціях матриці ставимо 2 (у цьому разі матриця інцидентності не булева).
За допомогою матриці інцидентності можна подавати й орієнтовані графи. Для таких графів вона також не булева. Нехай G = (V, E) — орієнтований граф із множиною вершин V={v1,v2, ...,vn} і множиною дуг Е= {е1 е2, ..., ет). Матрицею інцидентності орієнтованого графа G, яка відповідає заданій нумерації вершин і дуг, називають п×т матрицю М з елементами mij (і= 1,..., п; j = 1,..., m), де
Приклад 3.15. Для орієнтованого графа, зображеного на рис. 3.15, матриця інцидентності має вигляд
З алгоритмічного погляду матриця інцидентності — це, мабуть, найгірший спосіб подання графа, який тільки можна собі уявити [23]. По-перше, для цього потрібно п×т комірок пам'яті, більшість із яких зайняті нулями. По-друге, доступ до інформації незручний. Щоб отримати відповідь на елементарні питання (наприклад, чи існує дуга (vi, vj), до яких вершин ведуть дуги з vi), у найгіршому випадку потрібно перебрати всі стовпці матриці, тобто виконати т кроків.
