Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Методы поиска по дереву

РефератПомощь в написанииУзнать стоимостьмоей работы

Упорядоченное дерево, степень которого не больше 2 называется бинарным деревом. Бинарное дерево особенно часто используется при поиске в оперативной памяти. Алгоритм поиска: вначале аргумент поиска сравнивается с ключом, находящимся в корне. Если аргумент совпадает с ключом, поиск закончен, если же не совпадает, то в случае, когда аргумент оказвается меньше ключа, поиск продолжается в левом… Читать ещё >

Методы поиска по дереву (реферат, курсовая, диплом, контрольная)

Деревом называется конечное множество, состоящее из одного или более элементов, называемых узлами, таких, что:

  • · между узлами имеет место отношение типа «исходный-порожденный» ;
  • · есть только один узел, не имеющий исходного. Он называется корнем;
  • · все узлы за исключением корня имеют только один исходный;
  • · каждый узел может иметь несколько порожденных;
  • · отношение «исходный-порожденный» действует только в одном направлении, т. е. ни один потомок некоторого узла не может стать для него предком.

Число порожденных отдельного узла (число поддеревьев данного корня) называется его степенью. Узел с нулевой степенью называют листом или концевым узлом. Максимальное значение степени всех узлов данного дерева называется степенью дерева.

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

Упорядоченное дерево, степень которого не больше 2 называется бинарным деревом. Бинарное дерево особенно часто используется при поиске в оперативной памяти. Алгоритм поиска: вначале аргумент поиска сравнивается с ключом, находящимся в корне. Если аргумент совпадает с ключом, поиск закончен, если же не совпадает, то в случае, когда аргумент оказвается меньше ключа, поиск продолжается в левом поддереве, а в случае когда больше ключа — в правом поддереве. Увеличив уровень на 1 повторяют сравнение, считая текущий узел корнем.

Пример: Пусть дан список студентов, содержащий их фамили и средний бал успеваемости (см. таблицу 1.1). В качестве ключа используется фамилия студента. Предположим, что все записи имеют фиксированную длину, тогда в качестве указателя можно использовать номер записи. Смещение записи в файле в этом случае будет вычислятся как ([номер_записи] -1) * [длина_записи]. Пусть аргумент поиска «Петров». На рисунке 1.2 показаны одно из возможных для этого набора данных бинарных деревьев поиска и путь поиска.

Таблица 1.1.

студент.

балл.

Иванов.

3,4.

Васильев.

4,2.

Кузнецов.

3,5.

Петров.

3,2.

Сидоров.

4,6.

Тихомиров.

3,8.

Заметим, что здесь используется следующее правило сравнения строковых переменных: считается, что значение символа соответствует его порядковому номеру в алфавите. Поэтому «И» меньше «К», а «К» меньше «С». Если текущие символы в сравниваемых строках совпадают, то сравниваются символы в следующих позициях.

Бинарные деревья особенно эффективны в случае когда множество ключей заранее неизвестно, либо когда это множество интенсивно изменяется. Очевидно, что при переменном множестве ключей лучше иметь сбалансированное дерево.

Бинарное дерево называют сбалансированным (balanced), если высота левого поддерева каждого узла отличается от высоты правого поддерева не более чем на 1.

При поиске данных во внешней памяти очень важной является проблема сокращения числа перемещений данных из внешней памяти в оперативную. Поэтому, в данном случае по сравнению с бинарными деревьями более выгодными окажутся сильно ветвящиеся деревья — т.к. их высота меньше, то при поиске потребуется меньше обращений к внешней памяти. Наибольшее применение в этом случае получили В-деревья (В — balanced) .

В-деревом порядка n называется сильно ветвящееся дерево степени 2n+1, обладающее следующими свойствами:

  • · Каждый узел, за исключением корня, содержит не менее n и не более 2n ключей.
  • · Корень содержит не менее одного и не более 2n ключей.
  • · Все листья расположены на одном уровне.
  • · Каждый нелистовой узел содержит два списка: упорядоченный по возрастанию значений список ключей и соответсвующий ему список указателей (для листовых узлов список указателей отсутствует).

Для такого дерева:

  • · сравнительно просто может быть организован последовательный доступ;
  • · все листья расположены на одном уровне;
  • · при добавлении и изменении ключей все изменения ограничиваются, как правило, одним узлом.

Следует отметить, что Bдеревья наилучшим образом подходят только для организации доступа к достаточно простым (одномерным) структурам данных. Для доступа к более сложным структурам, таким, например, как пространственные (многомерные) данные в последнее время все чаще используют R-деревья.

R-дерево (R-Tree) это индексная структура для доступа к пространственным данным, предложенная А. Гуттманом (Калифорнийский университет, Беркли). R-дерево допускает произвольное выполнение операций добавления, удаления и поиска данных без периодической переиндексации.

Показать весь текст
Заполнить форму текущей работой