You are on page 1of 6

Заняття 1

Мінімальне остовне дерево


1. Деякі означення теорії графів
Def. Граф (graph) G= (V , E ) – це сукупність двох множин: основної множини
V (вершини, vertex) та множини E (ребра, edge), елементами якої є двох-
елементні підмножини елементів множини V .
Вершини зображають точками або кружками, а ребра – лініями, що поєдну-
ють дві вершини. Як і будь-які інші множини, множини V та E вважаються
неупорядкованими, а їхні елементи – різними. Це буде простий граф. Ми самі
нумеруємо вершини, ребра, та вершини в ребрі там, як нам зручно.
Будемо позначати вершини v1 , v 2 , … , v n, а ребра e 1 , e 2 ,… , e m. Кількість вершин
n – це розмір графа (order), а кількість ребер m – потужність (size) графа.
Узагальнення простого графа:
 мультиграф (multigraph, можливі кратні ребра);
 псевдограф (pseudograph, можливі кратні ребра та петлі);
 гіперграф (hypergraph, можливі гіперребра, що поєднують більше двох
вершин).
Def. Вершина vi називається інцидентною (incident) до ребра e k , якщо вона є
одним із його кінців.
Def. Вершини vi та v j називаються суміжними (adjacent), якщо в графі є
ребро, інцидентне до цих вершин.
Def. Ребра e k та e l називаються суміжними (adjacent), якщо в графі є
вершина, інцидентна до цих ребер.
Def. Граф та його узагальнення називається графом зі зваженими (weighted)
вершинами (ребрами), якщо існує відображення множини V (або E ) на множину
дійсних чисел. Тобто якщо кожній вершині (кожному ребру) поставлене у
відповідність дійсне число.
Якщо ці числа натуральні, то можна взяти набір фарб, перенумерувати їх, і
сказати, що граф має пофарбовані (colored) вершини та (або) ребра.
Def. Шлях (path) у графі – це послідовність veveve … vev , де сусідні елементи
інцидентні. Шлях називається простим (simple), якщо всі проміжні вершини в
ньому різні. Вочевидь, у простому шляху всі ребра теж будуть різними.
Def. Цикл (cycle) у графі – це шлях, у якого перша та остання вершини
співпадають. Цикл називається простим, якщо всі проміжні вершини в ньому
різні. Вочевидь, у простому циклі всі ребра теж будуть різними.
З непростого шляху завжди можна виділити принаймні один простий цикл.
З непростого циклу можна виділити принаймні два простих цикли.
Def. Граф називається зв'язним (connected), якщо в ньому існує шлях з кож-
ної вершини в кожну. У незв'язному графі є окремі компоненти зв'язності.
Крайній випадок – граф без ребер або пустий (empty) граф, позначається On,
буде мати n компонент зв'язності.

2. Мінімальне остовне дерево


