Лекция № 14. Деревья
- Основные определения
Дерево – связный граф без циклов. Лес (или ациклический граф) – неограф без циклов. Компонентами леса являются деревья. Теорема 14.1.Для неографаGсnвершинами без петель следующие условия эквивалентны:
- G– дерево;
- G– связной граф, содержащийn– 1 ребро;
- G– ациклический граф, содержащийn– 1 ребро;
- Любые две несовпадающие вершины графаGсоединяет единственная цепь;
- G– ациклический граф, такой, что если в него добавить одно ребро, то в нем появится ровно один цикл.
Теорема 14.2.НеографGявляется лесом тогда и только тогда, когда коранг графаv(G)=0. Висячая вершина в дереве – вершина степени 1. Висячие вершины называются листьями, все остальные – внутреннимивершинами. Если в дереве особо выделена одна вершина, называемая корнем, то такое дерево называется корневым, иначе – свободным. Корневое дерево можно считать орграфом с ориентацией дуг из корня или в корень. Очевидно, что для любой вершины корневого дерева, кроме корня, . Для корня
, для листьев
. Вершины дерева, удаленные на расстояние k (в числе дуг) от корня, образуют k-й ярус (уровень) дерева. Наибольшее значение k называется высотой дерева. Если из какой-либо вершины корневого дерева выходят дуги, то вершины на концах этих дуг называют сыновьями (в английской литературе – дочери (daughter)).
- Центроид дерева
Ветвь к вершине v дерева – это максимальный подграф, содержащий v в качестве висячей вершины. Вес вершиныk – наибольший размер ее ветвей. Центроид (или центр масс) дерева C – множество вершин с наименьшим весом: C = v| c(v) =
>. Вес любого листа дерева равен размеру дерева. Высота дерева с корнем, расположенным в центроиде, не больше наименьшего веса его вершин. Свободное дерево порядка n с двумя центроидами имеет четное количество вершин, а вес каждого центроида равен n/2. Теорема 14.3 (Жордана).Каждое дерево имеет центроид, состоящий из одной или двух смежных вершин.Пример 14.1. Найти наименьший вес вершин дерева, изображенного на рис. 14.1, и его центроид.
Рис. 14.1 Решение. Очевидно, что вес каждой висячей вершины дерева порядка n равен n – 1. Висячие вершины не могут составить центроид дерева, поэтому исключим из рассмотрения вершины 1, 2, 4, 6, 12, 13 и 16. Для всех остальных вершин найдем их вес, вычисляя длину (размер) их ветвей. Число ветвей вершины равно ее степени. Вершины 3, 5 и 8 имеют по две ветви, размеры которых равны 1 и 14. К вершине 7 подходят четыре ветви размером 1, 2, 2 и 10. Таким образом, ее вес
. Аналогично вычисляются веса других вершин:
,
,
. Минимальный вес вершин равен 8, следовательно, центроид дерева образуют две вершины с таким весом: 11 и 15.
- Десятичная кодировка
Деревья представляют собой важный вид графов. С помощью деревьев описываются базы данных, деревья моделируют алгоритмы и программы, их используют в электротехнике, химии. Одной из актуальных задач в эпоху компьютерных и телекоммуникационных сетей является задача сжатия информации. Сюда входит и кодировка деревьев. Компактная запись дерева, полностью описывающая его структуру, может существенно упростить как передачу информации о дереве, так и работу с ним. Существует множество способов кодировки деревьев. Рассмотрим одну из простейших кодировок помеченных деревьев с выделенным корнем – десятичную. Кодируя дерево, придерживаемся следующих правил.
- Кодировка начинается с корня и заканчивается в корне.
- Каждый шаг на одну дугу от корня кодируется единицей.
- В узле выбираем направление на вершину с меньшим номером.
- Достигнув листа, идем назад, кодируя каждый шаг нулем.
- При движении назад в узле всегда выбираем направление на непройденную вершину с меньшим номером.
Кодировка в такой форме получается достаточно компактной, однако она не несет в себе информации о номерах вершин дерева. Существуют аналогичные кодировки, где вместо единиц в таком же порядке проставляются номера или названия вершин. Есть деревья, для которых несложно вывести формулу десятичной кодировки. Рассмотрим, например, графы-звезды , являющиеся полными двудольными графами, одна из долей которых состоит из одной вершины. Другое обозначение звезд –
. На рис. 14.2 показаны звезды, а также приведены их двоичные и десятичные кодировки. Корень дерева располагается в центральной вершине звезды. Легко получить общую формулу:
. (14.1)
Рис. 14.2 Если корень поместить в любой из висячих вершин, то код
такого дерева будет выражаться большим числом. Более того, существует зависимость
. Аналогично рассматриваются и цепи (рис. 14.3). Цепи обозначаются как
.
Рис. 14.3 В звездах только два варианта расположения корня с различными десятичными кодировками. В цепи же число вариантов кодировок в зависимости от положения корня растет с увеличением n. Рассмотрим самый простой вариант, расположив корень в концевой вершине (листе). Для
получим двоичную кодировку 10 и десятичную 2, для
– 1100 и 12, для
– 111000 и 56, для
– 11110000 и 240. Общая формула для десятичной кодировки цепи с корнем в концевой вершине имеет вид
. (14.2) Пример 14.2. Записать десятичный код дерева, изображенного на рис. 14.4, с корнем в вершине 3.
Рис. 14.4 Решение. На основании правила кодировки, двигаясь по дереву, проставим в код единицы и нули. При движении из корня 3 к вершине 7 проходим четыре ребра. В код записываем четыре единицы: 1111. Возвращаясь от вершины 7 к вершине 2 (до ближайшей развилки), проходим три ребра. Записываем в код три нуля: 000. От вершины 2 к 5 и далее к 8 (меньший номер): 11; от 8 назад к 5 и от 5 к 9: 01; от 9 к корню 3: 000. И, наконец, от 3 к 6 и обратно: 10. В итоге, собирая все вместе, получим двоичный код дерева: 1 111 000 110 100 010. Разбивая число на тройки, переводим полученное двоичное представление в восьмеричное. Получаем
. Затем переводим это число в десятичное:
.
Для продолжения скачивания необходимо пройти капчу:
Источник
3.9. Деревья и леса
Каждая компонента связности леса – дерево, следовательно, для -связного леса существует дизъюнктное разбиение на
деревьев.
Пример 1. Граф
не является деревом, не является лесом. Граф
— дерево. Граф
— лес.
Лемма. Если граф – дерево, то каждое его ребро является мостом.
Доказательство.В параграфе 3.6 было доказано, что если ребро графа не содержится ни в одном цикле, то оно является мостом. Дерево граф ациклический, следовательно, каждое его ребро мост.■
Теорема (основная теорема о деревьях). Для графа следующие утверждения равносильны:
- Граф
— дерево.
ациклический и
.
связный и
.
связный и каждое его ребро является мостом.
- Любые две вершины графа
можно соединить, притом единственной, простой цепью.
ациклический, и добавление к нему нового ребра приводит к образованию единственного простого цикла.
Доказательство.Доказательство проведем по следующей схеме:.
. Индукцией по числу ребер проверим, что для любого дерева выполняется равенство
. Базис индукции.Пусть
, тогда
, и равенство
выполнено. Индуктивный переход.Предположим, что требуемое равенство выполняется для любого дерева с числом ребер меньшим либо равным
. Докажем, что оно справедливо и для дерева с числом ребер
. Удалим из графа
произвольное ребро
.Согласно лемме, ребро
— мост. По теореме о мостах
. Следовательно, граф
состоит из двух компонент связности,
и
, каждая из которых – дерево с числом ребер меньшим либо равным
. Для каждой компоненты связности справедливо предположение индукции, т.е. выполнены равенства
и
. Складывая эти равенства почленно, получим:
. Или
.
. Докажем, что если граф
ациклический и
, то граф связный. Будем рассуждать от противного, т.е. предположим, что найдется ациклический граф
, число ребер которого на единицу меньше числа вершин, который связным не является. Пусть
,
, — число компонент связности графа
. Каждая компонента связности — дерево. Переход
уже доказан, следовательно, для каждой компоненты связности
можем записать:
. Просуммировав по
, получим:
. Или
. Так как
, то пришли к противоречию с условием
. Следовательно, наше предположение было неверным.
. Докажем, что если граф связный и
, то каждое его ребро является мостом. Будем рассуждать от противного. Предположим, что найдется связный граф
, такой что
, в котором есть ребро
, не являющееся мостом. Тогда граф
связный и
. То есть для связного графа
выполняется условие
, что противоречит следствию теоремы о знаке цикломатического числа (см. параграф 3.7).
. Из связности графа вытекает, что любые две его вершины можно соединить маршрутом, и, следовательно, простой цепью. Докажем, что эта простая цепь единственна. Доказательство проведем от противного. Предположим, что найдется связный граф, все ребра которого — мосты, такой, что в нем есть две вершины
и
, соединенные двумя различными простыми цепями
и
. Поскольку цепи
и
различны, то имеется ребро
, входящее в цепь
и не входящее в цепь
. Пусть
и
— фрагменты цепи
. Склеим инвертированный фрагмент
, цепь
и инвертированный фрагмент
. Получим на графе
— маршрут, не содержащий ребра
. Из этого маршрута выделим
-простую цепь и склеим ее с цепью
. В результате получим цикл, содержащий
, а это противоречит тому, что ребро
— мост.
. Пусть для графа
выполнено условие 5. Проверим сначала, что граф
не содержит циклов. Будем рассуждать от противного. Предположим, что на графе
имеется цикл. Пусть
— одно из ребер этого цикла и вершины
и
— концы этого ребра. Тогда
— простая цепь, соединяющая вершины
и
. Обозначим ее
. Удалим из графа
ребро
. Поскольку ребра циклов не являются мостами и граф
связный, то граф
также будет связным. Следовательно, на графе
существует
— маршрут. Выделим из этого маршрута
-простую цепь и обозначим ее
. Таким образом мы показали, что на графе
есть две простые цепи, соединяющие вершины
и
:
и
, что противоречит условию 5. Покажем, что добавление к графу
нового ребра приводит к образованию, притом единственного, цикла. Возьмем на графе
две произвольные вершины
и
и соединим их новым ребром
; получим граф
. По условию на графе
имеется единственная простая
-цепь. Склеив ее с цепью
, получим на графе
простой цикл. Докажем, что этот цикл единственный. Предположим, что при добавлении ребра
образовалось два простых цикла. Тогда, удалив из каждого из них ребро
, получим на графе
две простые
-цепи, а наличие двух -цепей противоречит условию.
. Будем рассуждать от противного, т.е. предположим, что существует несвязный граф
, для которого выполнено условие 6. Возьмем на этом графе две вершины, лежащие в разных компонентах связности, и соединим их ребром
. В результате образуется граф
, для которого ребро
является мостом и, следовательно, не содержится ни в одном цикле. Таким образом, добавление ребра
не привело к образованию цикла, что противоречит условию 6.■ Следствие 1.Неодноэлементное дерево имеет не менее двух висячих вершин.Доказательство.Рассмотрим произвольное дерево, имеющее не менее двух вершин. Представим множество его вершин
в виде
, где
— множество висячих вершин этого дерева. Тогда
. Но
, поэтому
. Откуда
. ■ Следствие 2.Если граф
—
-связный лес, то
. Последнее следствие рекомендуем доказать самостоятельно.
Источник