Дерево (теория графов)
Дерево в это связный ациклический граф.[1] Связность означает наличие путей между любой парой вершин, ацикличность в отсутствие циклов и то, что между парами вершинами имеется только по одному пути.
Ориентированное (направленное) дерево в ацикличный орграф (ориентированный граф, не содержащий циклов), в котором только одна вершина имеет нулевую степень захода (в неё не ведут дуги), а все остальные вершины имеют степень захода 1 (в них ведёт ровно по одной дуге). Вершина с нулевой степенью захода называется корнем дерева, вершины с нулевой степенью исхода (из которых не исходит ни одна дуга) называются концевыми вершинами или листьями.[2]
Формально дерево определяется как конечное множество
одного или более узлов со следующими свойствами:
- существует один корень дерева

- остальные узлы (за исключением корня) распределены среди
непересекающихся множеств
, и каждое из множеств является деревом; деревья
называются поддеревьями данного корня 
Содержание |
[править] Связанные определения
- Степень узла в количество исходящих дуг (или, иначе, количество поддеревьев узла).
- Концевой узел (лист) в узел со степенью 1 (то есть узел, в который ведёт только одно ребро; в случае ориентированного дерева в узел, в который ведёт только одна дуга и не исходит ни одной дуги).
- Узел ветвления в неконцевой узел.
- Уровень узла в длина пути от корня до узла. Можно определить рекурсивно:
- уровень корня дерева
равен 0; - уровень любого другого узла на единицу больше, чем уровень корня ближайшего поддерева дерева
, содержащего данный узел.
- Дерево с отмеченной вершиной называется корневым деревом.
-й ярус дерева
в множество узлов дерева, на уровне
от корня дерева.- частичный порядок на вершинах:
, если вершины
и
различны и вершина
лежит на (единственной!) элементарной цепи, соединяющей корень с вершиной
. - корневое поддерево с корнем
в подграф
.
- Остовное дерево (остов) в это подграф данного графа, содержащий все его вершины и являющийся деревом. Рёбра графа, не входящие в остов, называются хордами графа относительно остова.
- Лес в множество (обычно упорядоченное), не содержащее ни одного непересекающегося дерева или содержащее несколько непересекающихся деревьев.
[править] Двоичное дерево
Термин двоичное дерево (оно же бинарное дерево) имеет несколько значений:
- Неориентированное дерево, в котором степени вершин не превосходят 3.
- Ориентированное дерево, в котором исходящие степени вершин (число исходящих рёбер) не превосходят 2.
- Абстрактная структура данных, используемая в программировании. На двоичном дереве основаны такие структуры данных, как двоичное дерево поиска, двоичная куча, красно-чёрное дерево, АВЛ-дерево, фибоначчиева куча и др.
[править] N-арные деревья
N-арные деревья определяются по аналогии с двоичным деревом. Для них также есть ориентированные и неориентированные случаи, а также соответствующие абстрактные структуры данных.
- N-арное дерево (неориентированное) в это дерево (обычное, неориентированное), в котором степени вершин не превосходят N+1.
- N-арное дерево (ориентированное) в это ориентированное дерево, в котором исходящие степени вершин (число исходящих рёбер) не превосходят N.
[править] Свойства
- Дерево не имеет кратных рёбер и петель.
- Любое дерево с
вершинами содержит
ребро. Более того, конечный связный граф является деревом тогда и только тогда, когда
, где
в число вершин,
в число рёбер графа. - Граф является деревом тогда и только тогда, когда любые две различные его вершины можно соединить единственным элементарным путём.
- Любое дерево однозначно определяется расстояниями (длиной наименьшей цепи) между его концевыми (степени 1) вершинами.
- Любое дерево является двудольным графом. Любое дерево, содержащее счётное количество вершин, является планарным графом.
- Для любых трёх вершин дерева, пути между парами этих вершин имеют ровно одну общую вершину.
[править] Подсчёт деревьев
- Число различных деревьев, которые можно построить на
нумерованных вершинах, равно
(Теорема Кэли[3]). - Производящая функция
-
- для числа
неизоморфных корневых деревьев с
вершинами удовлетворяет функциональному уравнению
.
- Производящая функция
-
- для числа
неизоморфных деревьев с
вершинами можно представить с помощью перечисляющего ряда для корневых деревьев:
- При
верна следующая асимптотика
-
- где
и
определённые константы,
,
.
[править] Кодирование деревьев
Дерево можно кодировать наборами из нулей и единиц. Рассмотрим, например, укладку дерева на плоскости. Начиная с какой либо вершины, будем двигаться по ребрам дерева, сворачивая в каждой вершине на ближайшее справа ребро и поворачивая назад в концевых вершинах дерева. Проходя по некоторому ребру, записываем
при движении по ребру в первый раз и
при движении по ребру второй раз (в обратном направлении). Если
в число рёбер дерева, то через
шагов мы вернемся в исходную вершину, пройдя по каждому ребру дважды. Полученная при этом последовательность из
и
(код дерева) длины
позволяет однозначно восстанавливать не только само дерево
, но и его укладку на плоскости. Произвольному дереву соответствуют несколько таких кодов. В частности, из этого способа кодирования вытекает следующая грубая оценка на число деревьев с
вершинами:
[править] См. также
[править] Примечания
- в‘ § 13. Определение дерева // Лекции по теории графов / Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И.. в М.: Наука, Физматлит, 1990. в С. 53. в 384 с. в 22 000 экз. в ISBN 5-02-013992-0
- в‘ Альфс Берзтисс. Глава 3. Теория графов. 3.6. Деревья // Структуры данных = A. T. Berztiss. Data structures. Theory and practice. в М.: Статистика, 1974. в С. 131. в 10 500 экз.
- в‘ Дискретная математика: алгоритмы. Формула Кэли
[править] Литература
- Дональд Кнут. Искусство программирования, том = The Art of Computer Programming, vol. 1. Fundamental Algorithms. в 3-е изд. в М.: Вильямс, 2006. в Т. 1. Основные алгоритмы. в 720 с. в ISBN 0-201-89683-4
- Оре О. Теория графов. в 2-е изд. в М.: Наука, 1980. в 336 с.
| Дерево (структура данных) | |
|---|---|
| Двоичное дерево поиска · Дерево (теория графов) · Древовидная структура | |
| Двоичные деревья | Двоичное дерево · T-дерево |
| Самобалансирующиеся двоичные деревья | АА-дерево · АВЛ-дерево · Красно-чёрное дерево · Расширяющееся дерево · Дерево со штрафами · Декартово дерево · Дерево Фибоначчи |
| B-деревья | B-дерево · 2-3-дерево · B+ дерево · B*-дерево · UB-дерево · 2-3-4 дерево · (a,b)-дерево · Танцующее дерево |
| Префиксные деревья | Суффиксное дерево · Radix tree · Ternary search tree |
| Двоичное разбиение пространства | k-мерное дерево · VP-дерево |
| Недвоичные деревья | Октодерево · Sparse Voxel Octree · Экспоненциальное дерево · PQ-дерево |
| Разбиение пространства | R-дерево · R+-дерево · R*-дерево · X-дерево · M-дерево · Дерево Фенвика · Дерево отрезков |
| Другие деревья | Куча · TTH · Finger tree · Metric tree · Cover tree · BK-tree · Doubly-chained tree · iDistance · Link-cut tree |
| Алгоритмы | Поиск в ширину · Поиск в глубину · DSW-алгоритм · Алгоритм связующего дерева |
непересекающихся множеств
, и каждое из множеств является деревом; деревья
, если вершины
и
различны и вершина
.
ребро. Более того, конечный связный граф является деревом тогда и только тогда, когда
, где
в число вершин,
в число рёбер графа.
(Теорема 
неизоморфных корневых деревьев с
.
неизоморфных деревьев с 
верна следующая асимптотика
и
определённые константы,
,
.