

Графы без циклов
G X ,U |
|
X |
|
n, |
|
U |
|
m |
|
|
|
|
|||||
Дерево - связный граф |
Лес - несвязный |
|||||||
без циклов |
граф без циклов |
Термины: |
|
Каждая компонента |
|
корень, |
лист, |
связности леса есть |
|
дерево |
|||
|
|
ветвь дерева
1

G X ,U |
Свойства деревьев |
X n, U m |
1G Т G 0 и k G 1
2 |
G Т m G n G 1 и k G 1 |
3 |
G Т x, y X |
|
! простая цепь x, y |
4Дерево – максимальный граф без циклов
5Дерево – минимальный связный граф
6Всякое непустое дерево имеет хотя бы
один лист |
2 |

G X ,U |
Остов графа |
|||||||
|
X |
|
n, |
|
U |
|
m |
|
|
|
|
|
Остов графа G – суграф графа G с тем же числом компонент связности, но без циклов
Теорема. Количество ребер, удаляемых для построения остова графа, равно цикломатическому числу.
3

G X ,U |
Остов графа |
|||||||
|
X |
|
n, |
|
U |
|
m |
|
|
|
|
|
Теорема. Количество ребер, удаляемых для построения остова графа, равно цикломатическому числу.
1) |
G |
- связный граф, Т |
- его остов |
|
|
|
G 1 m n |
|
|
|
m G m T m G n 1 |
|
||
2) |
G - несвязный граф |
1 m n G |
||
|
|
|||
|
|
k |
k |
|
|
|
G Gi |
G Gi |
|
|
|
i 1 |
i 1 |
4 |

Остов графа
Построение остова с помощью «поиска в глубину»
Функция ПОИСК x, y ; t : t 1;
Метка y : t;
Цикл пока не конец S y Читать z из S y ; Если Метка z 0
то ДЕРЕВО : ДЕРЕВО
ПОИСК y, z ;
Конец Если; Конец Цикл;
Конец ПОИСК;
z, y ;
5

G X ,U |
Код дерева |
|||||||||
|
|
X |
|
n, |
|
U |
|
m |
||
|
|
|
|
|
||||||
Шаг 1 |
|
|
X x1, x2 , , xn |
|||||||
|
|
|||||||||
|
|
|||||||||
|
|
|
6x X : p x 1
Найдем |
b1 min x |
|
(x X ) |
|
|
p( x) 1 |
u1 b1, c1 |
||
|
! u1 U : |
|||
Запомним номер вершины |
|
c1 |
||
Удалим из дерева вершину |
b1 |
и ребро u1 |
||
|
X : X \ b1 |
U : U \ u1 |
6

Код дерева
G X ,U
Шаг 2 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
||
Найдем b2 min |
x |
(x X ) |
|
|||
|
p( x) 1 |
|
u2 b2 , c2 |
|
||
|
! u2 U : |
|
||||
Запомним номер вершины |
b2 |
c2 |
u2 |
|||
Удалим из дерева вершину |
и ребро |
|||||
X : X \ b2 |
U : U \ u2 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
и т.д. …
7

Код дерева
G X ,U
Шаг n-2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
min |
|
(x X ) |
|
|
|
|||||
Найдем bn 2 |
x |
|
|
|
|||||||
|
|
|
p( x) 1 |
un 2 |
bn 2 , cn 2 |
|
|
|
|||
! un 2 U : |
|
|
|||||||||
Запомним номер вершины |
cn 2 |
|
|
|
|
||||||
Удалим из дерева вершину |
bn 2 и ребро |
un 2 |
|||||||||
X : X \ bn 2 |
U : U \ un 2 |
|
|
|
|||||||
|
|
|
|
|
|
|
Код дерева |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
U un 1 |
|
|
|
|
|
|
|
||||
|
|
C(T ) c , c |
, , |
c |
n 2 |
|
|||||
|
|
|
|
|
|
|
1 2 |
|
|
|
8

Восстановление дерева по коду
X x1, x2 , , xn |
C(T ) c1, c2 , , |
cn 2 |
||
Цикл пока C(T ) |
|
|
|
|
Найти b min |
x |
(x X ) |
|
|
|
x C(T ) |
|
(c C(T )) |
|
c первая вершина кода |
||||
Построить ребро |
u b, c |
|
||
С : С \ с |
|
X : X \ b |
|
Конец цикла
Соединить ребром две вершины, оставшиеся в X
9

Теорема о количестве деревьев
X x , x |
, , x |
n |
C(T ) c , c |
, , c |
n 2 |
|
1 2 |
|
1 2 |
|
|
Теорема Количество помеченных |
nn 2 |
деревьев с n вершинами равно |
Код дерева – упорядоченный набор из n-2 элементов, среди которых могут быть одинаковые. Каждый элемент может быть выбран n cпособами.
Количество кодов равно |
nn 2 |
10