Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні вказівки СРС Дискретна математика.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
472.58 Кб
Скачать

Тема 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). Алгоритм Краскала належить до жадібних. Так називають алгоритми оптимізації, які на кожному кроці вибирають найкращий із можливих варіантів. Під час вив­чен­ня даної теми необхідно розглянути за­га­льну ха­рактеристику каркасів (з’єд­ну­ва­льних дерев) графів та основні способи їх побудови. Слід звер­нути увагу на алгоритм Краскала знаходження мінімальних каркасів графів. Сту­денти повинні навчитися використовувати каркаси графів для розв’язування прикладних задач.

Студенти повинні знати:

  • загальну характеристику та основні поняття теорії графів;

  • основні способи побудови каркасів графів;

  • загальну характеристику каркасів (з’єднувальних дерев);

  • алгоритм Краскала знаходження мінімальних каркасів;

  • основні принципи використання каркасів графів для розв’язування прикладних задач.

Студенти повинні вміти:

  • використовувати позначення та основні поняття теорії графів;

  • виконувати побудову каркасів різними способами;

  • знаходити мінімальні каркаси за допомогою алгоритму Краскала;

  • використовувати каркаси для розв’язування прикладних задач.

Питання для самоконтролю:

  1. Що представляє собою зв’язний зважений граф ?

  2. Що називають каркасом (з’єднувальним деревом ) графа ?

  3. Який граф називають деревом ?

  4. Як можна одержати цикломатичне число графа ?

  5. Яке цикломатичне число мають дерева ?

  6. Яким чином може відбуватися побудова каркаса ?

  7. Який каркас графа називають мінімальним ?

  8. Що представляє собою алгоритм Краскала ?

  9. Для чого використовують каркаси (з’єднувальні дерева) ?

Рекомендована література:

Нікольський Ю. В., Пасічник В. В., Щербина Ю. М. Дискретна математика. – К.: Видавнича група BHV, 2007. – 175-177 с.