3. Остови графа
Визначення.
Остовом або каркасом
графа називається підграф
без циклів, що містить всі вершини
і максимально велике число
ребер.
Якщо – зв’язний,
то остов є дерево, якщо
містить
компонент зв’язності, то остов
(каркас) складається з дерев.
Два остови у вважаються різними, якщо вони відрізняються хоча б одним ребром, тобто як графи. Для того щоб мав більше одного остова, необхідно і достатньо існування хоча б одного циклу в .
Задача визначення числа всіх остовів графа і їх фактичного конструювання є важливою для застосувань. Зрозуміло, її достатньо розв’язати для зв’язного . Для повного графа без петель та кратних ребер перелічення остовів є перелічення всіх позначених дерев з вершинами, так що число остовів дорівнює . У загальному випадку число остовів одержав Кірхгоф у 1847 р.
Визначення. Матрицею Кірхгофа графа без петель та кратних ребер називається – матриця з елементами
Сума елементів у кожному рядку (і кожному стовпці) матриці дорівнює нулю. У будь-якої квадратичної матриці з такою властивістю рядків і стовпців, а не тільки у матриці Кірхгофа , алгебраїчні доповнення всіх елементів рівні між собою: .
У матриці ж величина дорівнює числу остовних дерев.
Теорема 3. (Кірхгоф) Число остовних дерев у зв’язному графі без петель та кратних ребер з вершинами( ) дорівнює алгебраїчному доповненню будь-якого елемента матриці Кіргхгофа .
Наслідок. Справедлива формула Келі для числа позначених дерев з вершинами .
Доведення. Всі позначені дерева з вершинами утворюють в точності множину остовних дерев повного графа . За теоремою 3 їх число дорівнює алгебраїчному доповненню елемента матриці Кірхгофа
розміру .
Визначник
порядку
зручно перетворити,
замінивши спочатку перший рядок сумою
всіх рядків, а потім, додаючи одержаний
рядок з одиниць до рядків з номерами .
4. Алгоритм пошуку у глибину
Задача побудови якого-небудь (одного) остовного дерева у графі належить до числа найважливіших для практики і, на щастя, є найпростішою для алгоритмізації і комп’ютерної реалізації. Зрозуміло, що основна ідея побудови повинна полягати у послідовному відборі ребер, що не утворюють цикли з попередніми.
Наведемо так званий алгоритм «пошуку у глибину», що переглядає по одному разу всі ребра графа G і звичайно всі його вершини. Зауважимо, що пошук у глибину (скорочено ПГ) – не єдиний метод перегляду всіх вершин і ребер графа G . Наприклад, часто використовується перегляд графа «пошуком у ширину», при якому у кожній черговій вершині переглядаються всі інцидентні їй ребра без виключення і всі їх кінцеві вершини (тобто «оточення» вершин X).
Якісний опис алгоритму пошуку в глибину
В процессі
пошуку в глибину вершинам графа
G послідовно
привласнюються нові номери (ПГ-номери)
від 1 до n,
а ребра одержують позначки двох класів:
«пряме ребро» і «зворотне ребро». Пошук
починається з довільної вершини , якій
привласнюється ПГ-номер 1: ПГ
.
Далі обирається будь-яке інцидентне
до ребро позначається позначкою «пряме
ребро» і вершині привласнюється ПГ-номер
2. Наступний (третій) крок пошуку
починається у вершині , в якій ПГ
,
і підкоряється рекурентній
процедурі, яку ми опишемо для довільного
кроку . Припустимо, -й крок
віконаний і деяка вершина одержала
ПГ-номер ПГ
.
Можливі дві ситуації:
1. У
вершині
існує інцидентне непозначене
ребро
.
Якщо вершина
вже має ПГ-номер, то ребро
одержує позначку «зворотне»,
і продовжується пошук непозначеного
ребра, що інцидентне вершині
.
Якщо ж вершина не має
раніше привласненого ПГ-номеру, то їй
провласнюється черговий ПГ-номер ПГ
,
ребро
одержує позначку «пряме», і пошук
переміщується у вершину .
2. Всі ребра, що
інцидентні вершині , позначені на
попередніх кроках. Тоді пошук повертається
у вершину , що має попередній
ПГ-номер ПГ
.
Пошук
у глибину закінчується, коли всі ребра
графа
виявляються позначеними.
Позначимо множина прямих ребер, множина зворотних ребер. Із процедури пошуку в глибину виходить твердження.
Твердження. Якщо – зв’язний граф, то підграф є остовне дерево в G , а підграф є додатковим до дерева T . А дерево T є орієнтованим кореневим з коренем .
П
риклад.
Розглянемо
наступный
граф.
Тому
що
,
то кількість ребер у
повинна дорівнювати
.
Крок
1. Нехай
,
.
Крок
2.
,
обираємо
інцідентне
ребро
,
,
,
ребро
–
пряме.
Крок
3.
,
інцідентне непозначене ребро
.
,
не має ПГ-позначки, отже
,
ребро
–
пряме,
,
.
Крок
4.
,
інцідентне непозначене ребро
.
,
не має ПГ-позначки, отже
,
ребро
–
пряме,
,
.
Крок
5.
,
інцідентне непозначене ребро
.
,
не має ПГ-позначки, отже
,
ребро
–
пряме,
,
.
Крок
6.
,
–
непозначене
ребро.
,
має ПГ-номер, отже ребро
–
зворотнє.
–
непозначене
ребро.
,
має ПГ-номер, отже ребро
–
зворотнє.
не має непозначених ребер,
.
Крок
7.
,
не має непозначених ребер,
.
Крок
8.
,
–
непозначене
ребро.
,
не має ПГ-позначки, отже
,
ребро
–
пряме,
,
алгоритм завершено.
– остовне
дерево (кістяк) графу.
