Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в дискретную математику (желтая).doc
Скачиваний:
481
Добавлен:
23.03.2016
Размер:
6.91 Mб
Скачать

5.14. Деревья и их свойства

Определение. Деревом называется связный граф, который не содержит замкнутых цепей, т.е. нет цикла, в котором ребра разные.

Свойства дерева:

1. В дереве нет петель и кратных ребер.

Доказательство следует из определения дерева, так как петля и кратные рёбра

замкнутые цепи.

2. Любые 2 вершины v и w соединены единственной цепью.

Доказательство следует из определения дерева.

3. Для дерева справедливо следующее соотношение: p = q + 1 (*), где p – число вершин, q – число ребер.

Доказательство (индукцией по p):

а) p = 1 – дерево состоит из одной вершины, q = 0, тогда соотношение (*) выглядит 1 = 1.

б) Пусть соотношение (*) верно для любых деревьев, у которых вершин меньше, чем p.

в) Рассмотрим дерево с p вершинами. Уберем ребро, соединяющее вершины v и w. Наш граф разбился на 2 подграфа и . , – деревья, так как они связны и не имеют замкнутых цепей. Поэтому для них верно индукционное предположение:

VWV W

T1 T2

.

4. Если любые 2 вершины v и w в дереве соединить ребром, то получим ровно одну замкнутую цепь.

Доказательство следует из свойства 2.

5. Пусть G = (p, q) – дерево, где p > 1. Тогда в дереве G существуют хотя бы 2 вершины v и w такие, что .

Доказательство. Как известно, (по свойству 3). Предположим, что не существуют 2 вершины, степень которых равна 1, т.е. пусть , а у остальных вершин , где . Тогда получаем, что . Пришли к противоречию, значит, существуют вершины v и w такие, что .

Определение. Вершины в дереве, степень которых равна 1, называются концевыми.

Пример дерева:

где max(n) – глубина (количество ярусов) дерева, – корень дерева (корень – это некоторая выделенная вершина).

5.15. Деревья и операции над ними

Введем три операции:

1. Ребро дерево с корнем (код 01), дереву из одного ребра дается код 01.

2. Если у нас есть дерево с корнем, то результат присоединения этого дерева к ребру также есть дерево с корнем.

При этом пусть дерево с корнем имеет код А, тогда дереву, полученному в результате операции 2, ставится код 0А1.

3. Если у нас есть два дерева с корнем,

то результат склеивания этих деревьев также есть дерево с корнем. Если при этом у одного дерева код А, а у другого код В, тогда у дерева, которое получается склеиванием этих деревьев, код будет АВ.

Замечание. Любое дерево с корнем можно получить при помощи вышеуказанных трех операций, при этом всегда можно определить его код.

Пример. Пусть дано корневое дерево Т, определить его код, где

Решение: Исходное дерево Т получено из деревьев двукратным применением операции 3, где

тогда код дерева Т – А01В.

1) Дерево получено из дерева с помощью операции 2, где

,

тогда код дерева А = 0A'1.

Дерево получено из дерева операции 1 двукратным применением

операции 3, тогда код дерева A' = 010101, следовательно, код дерева A = 00101011.

2) Дерево Т2 получено с помощью операции 1, его код – 01.

3) Дерево Т3 получено из дерева операции 1 двукратным применением операции 2, тогда код дерева Т3 В = 000111.

В итоге код корневого дерева Т есть код А01В = 0010101101000111.

Свойства кода дерева:

1) Длина кода дерева равна удвоенному числу его ребер (2q).

2) В любом начальном отрезке (если считать код дерева слева) число нулей числа единиц.

3) Во всем коде число нулей равно числу единиц.

Встает логичный вопрос: как восстанавливать по коду дерево?

Берем произвольный код дерева, где , q – число ребер дерева. Идем слева направо и отмечаем такой момент, когда число нулей совпадает с числом 1. При этом возможны два случая:

1) Пусть равенство наступит в конце кода, тогда , т.е. дерево с кодом получено из дерева с кодом с помощью операции 2.

2) Пусть равенство наступит, не доходя до конца кода, т.е. , а это означает, что дерево с кодом получено из деревьев соответственно с кодами и с помощью операции 3.

Аналогично, т.е. согласно пунктам 1) и 2), восстанавливаем по кодам соответствующие им деревья. Этот процесс называется декодированием. Не сложно доказать (мы практически уже показали), что между деревом и его кодом существует взаимно однозначное соответствие.

Пример. Построить корневое дерево по его коду .

Решение: q = 7. , где . Таким образом, дерево с кодом получено из деревьев соответственно с кодами с трехкратным применением операции 3. Аналогично, дерево с кодом получено из дерева операции 1 с применением операции 2; деревья с кодами и – деревья операции 1; дерево с кодом получено из дерева операции 1 с двукратным применением операции 2. В итоге дерево Т выглядит следующим образом: