- •1 Мета і задачі дисципліни
- •1.1 Мета викладання дисципліни
- •1.2 Програма знань і вмінь
- •1.3 Теми практичних занять
- •1.4 Система атестації
- •Без виконання усіх без винятку пунктів табл. 1.2 студент до іспиту допущений не буде. Оцінка виставляється, виходячи з табл. 1.3.
- •2 Огляд рекомендованої літератури
- •3 Практичне заняття № 1. Основні поняття теорії множин. Алгебра множин
- •3.1 Мета заняття
- •3.2 Методичні рекомендації до самостійної роботи студентів
- •3.3 Приклади розв’язання типових завдань
- •Контрольні запитання та завдання
- •3.5 Приклади аудиторних і домашніх задач
- •4 Практичне заняття № 2. Відношення та їх властивості
- •4.1 Мета заняття
- •4.2 Методичні рекомендації до самостійної роботи студентів
- •4.3 Приклади розв’язання типових завдань
- •4.4 Контрольні запитання та завдання
- •4.5 Приклади аудиторних і домашніх задач
- •5 Практичне заняття № 3. Відображення та функції
- •5.1 Мета заняття
- •5.2 Методичні рекомендації до самостійної роботи студентів
- •5.3 Приклади розв’язання типових завдань
- •5.4 Контрольні запитання та завдання
- •5.5 Приклади аудиторних і домашніх задач
- •6 Практичне заняття № 4. Булеві функції та алгебра логіки
- •6.1 Мета заняття
- •6.2 Методичні рекомендації до самостійної роботи студентів
- •6.3 Приклади розв’язання типових завдань
- •6.4 Контрольні запитання та завдання
- •6.5 Приклади аудиторних і домашніх задач
- •7 Практичне заняття № 5. Двоїстість булевих функцій
- •7.1 Мета заняття
- •7.2 Методичні рекомендації до самостійної роботи студентів
- •7.3 Приклади розв’язання типових завдань
- •7.4 Контрольні запитання та завдання
- •7.5 Приклади аудиторних і домашніх задач
- •8 Практичне заняття № 6. Нормальні форми
- •8.1 Мета заняття
- •8.2 Методичні рекомендації до самостійної роботи студентів
- •8.3 Приклади розв’язання типових завдань
- •8.4 Контрольні запитання та завдання
- •8.5 Приклади аудиторних і домашніх задач
- •9 Практичне заняття № 7. Алгебра жегалкіна
- •9.1 Мета заняття
- •9.2 Методичні рекомендації до самостійної роботи студентів
- •9.3 Приклади розв’язання типових завдань
- •9.4 Контрольні запитання та завдання
- •9.5 Приклади аудиторних і домашніх задач
- •10 Практичне заняття № 8. Функціональна повнота наборів булевих функцій
- •10.1 Мета заняття
- •10.2 Методичні рекомендації до самостійної роботи студентів
- •10.3 Приклади розв’язання типових завдань
- •10.4 Контрольні запитання та завдання
- •10.5 Приклади аудиторних і домашніх задач
- •11 Практичне заняття № 9 методи мінімізації булевих функцій
- •11.1 Мета заняття
- •11.2 Методичні рекомендації до самостійної роботи студентів
- •11.3 Приклади розв’язання типових завдань
- •11.4 Контрольні запитання та завдання
- •11.5 Приклади аудиторних і домашніх задач
- •12 Практичне заняття № 10. Логіка висловлювань
- •12.1 Мета заняття
- •12.2 Методичні рекомендації до самостійної роботи студентів
- •12.3 Приклади розв’язання типових завдань
- •12.4 Контрольні запитання та завдання
- •12.5 Приклади аудиторних і домашніх задач
- •13 Практичне заняття № 11. Логіка першого порядку (лпп)
- •13.1 Мета заняття
- •13.2 Методичні рекомендації до самостійної роботи студентів
- •13.3 Приклади розв’язання типових завдань
- •13.4 Контрольні запитання та завдання
- •13.5 Приклади аудиторних і домашніх задач
- •14 Практичне заняття № 12. Основні поняття теорії графів
- •14.1 Мета заняття
- •14.2 Методичні рекомендації до самостійної роботи студентів
- •14.3 Приклади розв’язання типових завдань
- •15 Практичне заняття № 13. Ейлерові і гамільтонові ланцюги і цикли
- •15.3 Приклади розв’язання типових завдань
- •15.4 Контрольні запитання та завдання
- •15.5 Приклади аудиторних і домашніх задач
- •16 Практичне заняття № 14. Планарність графів
- •16.1 Мета заняття
- •16.2 Методичні рекомендації до самостійної роботи студентів
- •16.3 Приклади розв’язання типових завдань
- •16.4 Контрольні запитання та завдання
- •16.5 Приклади аудиторних і домашніх задач
- •17 Практичне заняття № 15. Відстані на графах
- •17.1 Мета заняття
- •17.2 Методичні рекомендації до самостійної роботи студентів
- •17.3 Приклади розв’язання типових завдань
- •17.4 Контрольні запитання та завдання
- •17.5 Приклади аудиторних і домашніх задач
- •18 Практичне заняття № 16. Дерева
- •18.1 Мета заняття
- •18.2 Методичні рекомендації до самостійної роботи студентів
- •18.3 Приклади розв’язання типових завдань
- •18.4 Контрольні запитання
- •18.5 Приклади аудиторних і домашніх задач
- •19 Практичне заняття № 17. Транспортні мережі
- •19.1 Мета заняття
- •19.2 Методичні рекомендації до самостійної роботи студентів
- •19.3 Приклади розв’язання типових завдань
- •19.4 Контрольні запитання та завдання
- •19.5 Приклади аудиторних і домашніх задач
- •20 Практичне заняття № 18. Основи комбінаторного аналізу
- •20.1 Мета заняття
- •20.2 Методичні рекомендації до самостійної роботи студентів
- •20.3 Приклади розв’язання типових завдань
- •20.4 Контрольні запитання та завдання
- •20.5 Приклади аудиторних і домашніх задач
- •21 Практичне заняття № 19. Формули простого перелічення
- •21.1 Мета заняття
- •21.2 Методичні рекомендації до самостійної роботи студентів
- •21.3 Приклади розв’язання типових завдань
- •21.4 Контрольні запитання та завдання
- •21.5 Приклади аудиторних і домашніх задач
- •22 Практичне заняття № 20. Формула включення та виключення
- •22.1 Мета заняття
- •22.2 Методичні рекомендації до самостійної роботи студентів
- •22.3 Приклади розв’язання типових завдань
- •22.4 Контрольні запитання та завдання
- •22.5 Приклади аудиторних і домашніх задач
- •23 Індивідуальні контрольні завдання
- •Завдання 9. У табл. 23.7 ребрам (Vj, Vk) неорієнтованого графа, що задані номерами вершин j та k, вiдповiдає числова характеристика (довжина, вартість).
- •Рекомендована література
18.3 Приклади розв’язання типових завдань
1. Написати код дерева Т (рис. 18.1).
Рисунок 18.1
Дано дерево, вершини якого пронумеровано по порядку. Кількість вершин р = 11. Зайдемо усі його висячі вершини: 4 5 6 7 9 10. Мінімальною з них є 4, видаляємо її, разом із суміжним до неї ребром, а у код записуємо 3. Знов знаходимо висячі вершини: 5 6 7 9 10. Видаляємо мінімальну з них – 5. У код записуємо 12. Тепер висячими вершинами є 6 7 9 10. Видаляємо вершину 6, а в код записуємо – 11. Повторюємо видалення вершин доти, доки від дерева не залишиться тільки одне ребро – (1, 12). Зараз код містить (р–2) вершин, тобто 9. На цьому процес видалення вершин закінчується. Код даного дерева: 3 12 11 2 12 8 1 2 3 1.
2. Використовуючи алгоритм декодування дерев, отримати дерево за кодом: 2 4 2 3 1 2.
Всього вершин р = 8 (тому що у коді міститься 6 елементів).
Знаходимо висячі вершини: 5 6 7 8.
З'єднуємо вершини 5–2; вершина 2 ще зустрічається в коді, тому переходимо до другої висячої вершини – 4, вона є мінімальною, тому виконуємо те саме і для неї (рис. 18.2). Тепер маємо дві з'єднані вершини: (5 – 2) і (4 – 6). Як бачимо, вершина "4" більше не зустрічається в коді, тому робимо її висячою і змінюємо її колір (рис. 18.3). Тепер 4 – лист з мінімальним номером, тому з’єднуємо його з наступним елементом коду (рис. 18.4). Лист 7 стає мінімальним, з’єднуємо його з наступним елементом коду – 3, який робимо висячим (рис. 18.5). На наступному кроці 3 – мінімальний лист, виконуємо пункт (3), одиницю переносимо у список висячих вершин (рис. 18.6). За аналогією виконуємо наступний крок (рис. 18.7). У списку висячих вершин залишилося дві не з’єднані: 8 та 2 (крок 7). З’єднавши їх, отримуємо дерево (рис.18.8).
Рисунок 18.2 |
Рисунок 18.3 |
||
Рисунок 18.4 |
Рисунок 18.5
|
||
Рисунок 18.6 |
Рисунок 18.7 |
Рисунок 18.8 |
|
3. Зазначити послідовність відвідування вершин дерева, зображеного на рис. 18.9 при префіксному (прямому), інфіксному (кінцевому) та постфіксному (оберненому) обходах.
Рисунок 18.9
а) Обійдемо задане дерево за алгоритмом PreOrder (прямий обхід).
Починаємо з кореня дерева – вершини V1. Позначимо її номером 1. Рекурсивно здійснимо прямий обхід її лівого піддерева. Тобто наступною позначаємо вершину V2, для якої також здійснемо прямий обхід лівого піддерева. Номером 3 позначаємо вершину V4. У вершині V4 немає лівого піддерева, здійснюємо прямий обхід її правого піддерева – номером 4 позначаємо вершину V7. У вершині V7 немає нащадків, тому повертаємося до вершини V4. Ця вершина вже позначена, повертаємося до вершини V2. Здійснюємо прямий обхід правого її піддерева – номером 5 позначаємо вершину V5. Аналогічно проходимо інші вершини заданого дерева. Порядок проходження вершин даного дерева буде таким, як зображено на рис. 18.10;
б) Обійдемо задане дерево за алгоритмом PostOrder (обернений обхід).
Починаємо з кореня дерева – вершини V1. Здійснимо обернений обхід її лівого піддерева – відвідаємо вершину V2, для якої також здійснюємо обернений обхід лівого піддерева. Визначимо, що ще жодна вершина не позначена. Наступною відвідуємо вершину V4, так само рекурсивно здійснюємо обернений обхід її лівого піддерева. Оскільки лівого нащадка у цієї вершини немає, то здійснюємо обхід її правого піддерева – відвідуємо вершину V7. Запускаємо алгоритм PostOrder і для неї. Оскільки у неї немає нащадків, то позначаємо цю вершину номером 1. Повертаємося на крок назад, до вершини V4. Всі її нащадки вже пройдені, тому позначаємо її номером 2. Аналогічно повертаємося ще на крок назад та відвідуємо праве піддерево вершини V2. Вершину V5 позначаємо номером 3 і знов повертаємось назад. За аналогією, проходимо праве піддерево вершини V1, після чого отримуємо результат (рис. 18.11);
в) Обійдемо задане дерево за алгоритмом SyntOrder (кінцевий обхід).
Як і при оберненому обході, необхідно опуститися на «саме дно» дерева, а потім розпочати позначати його вершини. Але спочатку позначається лівий нащадок вершини, потім – сама вершина, і тільки після цього правий нащадок. Тому номером 1 позначаємо вершину V4. Після неї позначаємо вершину V7 номером 2, потім, за аналогією з оберненим обходом, повертаємося на крок назад і позначаємо номером 3 вершину V2. Потім здійснюємо обхід правого піддерева вершини V2 – позначаємо вершину V5 номером 4. Аналогічно проходимо частину заданого дерева, що залишилася. Нарешті маємо результат (рис.18.12).
Рисунок 18.10 |
Рисунок 18.11 |
Рисунок 18.12 |
