У этого термина существуют и другие значения, см. Дерево (значения).
Дерево — это связныйациклический граф.[1] Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.
Лес — упорядоченное множество упорядоченных деревьев.
Ориентированное (направленное) дерево — ацикличный орграф (ориентированный граф, не содержащий циклов), в котором только одна вершина имеет нулевую степень захода (в неё не ведут дуги), а все остальные вершины имеют степень захода 1 (в них ведёт ровно по одной дуге). Вершина с нулевой степенью захода называется корнем дерева, вершины с нулевой степенью исхода (из которых не исходит ни одна дуга) называются концевыми вершинами или листьями.[2]
Связанные определения
Степень вершины — количество инцидентных ей ребер.
Концевой узел (лист, терминальная вершина) — узел со степенью 1 (то есть узел, в который ведёт только одно ребро; в случае ориентированного дерева — узел, в который ведёт только одна дуга и не исходит ни одной дуги).
Узел ветвления — неконцевой узел.
Дерево с отмеченной вершиной называется корневым деревом.
-й ярус дерева — множество узлов дерева, на уровне от корня дерева.
частичный порядок на вершинах: , если вершины и различны и вершина лежит на (единственной!) элементарной цепи, соединяющей корень с вершиной .
корневое поддерево с корнем — подграф .
В контексте, где дерево предполагается имеющим корень, дерево без выделенного корня называется свободным.
Уровень узла — длина пути от корня до узла. Можно определить рекурсивно:
уровень корня дерева равен 0;
уровень любого другого узла на единицу больше, чем уровень корня ближайшего поддерева дерева , содержащего данный узел.
Остовное дерево (остов) — это подграф данного графа, содержащий все его вершины и являющийся деревом. Рёбра графа, не входящие в остов, называются хордами графа относительно остова.
Несводимым называется дерево, в котором нет вершин степени 2.
Лес — множество (обычно упорядоченное), не содержащее ни одного непересекающегося дерева или содержащее несколько непересекающихся деревьев.
Двоичное дерево
Простое бинарное дерево размера 9 и высоты 3, с корнем значения 2. Это дерево не сбалансировано и не отсортировано.
Термин двоичное дерево (применяется так же термин бинарное дерево) имеет несколько значений:
N-арные деревья определяются по аналогии с двоичным деревом. Для них также есть ориентированные и неориентированные случаи, а также соответствующие абстрактные структуры данных.
N-арное дерево (неориентированное) — это дерево (обычное, неориентированное), в котором степени вершин не превосходят N+1.
N-арное дерево (ориентированное) — это ориентированное дерево, в котором исходящие степени вершин (число исходящих рёбер) не превосходят N.
Любое дерево с вершинами содержит ребро. Более того, конечный связный граф является деревом тогда и только тогда, когда , где — число вершин, — число рёбер графа.
Граф является деревом тогда и только тогда, когда любые две различные его вершины можно соединить единственной простой цепью.
Любое дерево однозначно определяется расстояниями (длиной наименьшей цепи) между его концевыми (степени 1) вершинами.
Число различных деревьев, которые можно построить на нумерованных вершинах, равно (Теорема Кэли[3]).
Производящая функция
для числа неизоморфных корневых деревьев с вершинами удовлетворяет функциональному уравнению
.
Производящая функция
для числа неизоморфных деревьев с вершинами можно представить с помощью перечисляющего ряда для корневых деревьев:
При верна следующая асимптотика
где и определённые константы, , .
Кодирование деревьев
Дерево можно кодировать наборами из нулей и единиц. Рассмотрим, например, укладку дерева на плоскости. Начиная с какой либо вершины, будем двигаться по ребрам дерева, сворачивая в каждой вершине на ближайшее справа ребро и поворачивая назад в концевых вершинах дерева. Проходя по некоторому ребру, записываем при движении по ребру в первый раз и при движении по ребру второй раз (в обратном направлении). Если — число рёбер дерева, то через шагов мы вернемся в исходную вершину, пройдя по каждому ребру дважды. Полученная при этом последовательность из и (код дерева) длины позволяет однозначно восстанавливать не только само дерево , но и его укладку на плоскости. Произвольному дереву соответствуют несколько таких кодов. В частности, из этого способа кодирования вытекает следующая грубая оценка на число деревьев с вершинами:
Код Прюфера однозначно сопоставляет произвольному конечному дереву последовательность: дереву с вершинами сопоставляется последовательность из чисел от до с возможными повторениями. Например дерево на рисунке имеет код Прюфера (4,4,4,5).
Дерево можно задать набором скобок где пара скобок соответствует одной вершине, которые соединены ребром если соответствующие скобки непосредственно одна в другой. Например дерево на рисунке можно записать как ((()()(()))), взяв корень вершину 1, или (()()()(())), взяв за корень вершину 4.
↑ § 13. Определение дерева//Лекции по теории графов/Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И..— М.: Наука, Физматлит, 1990.— С.53.— 384с.— 22000 экз.— ISBN 5-02-013992-0.
↑ Альфс Берзтисс.Глава 3. Теория графов. 3.6. Деревья//Структуры данных=A. T. Berztiss. Data structures. Theory and practice.— М.: Статистика, 1974.— С.131.— 10500 экз.
Дональд Кнут.Искусство программирования, том=The Art of Computer Programming, vol. 1. Fundamental Algorithms.— 3-е изд.— М.: Вильямс, 2006.— Т.1. Основные алгоритмы.— 720с.— ISBN 0-201-89683-4.
Оре О.Теория графов.— 2-е изд.— М.: Наука, 1980.— 336с.
Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.
2019-2025 WikiSort.ru - проект по пересортировке и дополнению контента Википедии