
- •Перелік питань, що виносяться на самостійне опрацювання студентами з дисципліни „Дискретна математика”
- •Тема 1. Нечіткі множини та лінгвістичні змінні.
- •Тема 2. Замикання відношень.
- •Тема 3. Бази даних і відношення.
- •Тема 4. Гомоморфізм та ізоморфізм алгебр.
- •Тема 5. Розміщення і функціональні відображення.
- •Тема 6. Формула включень і виключень.
- •Тема 7. Асимптотичні оцінки та формули.
- •Тема 8. Застосування леми Бернсайда для розв’язання комбінаторних задач.
- •Тема 9. Обгрунтування теореми Поя.
- •Тема 10. Планарність графів.
- •Тема 11. Максимальні потоки в мережах.
- •Тема 12. Дерево прийняття рішень.
- •Тема 13. Каркаси (з’єднувальні дерева).
- •Тема 14. Регулярні вирази і мови.
- •Тема 15. Побудова граматики мови програмування.
- •Тема 16. Машина Тьюрінга. Лінійно-обмежені автомати.
Тема 13. Каркаси (з’єднувальні дерева).
Мета вивчення теми:
Ознайомитися з загальною характеристикою каркасів
(з’єднувальних дерев) та способами їх побудови.
Питання для опрацювання:
Каркаси: основні поняття та практичне застосування. Способи побудови каркасів та аналіз їх ефективності. Мінімальні каркаси. Алгоритм Краскала.
Методичні рекомендації:
Нехай G – простий зв’язний граф. Простий граф – це неорієнтований граф без кратних ребер і без петель. Граф називають зв’язним, якщо будь-які дві його вершини з’єднані шляхом. Каркасом, або з’єднувальним деревом, графа G називають його підграф, який являє собою дерево та містить усі вершини графа G. Нехай граф G має n вершин і m ребер. Щоб отримати каркас, можна використати процедуру вилучення ребер, які належать простим циклам. Цикл називають простим, якщо він не містить повторюваних ребер. Очевидно, що потрібно вилучити (G) = m – n + 1 ребер. Число (G) називають цикломатичним числом графа G, (G) 0. Цикломатичне число – це певною мірою числова характеристика зв’язності графа; цикломатичне число дерева дорівнює 0. Побудова каркаса – поширена задача. Алгоритм, який полягає у вилученні ребер із простих циклів, неефективний для комп’ютерної реалізації. Для його виконання потрібно ідентифікувати прості цикли, а це складна задача. Ефективний із погляду комп’ютерної реалізації алгоритм побудови каркаса – це послідовний добір ребер у каркас. Це можна зробити за допомогою обходу графа G як пошуком углиб, так і пошуком ушир. Під час виконання цих алгоритмів природним способом будують каркас. Якщо до протоколу обходу графа додати ще один стовпчик, то туди можна записувати ребра, які під час роботи алгоритму позначають потовщеною лінією і включають у каркас.
Теорема: Нехай T – каркас графа G, побудований пошуком ушир, починаючи з вершини а. Тоді шлях з а до довільної вершини v в T – найкоротший шлях від а до v в G. Доведення теореми грунтується на аналізі алгоритму пошуку вшир у графі G.
Для побудови дерева найкоротших шляхів від вершини а можна використати алгоритм Дейкстри. Проте складність цього алгоритму становить О(m log n) або О(n2) залежно від способу подання графа, а складність алгоритму пошуку вшир – О(m+n), де n – кількість вершин, m – кількість ребер у графі G. Але алгоритм Дейкстри більш універсальний, він придатний для будь-яких додатних довжин ребер.
Досить поширеними є задачі пов’язані з ідеєю оптимізації. Нехай G – зв’язний зважений граф. Потрібно описати алгоритм побудови каркаса Т, у якому сума ваг ребер якнайменша (суму беруть за всіма ребрами дерева Т). Каркас Т називають мінімальним. Розв’язати цю задачу дає змогу алгоритм Краскала (J. Kruskal). Алгоритм Краскала належить до жадібних. Так називають алгоритми оптимізації, які на кожному кроці вибирають найкращий із можливих варіантів. Під час вивчення даної теми необхідно розглянути загальну характеристику каркасів (з’єднувальних дерев) графів та основні способи їх побудови. Слід звернути увагу на алгоритм Краскала знаходження мінімальних каркасів графів. Студенти повинні навчитися використовувати каркаси графів для розв’язування прикладних задач.
Студенти повинні знати:
загальну характеристику та основні поняття теорії графів;
основні способи побудови каркасів графів;
загальну характеристику каркасів (з’єднувальних дерев);
алгоритм Краскала знаходження мінімальних каркасів;
основні принципи використання каркасів графів для розв’язування прикладних задач.
Студенти повинні вміти:
використовувати позначення та основні поняття теорії графів;
виконувати побудову каркасів різними способами;
знаходити мінімальні каркаси за допомогою алгоритму Краскала;
використовувати каркаси для розв’язування прикладних задач.
Питання для самоконтролю:
Що представляє собою зв’язний зважений граф ?
Що називають каркасом (з’єднувальним деревом ) графа ?
Який граф називають деревом ?
Як можна одержати цикломатичне число графа ?
Яке цикломатичне число мають дерева ?
Яким чином може відбуватися побудова каркаса ?
Який каркас графа називають мінімальним ?
Що представляє собою алгоритм Краскала ?
Для чого використовують каркаси (з’єднувальні дерева) ?
Рекомендована література:
Нікольський Ю. В., Пасічник В. В., Щербина Ю. М. Дискретна математика. – К.: Видавнича група BHV, 2007. – 175-177 с.