Нехай G – зв'язний граф. Будемо видаляти з нього ребра так, щоб він зали-
шився зв'язним. При цьому мінімальна кількість ребер, яка повинна залишитися
для зв'язності графа з n вершинами, буде дорівнювати n −1.
Def. Остовним деревом (spanning tree) називається зв'язний граф з m=n− 1.
Це означення еквівалентно двом іншим.
Def. Остовним деревом називається зв'язний граф без циклів.
Def. Остовним деревом називається зв'язний граф, у якого існує лише один
шлях з кожної вершини в кожну іншу.
Def. Нехай у зв'язному графі ребра зважені. Мінімальним остовним деревом
(МОД, minimum spanning tree) називається остовне дерево з мінімальною за-
гальною (сумарною) вагою ребер у ньому. Наприклад, якщо всі ребра зв'язного
графа мають однакову одиничну вагу, то будь-яке остовне дерево буде міні-
мальним, і вага кожного з них буде дорівнювати n −1. Це – тривіальний випадок.
Для побудови МОД можна застосувати жадібний алгоритм (greedy
algorithm). Дві його найпоширеніші реалізації – це алгоритми Пріма (Prim) та
Краскала (Kruskal).
Кроки алгоритму Пріма показані на рис. 1. Біля вершин проставлені їхні
номери, а біля ребер – ваги. У нашому графі n=9 ;m=16, тому в побудованому
МОД повинно залишитися лише 8 ребер з 16. Остовне дерево повинно поєдну-
вати всі вершини, у т.ч. й v1 . Тому візьмемо перше ребро мінімальної ваги, що
виходить з вершини v1. Таким ребром буде e 1 ,2: його вага 2 менша за вагу 3 ребра
e 1 ,4 . Отже, починаємо побудову МОД з нього (а). Далі переглядаємо всі ребра,
суміжні до вже побудованого фрагменту МОД, тобто до e 1 ,2. Всього таких ребер
4 (одне у вершині v1 та три у v 2). Обираємо з них ребро мінімальної ваги.
Мінімальна вага серед цих чотирьох ребер – 1, вона у ребра e 2 ,4 . Його й
приєднуємо до МОД, що будується (б). Продовжуємо переглядати ребра,
суміжні до вже побудованого дерева (фрагменту МОД) i такі, що не утворюють
у ньому циклів. Беремо всі ребра, інцидентні до v1, v 2 та v 4 (крім e 1 ,4 – його брати
не можна, бо утворюється цикл), та обираємо з них ребро мінімальної ваги.
Мінімальна вага 2 – у ребра e 2 ,5, його й приєднуємо (в). Продовжуємо процес.
Тепер у нас з'явилась можливість долучити до МОД ребро e 5 ,6 вагою 1 (г), а
потім – e 6 ,9 теж з вагою 1 (д). Серед ребер, що залишилися, мінімальна вага 2 – у
ребра e 5 ,8, його також можна долучити до МОД (е). І, нарешті, приєднуємо ребра
e 3 ,6 та e 4 , 7 ваги 3 (є, ж). Отримали 8 ребер – МОД побудоване. Його вага 15.
Рис.1. Алгоритм Пріма
Рис. 2. Алгоритм Краскала
Алгоритм Краскала показаний на рис. 2. Основна його відмінність від
алгоритму Пріма – ми будемо додавати в МОД, що будується, не обов'язково
суміжні ребра. Головне, щоб не утворювалися цикли. Переглядаємо всі ребра
мінімальної ваги 1. Починаємо з e 2 ,4 – воно зустрілося першим (а). Наступне
ребро ваги 1 – це e 5 ,6, i воно не утворює циклів – додаємо його (б). Далі переві-
ряємо e 6 ,9 : циклів немає, долучаємо його (в). Всi ребра з вагою 1 вичерпані.
Переходимо до ребер з наступною мінімальною вагою 2. Ребро e 1 ,2 можна при-
єднати (г), e 2 ,5 – також (д), e 5 ,8 теж підходить (е). Далі – ребра з вагою 3. Ребро
e 1 ,4 не годиться (утворюється цикл), а ось e 3 ,6 підходить (є), i e 4 , 7 – також (ж). В
результаті отримали те же саме МОД ваги 15, що й за алгоритмом Пріма.

3. Приклад для розв'язання в аудиторії

Рис. 3. Приклад для розв'язання в аудиторії

На рис. 3 показаний граф з n=10; m=20 зі зваженими ребрами. Ваги ребер


позначені цифрами біля відповідного ребра. Наприклад, запис w 1=7 означає, що
вага ребра номер 1 дорівнює 7. Треба знайти МОД за допомогою алгоритму
Краскала. Оскільки вага всіх ребер різна, розв'язок буде єдиним. Для графа з
рис. 3 включаємо в МОД ребра з номерами (у порядку зростання їхніх ваг):
7, 18, 15, 11, 19, 12, 1, 2, 16.
Його загальна вага:
w=w7 +w 18+ w15+ w11 +w 19+ w12+ w1 + w2 +w16 =
=1+2+3+ 4+ 5+6+7+ 9+14=51.
У відповіді є дві частини:

Частина 1. Обрати правильний варіант додавання ребер з 8 запропонованих:

1) (16, 11, 12, 6, 5, 7, 19, 15, 18);


2) (18, 10, 2, 6, 7, 1, 12, 3, 17);
3) (7, 18, 15, 11, 19, 12, 1, 2, 16);
4) (8, 19, 4, 6, 17, 13, 10, 14, 3);
5) (8, 10, 13, 7, 3, 6, 15, 12, 9);
6) (15, 6, 11, 5, 9, 16, 12, 20, 10);
7) (19, 11, 4, 18, 20, 3, 5, 16, 13);
8) (9, 10, 11, 3, 13, 15, 5, 6, 2);

У цьому прикладі правильна відповідь 3.

Частина 2. Обчислити вагу знайденого мінімального остовного дерева. У цьому


прикладі правильна відповідь 51.

Бали за правильні відповіді: 2 бали за частину 1 плюс 2 бали за частину 2.


Усього — або 0, або 2, або 4 бали.

You might also like