| |||||
|
Деревья в базах данных => Словарь терминов Словарь терминов
Вершина
Граф
Дерево В дереве может быть только одна корневая вершина. Если в дереве несколько корневых вершин, то такое явление правильно называется лес, хотя многие предпочитают говорить «несколько деревьев».
Самым распространенным примером дерева является дерево каталогов на диске. В интернет-программировании в качестве примера дерева можно было бы привести В случае с представлением деревьев в базах данных принято считать, что дерево выглядит примерно так:
На этом рискунке вершина 1 является корневой. Эта же вершина является родительской для всех вершин дерева, и является непосредственным родителем для вершин 2 и 3. Вершины 2 и 3, в свою очередь, являются непосредственными детьми по отношению к вершине 1. Вершины 4,5,6 и 7 образуют поддерево вершины 2.
Родитель Если посмотреть на наш пример дерева, то вершина А является родительской по отношению к вершине Б в случае, если вершина А находится выше вершины Б и, переходя по стрелкам, мы можем попасть из вершины А в вершину Б. Если есть непосредственная стрелка из вершины А в вершину Б, то вершина А называется «непосредственным родителем» вершины Б, а вершина Б – «непосредственным ребенком» вершины А. Обычно этот термин используют, когда хотят отделить непосредственных родителей (или детей) от всех остальных родителей (детей). Если вершина А является родителем вершины Б, но не является непосредственным родителем вершины Б, то говорят, что вершина А является косвенным родителем (или пра-родителем) вершины Б, а вершина Б – косвенным ребенком (или пра-ребенком) вершины А. Смотрите так же: Дерево
Ребенок
Корневая вершина Смотрите так же: Дерево
Брат, Сестра Смотрите так же: Уровень
Поддерево Смотрите так же: Дерево
Путь При работе с деревьями в базах данных под словом «путь» обычно понимают путь из корневой вершины в заданную. Иногда вместо слова «путь» говорят «список всех родителей». Это не совсем правильно, потому что путь – это упорядоченный список вершин, в котором родители всегда записаны раньше детей. Если мы хотим сказать «список всех родителей», то, что бы быть точным, нужно добавить «отсортированный по номеру уровня». Смотрите так же: Уровень
Уровень
Под номером уровня обычно понимают число, определяющее, сколько родителей у вершин этого уровня. У корневой вершины номер уровня – 0, а у выделенных на рисунке вершин номер уровня – 2. Иногда к номеру уровня прибавляют единицу и говорят, что у корневой вершины номер уровня равен 1, а у выделенных вершин номер уровня равен 3. Чем больше номер уровня, тем ниже находятся вершины в дереве. Очень часто, когда говорят, что «вершины принадлежат одному уровню», имеют в виду, что у этих вершин есть общий непосредственный родитель. Если хотят сказать, что у вершин одинаковый номер уровня, то так и говорят, что «у вершин одинаковый номер уровня».
Направление (выше, ниже, правее, левее)
Если вершина А находится выше вершины Б, то вершина А является родительской по отношению к вершине Б. Если вершина Б находится ниже вершины А, то вершина Б является дочерней по отношению к вершине А. Направления «правее» – «левее» обычно имеют место быть, когда сравниваются братья, хотя в общем случае могут сравниваться не только братья. Очень часто, когда дерево выводят на экран, вершины, принадлежащие одному уровню, располагают сверху вниз. В таком случае, сравнивая расположение этих вершин, у многих возникает соблазн сказать, что одна вершина находится выше (или ниже) другой. Это не правильно. Вершины, принадлежащие одному уровню могут быть расположены только левее или правее, а если они расположены «выше» или «ниже», то это означает, что одни вершины являются родителями других вершин. Когда мы говорим о позиции элемента в дереве, всегда используется такое расположение, как показано на рисунке. Обычно самые левые вершины располагаются в начале списке (то есть на экране они покажутся в самом верху), а самые правые – в конце списка (то есть на экране они покажуются в самом низу).
Списки смежности
Смотрите так же:
Вложенные множества При таком способе представления деревьев значительно упрощается формулировка некоторых запросов. Например, выбрать все поддерево можно, выбрав все вершины, у которых диапазоны лежат внутри диапазона родительской вершины, а выбрать все вершины, которые являются родительскими по отношению к данной можно, выбрав все вершины, диапазон которых покрывает диапазон данной вершины. Ответ на вопрос, почему множества называются вложенными, можно найти на картинке, на которой изображены вложенные объекты:
Круг А является вершиной верхнего уровня. Квадрат Б и овал Д лежат внутри круга А, значит они являются дочерними по отношению к кругу А. Треугольники В и Г лежат внутри квадрата Б. Все фигуры, квадрат, овал и оба треугольника лежат внутри круга А, то есть являются дочерними вершинами по отношению к кругу А.
Смотрите так же:
Вложенные интервалы
Смотрите так же:
Левосторонний обход дерева
Сначала стоим в вершине 1, потом идем 2, 4, возвращаемся – 2, дальше – 5, 7, возвращаемся – 5, возвращаемся – 2, и так далее – 6, 2, 1, 3, 1. На левостороннем обходе построен метод хранения деревьев со Вложенными множествами: когда мы посещаем вершину первый раз – мы присваиваем ей левую метку, а когда посещаем ее последний раз – правую метку.
Материализованный путь
В реальной жизни Вы часто сталкиваетесь с представлением деревьев в виде материализованных путей. Например, разделы в книге могут нумеровать так: Все знают, что в надписи «пункт 1.1.3» первая единица означает номер раздела, вторая единица – это номер подраздела, а тройка – это номер этого пункта в этом подразделе. Вот он, материализованный путь – для пункта явно указан и номер раздела и номер подраздела. Если бы дерево хранилось в виде списков смежности, то для пункта следовало бы указать только номер подраздела, а номер раздела тогда можно было бы узнать, посмотрев в соответствующий подраздел.
Смотрите так же: Английские эквиваленты Adjacency List – Списки смежности Child – Ребенок. Описание смотрите в Родитель Level – Уровень Materialized Path – Материализованный путь Nested Sets – Вложенные множества Nested Intervals – Вложенные интервалы Parent – Родитель Sibling – Брат
Комментариев нет.
[Показать комментарии/форму]
| |||||