Professional Documents
Culture Documents
Lab Rob3
Lab Rob3
Кафедра САП
Львів-2022 р.
2
Укладач: О. М. Станкевич
3
1. МЕТА РОБОТИ
2. ТЕОРЕТИЧНI ВIДОМОСТI
2.1. Властивості графів.
Маршрути, шляхи та цикли
Маршрутом у заданому графі G = (V, Е) називається скінченна послідовність
його ребер, яка має вигляд (v0, v1), (v1, v2), ..., (vk-1, vk).
Кількість k ребер маршруту називають його довжиною. Часто можна зустріти
і таке означення маршруту в графі.
Послідовність вершин v0, v1, …, vk графа G = (V, Е) називають маршрутом,
який з’єднує вершини v0 і vk якщо (vi, vi+1) E, i = 0, …, k − 1. В обох випадках
вершини v0, v1, …, vk називають вершинами маршруту.
Маршрут називають шляхом, якщо всі його ребра різні, і простим шляхом,
якщо всі його вершини, крім, можливо, першої і останньої, різні. Маршрут
називають циклічним або циклом, якщо перша і остання його вершини збігаються.
Маршрут називають простим циклом, якщо всі його вершини, крім, можливо,
першої і останньої, різні.
Граф називають ациклічним графом або лісом, якщо він не містить циклів.
Безпосередньо з означення маршруту і циклу випливають такі твердження.
Твердження 1. Будь-який маршрут, який з’єднує які-небудь дві вершини, має
простий шлях, що з’єднує ці вершини.
Твердження 2. Будь-який цикл в графі має простий цикл.
Приклад. Розглянемо граф, який має 5 вершин та 6 ребер:
4
Рис. 1.
Як можна пройти ребрами цього графа (рис. 1) з вершини 1 у вершину 5? Для
прикладу, можна вказати три послідовності ребер, рухаючись якими можна
потрапити із 1 в 5:
а) {1, 4}, {4, 5};
б) {1, 2}, {2, 4}, {4, 5};
в) {1, 4}, {4, 2}, {2, 1}, {1, 4}, {4, 5}.
Для створення простого циклу в пакеті Maple18 користуються функцією
CycleGraph(). На рисунку побудовано простий цикл на 8 вершинах:
Рис. 2
Зв’язність графа
Граф називають зв’язним, якщо будь-які дві його вершини зв’язані
маршрутом. Зв’язний підграф Н графа G називається максимальним, якщо Н не
міститься в жодному зв’язному підграфі графа G. Максимальний зв’язний підграф
5
графа називають компонентом зв’язності. Нехай G = {V, E} і H = {V1, E1} – задані
графи. Об’єднання графів G H називають диз’юнктивним, якщо V V1 = .
Теорема. Граф зв’язний тоді і тільки тоді, коли його не можна представити
у вигляді диз’юнктивного об’єднання двох графів.
Приклад. Розглянемо задачу: Чи може трапитись, що в одній компанії із шести
осіб кожний знайомий з двома і тільки двома іншими? Учасника цієї компанії
зобразимо вершиною графа, а відношення знайомства між двома учасниками –
ребром. Зобразимо графи, які можуть відповідати такій компанії.
Рис. 3.
Рис. 4.
Отже, ситуація, розглянута в задачі, цілком можлива (рис. 3). Але випадок,
розглянутий на рис. 4, відповідає не одній, а двом компаніям, де учасники однієї з
них не знайомі з учасниками іншої. Про граф, зображений на рис. 3 говорять, що він
6
зв’язний, оскільки з кожної вершини, рухаючись ребрами, можна потрапити в будь-
яку іншу вершину. Робимо висновок, що в цьому випадку кожен через своїх
знайомих може познайомитись зі всіма іншими. В іншому випадку (рис. 4) одержали
дві окремі частини, які не зв’язані між собою ребрами. Такий граф називають
незв’язним, а “частини” – компонентами зв’язності. Кожна компонента – зв’язний
граф. Функція ConnectedComponents() знаходить компоненти зв’язності графа,
виводячи списки усіх ребер кожної компоненти (рис. 5):
Рис. 5.
Інший приклад:
Рис. 6.
Приклад.
Між 9 планетами Сонячної системи введено космічне сполучення. Ракети
літають за таким маршрутом: Земля-Меркурій, Плутон-Венера, Земля-Плутон,
Плутон-Меркурій, Меркурій-Венера, Уран-Нептун, Нептун-Сатурн, Сатурн-Юпітер,
Юпітер-Марс і Марс-Уран. Чи можна добратися з Землі до Марса?
Починаючи від Сонця, планети нашої сонячної системи можна пронумерувати
так: 1 – Меркурій, 2 – Венера, 3 – Земля, 4 – Марс, 5 – Юпітер, 6 – Сатурн, 7 – Уран,
8 – Нептун, 9 – Плутон.
7
Тоді граф, який відображає задане в задачі космічне сполучення, матиме
ребра: (3, 1), (9, 2), (3, 9), (9, 1), (1, 2), (7, 8), (8, 6), (6, 5), (5,4 ), (4, 7).
Побудувавши цей граф, бачимо, він не зв’язний і складається з двох
компонент. Вершина 3 (Земля) та 4 (Марс) належать до різних компонент. Отже, за
заданого космічного сполучення добратися з Землі до Марса неможливо.
а б
Рис. 7
Рис. 8.
а б
Рис. 11.
а б
Рис. 12.
Рис. 13.
2.2.2. Знаходження доповнення графа.
Функція GraphComplement() повертає доповнення до графа G, тобто граф з тим
самим набором вершин, що й G, але набір ребер (дуг) якого складається з ребер
(дуг), яких немає в G.
На рис. 14 подано послідовність команд для побудови циклічного графа K та
його доповнення – графа L, а також перелік ребер у кожному графі. На рис. 15
представлено їх графічне відображення.
Рис. 14.
а б
Рис. 15. Граф K (а) та його доповнення L (б).
13
2.2.3. Об’єднання графів.
Згідно з означенням об’єднанням графів G1 = (V1, E1) та G2 = (V2, E2)
називають граф G = (V, E) = G1 ∪ G2, в якому V = V1 ∪ V2 та E = E1 ∪ E2. Для
виконання цієї операції в Maple18 використовують функцію GraphUnion(). На
рис. 16 представлено приклад побудови доповнення до заданого графа.
Рис. 16.
Рис. 17.
Рис. 18.
Рис. 19.
Рис. 20.
2.2.7. Найкоротший шлях між двома вершинами (без врахування ваг ребер).
Для знаходження найкоротшого шляху між двома вершинами без врахування
ваг ребер в програмі Maple18 використовують функцію ShortestPath(). Результатом є
список вершин у тому порядку, в якому вони з’являються на шляху. Якщо такого шляху
не існує, повертається помилка.
Наприклад, потрібно знайти найкоротший шлях між вершинами (1, 3) графа G,
зображеного на рис. 20. Серед можливих шляхів можна виокремити: 1 – {1, 4, 2, 5, 3},
2 – {1, 8 7, 6, 5, 3}, 3 – {1, 8, 2, 5, 3}. За кількістю вершин у шляху найкоротшими є 1-ий
та 3-ій, однак 1-ий шлях має коротшу довжину. На рис. 21 представлено результат
виконання команди ShortestPath().
Для визначення кількості ребер на найкоротшому шляху між двома вершинами
графа слугує функція Distance(). Якщо такого шляху не існує, результатом є
нескінченність. Стратегія полягає у використанні пошуку в ширину (BFS). У
наведеному вище прикладі найкоротший шлях включає 4 ребра (рис. 21).
18
Рис. 21.
Рис. 22.
Рис. 23
5. Список літератури
1. Rosen K.H. Exploring Discrete Mathematics with Maple. 1996. Exploring Discrete
Mathematics Using Maple (mheducation.com)
24
2. Журавчак Л. М. Дискретна математика для програмістів : навч. посіб. – Львів :
Львівська політехніка, 2019. – 420 с.
25
ДОДАТОК 1
Варіанти індивідуальних завдань
Варіанти графів для завдання 4.1(1 – 4), завдання 4.2(1 – 5), завдання 4.3
26
27
28
29
30