В теории графов, дерево — связный (ориентированный или неориентированный) граф, не содержащий циклов (для любой вершины есть один и только один способ добраться до любой другой вершины). Древовидная структура — тип организации, в котором каждый объект связан с хотя бы одним другим.
Формально дерево определяется как конечное множество T одного или более узлов со следующими свойствами:
Связанные определения
Степень узла — количество поддеревьев узла
Концевой узел (лист) — узел со степенью нуль.
Узел ветвления — неконцевой узел.
Уровень узла определяется рекурсивным образом:
Уровень корня дерева T равен нулю
Уровень любого другого узла на единицу выше, чем уровень корня ближайшего поддерева дерева T , содержащего данный узел.
Дерево с отмеченной вершиной назывется корневым деревом.
m -й ярус узла T — множество узлов дерева, на уровне m от корня дерева.
частичный порядок на вершинах: , если вершины u и v различны и вершина u лежит на (единственной!) элементарной цепи, соединяющей корень с вершиной v .
корневое поддерево с корнем v — подграф
При верна следующая ассимптотика
См. также
Книги
Дональд Кнут Искусство программирования, том 1. Основные алгоритмы = The Art of Computer Programming, vol.1. Fundamental Algorithms. — 3-е изд. — М.: «Вильямс», 2006. — С. 720. — ISBN 0-201-89683-4
Оре О. Теория графов. — 2-е изд.. — М.: Наука, 1980. — С. 336.
Wikimedia Foundation . 2010 .
Источник
Дерево (теория графов)
Дерево — это связный ациклический граф. [1] Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.
Ориентированное (направленное) дерево — ацикличный орграф (ориентированный граф, не содержащий циклов), в котором только одна вершина имеет нулевую степень захода (в неё не ведут дуги), а все остальные вершины имеют степень захода 1 (в них ведёт ровно по одной дуге). Вершина с нулевой степенью захода называется корнем дерева, вершины с нулевой степенью исхода (из которых не исходит ни одна дуга) называются концевыми вершинами или листьями. [2]
Формально дерево определяется как конечное множество одного или более узлов со следующими свойствами:
Связанные определения
Степень узла — количество исходящих дуг (или, иначе, количество поддеревьев узла).
Концевой узел (лист, терминальная вершина) — узел со степенью 1 (то есть узел, в который ведёт только одно ребро; в случае ориентированного дерева — узел, в который ведёт только одна дуга и не исходит ни одной дуги).
Узел ветвления — неконцевой узел.
Уровень узла — длина пути от корня до узла. Можно определить рекурсивно:
уровень корня дерева равен 0;
уровень любого другого узла на единицу больше, чем уровень корня ближайшего поддерева дерева , содержащего данный узел.
Дерево с отмеченной вершиной называется корневым деревом.
-й ярус дерева — множество узлов дерева, на уровне от корня дерева.
частичный порядок на вершинах: , если вершины и различны и вершина лежит на (единственной!) элементарной цепи, соединяющей корень с вершиной .
корневое поддерево с корнем — подграф N-арные деревья
N-арные деревья определяются по аналогии с двоичным деревом. Для них также есть ориентированные и неориентированные случаи, а также соответствующие абстрактные структуры данных.
N-арное дерево (неориентированное) — это дерево (обычное, неориентированное), в котором степени вершин не превосходят N+1.
N-арное дерево (ориентированное) — это ориентированное дерево, в котором исходящие степени вершин (число исходящих рёбер) не превосходят N.
Свойства
Дерево не имеет кратных рёбер и петель.
Любое дерево с вершинами содержит ребро. Более того, конечный связный граф является деревом тогда и только тогда, когда , где — число вершин, — число рёбер графа.
Граф является деревом тогда и только тогда, когда любые две различные его вершины можно соединить единственной простой цепью.
Любое дерево однозначно определяется расстояниями (длиной наименьшей цепи) между его концевыми (степени 1) вершинами.
Любое дерево является двудольным графом. Любое дерево, множество вершин которого не более чем счётное, является планарным графом.
Для любых трёх вершин дерева, пути между парами этих вершин имеют ровно одну общую вершину.
Подсчёт деревьев
Число различных деревьев, которые можно построить на нумерованных вершинах, равно неизоморфных корневых деревьев с вершинами удовлетворяет функциональному уравнению неизоморфных деревьев с вершинами можно представить с помощью перечисляющего ряда для корневых деревьев:
При верна следующая асимптотика
определённые константы, , .
Кодирование деревьев
Дерево можно кодировать наборами из нулей и единиц. Рассмотрим, например, укладку дерева на плоскости. Начиная с какой либо вершины, будем двигаться по ребрам дерева, сворачивая в каждой вершине на ближайшее справа ребро и поворачивая назад в концевых вершинах дерева. Проходя по некоторому ребру, записываем при движении по ребру в первый раз и при движении по ребру второй раз (в обратном направлении). Если — число рёбер дерева, то через шагов мы вернемся в исходную вершину, пройдя по каждому ребру дважды. Полученная при этом последовательность из и (код дерева) длины позволяет однозначно восстанавливать не только само дерево , но и его укладку на плоскости. Произвольному дереву соответствуют несколько таких кодов. В частности, из этого способа кодирования вытекает следующая грубая оценка на число деревьев с вершинами:
Дерево (структура данных)
Двоичное дерево поиска · Дерево (теория графов) · Древовидная структура