
- •Тернопільський національний економічний університет кафедра комп’ютерної інженерії
- •До виконання практичних робіт з дисципліни
- •Введення
- •Тема 1. Множини
- •Тема 2. Відношення. Функції.
- •Тема 3. Графи.
- •Тема 4. Булеві функції
- •Тема 5. Нечіткі множини.
- •Тема 1. Множини
- •1.1.Основні поняття
- •1.2. Операції над множинами
- •1.3. Геометричне моделювання множин. Діаграми Венна
- •1.4. Алгебра множин. Основні тотожності алгебри множин
- •Основні тотожності алгебри множин
- •Задача для самостійного рішення
- •1.5. Еквівалентність множин
- •1.6. Зліченні множини
- •1.7. Множини потужності континуума
- •Контрольні питання до теми 1
- •Задачі для самостійного розв’язування
- •Домашнє завдання
- •Тема 2. Відношення. Функції
- •2.1. Відношення. Основні поняття й визначення
- •2.2. Операції над відносинами
- •2.3. Властивості відносин
- •2.4. Функції. Основні поняття й визначення
- •Способи задання функцій
- •Контрольні питання до теми 2
- •Задачі для самостійного розв’язання
- •Домашнє завдання
- •Література
- •Тема 3. Графи
- •3.1. Основні характеристики графів
- •3.2. Матричні способи задання графів
- •Основні властивості матриць суміжності й інцидентності
- •3.3. Ізоморфізм графів
- •3.4. Маршрути, цикли в неорієнтованому графі
- •3.5. Шляхи, контури в орієнтованому графі
- •3.6. Звязність графа
- •3.7. Екстремальні шляхи в зважених орієнтованих графах
- •3.8 Алгоритм Форда - Беллмана знаходження мінімального шляху Передбачається, що орієнтований граф не містить контурів негативної довжини.
- •3.9. Алгоритм знаходження максимального шляху
- •3.10. Дерева. Основні визначення
- •3.11. Мінімальні остовні дерева зважених графів
- •Контрольні питання до теми 3
- •Задачі для самостійного рішення
- •Домашнє завдання
- •Література
- •Тема 4. Булеві функції
- •4.1. Визначення булевої функції
- •4.2. Формули логіки булевих функцій
- •4.3. Рівносильні перетворення формул
- •Основні рівносильністі булевих формул.
- •Правило рівносильних перетворень
- •4.4. Двоїстість. Принцип двоїстості.
- •4.5. Булева алгебра (алгебра логіки). Повні системи булевих функцій
- •4.6. Нормальні форми
- •4.7. Розкладання булевої функції по змінним
- •4.8. Мінімізація формул булевих функцій у класі диз'юнктивних нормальних форм
- •4.9. Застосування алгебри булевих функцій до релейно-контактних схем
- •Контрольні питання до теми 4
- •5. Нечіткі множини
- •5.1 Операції над нечіткими множинами
- •5.2. Нечіткі відношення
- •5.3. Нечіткий логічний висновок
- •5.4. Методи приведення до чіткості
- •Контрольні запитання
- •Відповіді на контрольні питання
- •Тема 2.
- •Тема 3.
- •Тема 4.
- •Контрольні завдання за курсом "Дискретна математика".
- •1. Розділ «Множини»
- •2. Розділ «Відношення. Функції»
- •3. Розділ «Графи»
- •4. Розділ «Булеві функції»
- •Питання до екзамену з дисципліни «Дискретна математика»
- •3. Операції над множинами.
- •4. Геометричне моделювання множин. Діаграми Ейлера - Венна.
- •5. Алгебра множин. Основні тотожності алгебри множин.
- •Список рекомендованої літератури
- •Короткі відомості про математиків
3.10. Дерева. Основні визначення
Неорієнтованим деревом (або просто деревом) називається зв'язний граф без циклів. Цьому визначенню еквівалентні, як легко показати, що випливають визначення:
а) дерево є зв'язний граф, що містить n вершин й n - 1 ребер;
б) дерево є граф, будь-які дві вершини якого можна з'єднати простим ланцюгом.
Приклад 3.17.
Графи, зображені на рис. 3.12, є деревами.
Рис. 3.12
Якщо граф незв'язний і не має циклів, то кожний його зв'язний компонент буде деревом. Такий граф називається лісом. Можна інтерпретувати рис. 6.1 як ліс, що складається із трьох дерев.
Остовним деревом зв'язного графа G називається будь-який його підграф, що містить всі вершини графа G і є деревом.
Приклад 3.18.
Для графа, зображеного на рис. 3.13а), графи на рис. 3.13б) і 3.13в) є остовними деревами.
Рис. 3.13
Нехай граф G має n вершин й m ребер Тому, що всяке дерево з n вершинами по визначенню (див. розділ 6.1) має n – 1 ребер, те будь-яке остовное дерево графа G виходить із цього графа в результаті видалення m – (n – 1) = m – n + 1 ребер. Число g = m – n + 1 називається цикломатичним числом графа.
3.11. Мінімальні остовні дерева зважених графів
Граф G = (X, A) називається навантаженим, якщо для кожного ребра (xi,xj) визначена його довжина (або вага) cij.
Нехай G - зв'язний навантажений граф. Задача побудови мінімального остовного дерева полягає в тому, щоб із множини остовних дерев знайти дерево, у якого сума довжин ребер мінімальна.
Приведемо типові випадки, коли виникає необхідність побудови мінімального остовного дерева графа.
а) Потрібно з'єднати n міст залізничними лініями (автомобільними дорогами, лініями електропередач, мережею трубопроводів і т.д.) так, щоб сумарна довжина ліній або вартість була б мінімальною.
б)Потрібно побудувати схему електричної мережі, у якій клеми повинні бути з'єднані за допомогою проводів найменшої загальної довжини.
Задачу побудови мінімального остовного дерева можна вирішити за допомогою наступного алгоритму.
Алгоритм 3.2 (Алгоритм Краскала).
Крок 1. Установка початкових значень.
Уводиться матриця довжин ребер C графа G.
Крок 2. Вибрати в графі G ребро мінімальної довжини. Побудувати граф G2, що складається з даного ребра й инцидентных йому вершин. Покласти i = 2.
Крок 3. Якщо i = n, де n - число ребер графа, то закінчити роботу (задача вирішена), у противному випадку перейти до кроку 4.
Крок 4. Побудувати граф Gi +1, додаючи до графа Gi нове ребро мінімальної довжини, обране серед всіх ребер графа G, кожне з яких інцидентне якій-небудь вершині графа Gi й одночасно інцидентне якій-небудь вершині графа G, що не належить в Gi. Разом із цим ребром включаємо в Gi +1 і інцидентну йому вершину, що не включається в Gi. Привласнюємо i:= i +1 і переходимо до кроку 3.
Приклад 3.19.
Знайдемо мінімальне остовное дерево для графа, зображеного на рис. 3.14.
Рис. 3.14
Крок 1. Установка початкових значень.
Уведемо матрицю довжин ребер C:
С =
.
Крок 2. Виберемо ребро мінімальної довжини. Мінімальна довжина ребра дорівнює одиниці. Таких ребер три: (x1, x2), (x1, x4), (x2, x4). У цьому випадку можна взяти кожне. Візьмемо (x1, x2). Побудуємо граф G2, що складається з даного ребра і інцидентних йому вершин x1 та x2. Покладемо i = 2.
Крок 3. Тому, що n = 5, то i ¹ n, то переходимо до кроку 4.
Крок 4. Будуємо граф G3, додаючи до графа G2 нове ребро мінімальної довжини, обране серед всіх ребер графа G, кожне з яких інцидентне однієї з вершин x1, x2 і одночасно інцидентне якій-небудь вершині графа G, що не належить в G2 т. е. однієї з вершин x3, x4, x5. Таким чином, потрібно вибрати ребро мінімальної довжини з ребер (x1, x4), (x1, x5), (x2, x3), (x2, x4), (x2, x5). Таких ребер довжини одиниця два: (x1, x4) і (x2, x4). Можна вибрати кожне. Візьмемо (x1, x4). Разом із цим ребром включаємо в G3 вершину x4, що не належить в G2. Думаємо i = 3 і переходимо до кроку 3.
Крок 3. Тому що i ¹ n, тому переходимо до кроку 4.
Крок 4. Будуємо граф G4, додаючи до графа G3 нове ребро мінімальної довжини з ребер (x1, x5), (x2, x3), (x2, x5), (x4, x5). Таке ребро довжини два одне: (x2, x3). Разом із цим ребром включаємо в G4 вершину x3, що не належить в G3. Думаємо i = 4 і переходимо до кроку 3.
Крок 3. Тому що i ¹ n, тому переходимо до кроку 4.
Крок 4. Будуємо граф G5, додаючи до графа G3 нове ребро мінімальної довжини з ребер (x1, x5), (x2, x5), (x4, x5). Таких ребер довжини три два: (x2, x5) і (x4, x5). Візьмемо (x2, x5). Разом із цим ребром включаємо в G5 вершину x5, що не належить в G4. Думаємо i = 5 і переходимо до кроку 3.
Крок 3. Тому що i = n, те граф G5 – шукане мінімальне остовное дерево. Сумарна довжина ребер дорівнює 1 + 1 + 2 + 3 = 7.
Процес побудови мінімального остовного дерева зображений на рис. 3.15.
Рис. 3.15
Приклад 3.20
Неорієнтований граф мультиграф на 9 вершинах заданий вектором Rmn (табл. 9.13), де m та n – номера вершин графа. Неорієнтований граф заданий вектором Rmn (табл. 1), де m та n – номера вершин графа, m= 9,1 та n= 9,1 . Елементи вектора Rmn відповідають кількості ребер між відповідними вершинами m та n.
Таблиця 1.
Для заданого графа необхідно:
побудувати матрицю суміжності, діаграму графа;
знайти у графi ейлерів та (або) гамiльтонів цикли, якщо вони є;
визначити числові характеристики графа: хроматичне число, реберне
хроматичне число, цикломатичне число;
побудувати деяке остовне дерево графа;
записати код остовного дерева;
побудувати базис розрiзiв графа, базис циклів графа.
Запишемо матрицю суміжності (табл. 2).
Таблиця 2.
З матрицi сумiжностi видно, що граф матиме 26 ребер і 9 вершин. З таблицi можна побудувати діаграму графа та його матрицю iнциденцiї.
Гамiльтонів цикл відсутній, оскільки граф має точку счленення V8. Число компонент зв’язності – 1.
Визначимо степені усіх вершин. deg v1=7; deg v2=5; deg v3=8; deg v4=4; deg v5=4; deg v6=6; deg v7=6; deg v8=10; deg v9=2.
Заданий граф має 2 вершини з непарним степенем. Враховуючи достатні умови існування ейлеревих ланцюгів, у заданому графі присутній ланцюг. Знайдемо даний ланцюг, використовуючи алгоритм Фльорі.
Обираємо вершину з непарним степенем V1 та ребро e1. Додаємо ребро в ейлерів ланцюг. Видаляємо ребро e1 з графа. Обираємо наступне ребро так, щоб воно не входило у попередню вершину V1 та щоб воно не було мостом.
Продовжуємо операцію доти, доки не буле видалено усі ребра. Таким чином одержуємо ейлерів ланцюг e1, e15, e17, e19, e20, e25, e13, e14, e12, e16, e18, e26, e2, e3, e9, e6, e10, e11, e5, e8, e7, e22, e24, e4, e23, e21.
Визначимо хроматичне, реберне хроматичне та цикломатичне числа, для чого зробимо розфарбовування вершин та ребер графа. Розфарбуємо вершини графа.
Вершина v8 має найбільший степінь. Присвоюємо їй колір1. Також колір1 присвоюємо вершинам v1 та v5, оскільки вони не суміжні з вершиною v8 і не суміжні між собою. Обираємо вершину з найбільшим степенем з тих, що залишилися не розфарбованими. Це вершина v3. Присвоюємо їй колір 2. Також колір 2 присвоюємо вершинам v6, v2 та v9. Вершини v7, v4 та v5 отримають колір 3.
Таким чином, вершини наведеного графа можна розфарбувати у 3 кольори. Отже, хроматичне число h(G)=3. Аналогічно знаходимо реберне хроматичне число H(G)=10.
Для визначення цикломатичного числа застосуємо формулу знаходження цикломатичного числа: ν (G)= m-n+р=26-9+1=18. Побудуємо заданий граф G та деяке відповідне до нього остове дерево Т (рис. 7.4).
Запишемо код дерева Т. Обираємо вершину з найменшим степенем V2. Записуємо у код номер вершини, суміжної з вершиною V2 – 7. Видаляємо з остовного дерева ребро e20 та вершину V2.
Знаходимо з кінцевих вершин вершину з найменшим степенем – V5. У код записуємо 6. Видаляємо ребро e17 та вершину V5. Наступна кінцева вершина з мінімальним степенем V6. Записуємо код 4. Видаляємо ребро e15 вершину V6. Продовжуємо до тих пір, доки не залишиться 2 вершини V8 та V9 і ребро e13. Таким чином одержуємо код 7 – 6 – 4 – 1 – 3 – 8 – 8.
Побудуємо базис розрізів графа. Знайдемо ранг розрізів: χ(G)= m-ν =8.
Ранг розрізів відповідає кількості базисних розрізів для графа G.
e20: V1={ v2 }; V2={v1, v3, v4, v5, v6, v7, v8, v9},
c1={ e18, e19, e20, e21, e26};
e25: V1={ v2, v7 }; V2={v1, v3, v4, v5, v6, v8, v9 },
c2={ e18, e19, e22, e23, e24, e25, e26};
e13: V1={v9}; V2={v1, v2, v3, v4, v5, v6, v7, v8},
c3={e13, e14};
e5: V1={v2, v7, v8, v9}; V2={v1, v3, v4, v5, v6},
c4={e4, e5, e6, e10, e11, e12, e18, e19, e22, e23, e26};
e8: V1={ v2, v3, v7, v8, v9}; V2={ v1, v4, v5, v6},
c5={ e7, e8, e9, e10, e11, e12, e18, e19, e26};
e2: V1={ v1, v2, v3, v7, v8, v9}; V2={ v4, v5, v6},
c6={e1, e2, e3, e10, e11, e12, e18, e19};
e15: V1={ v1, v2, v3, v4, v7, v8, v9}; V2={ v5, v6},
c7={ e10, e11, e12, e15, e18, e19};
e17: V1={ v1, v2, v3, v4, v6, v7, v8, v9}; V2={ v5},
c8={ e16, e17, e18, e19}.
Побудуємо матрицю розрізів (табл. 9.15). Виразимо 3 небазисні розрізи через базисні.
с9={e25,e5, e4,e6, e10,e11, e12,e24}
|
с1 |
с2 |
с3 |
с4 |
с5 |
с6 |
с7 |
с8 |
e20 |
1 |
|
|
|
|
|
|
|
е25 |
|
1 |
|
|
|
|
|
|
е13 |
|
|
1 |
|
|
|
|
|
e5 |
|
|
|
1 |
|
|
|
|
е8 |
|
|
|
|
1 |
|
|
|
е2 |
|
|
|
|
|
1 |
|
|
е15 |
|
|
|
|
|
|
1 |
|
е17 |
|
|
|
|
|
|
|
1 |
е1 |
|
|
|
|
|
1 |
|
|
е3 |
|
|
|
|
|
1 |
|
|
е4 |
|
|
|
1 |
|
|
|
|
е6 |
|
|
|
1 |
|
|
|
|
е7 |
|
|
|
|
1 |
|
|
|
е9 |
|
|
|
|
1 |
|
|
|
е10 |
|
|
|
1 |
1 |
1 |
1 |
|
е11 |
|
|
|
1 |
1 |
1 |
1 |
|
е12 |
|
|
|
1 |
1 |
1 |
1 |
|
е14 |
|
|
1 |
|
|
|
|
|
е16 |
|
|
|
|
|
|
|
1 |
е18 |
1 |
1 |
|
1 |
1 |
1 |
1 |
1 |
е19 |
1 |
1 |
|
1 |
1 |
1 |
1 |
1 |
е21 |
1 |
|
|
|
|
|
|
|
е22 |
|
1 |
|
1 |
|
|
|
|
е23 |
|
1 |
|
1 |
|
|
|
|
е24 |
|
1 |
|
|
|
|
|
|
е26 |
1 |
1 |
|
1 |
1 |
|
|
|
Побудуємо базис циклів графа G. Кількість базисних циклів відповідає цикломатичному числу для заданого графа. Отже, у заданому графі є 18 базисних циклів.
Для побудови базису циклів додаємо до остовного дерева Т кожну з хорд
у порядку їхнього зростання, виділяємо простий цикл і формуємо базис циклів графа (у вигляді послідовності ребер, що утворять кожний з базисних циклів).
Таким чином отримуємо 18 базисних циклів.
Виразимо 3 небазисні цикли через базисні.