АВЛ-деревья, выполнение операций над ними

Проблема невозможности дачи оценки времени выполнения операции поиска данных в информационной системе при использовании классических бинарных деревьев поиска. Способ решения данной проблемы путем использования АВЛ-деревьев: его преимущества и недостатки.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 30.07.2017
Размер файла 139,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

АВЛ-деревья, выполнение операций над ними

Введение

поиск бинарный информационный

Большинство современных информационных систем содержат в себе базы данных объем которых может превышать несколько гигабайт и к поиску данных в таких базах предъявляются особые требования, такие как максимальная скорость, прогнозируемость времени поиска и точность нахождения информации [1]. Простые алгоритмы перебора не способны обеспечить максимальную скорость и предоставить оценку времени выполнения операции поиска ввиду чего повсеместно заменяются на алгоритмы поиска с использованием двоичных деревьев. Доказательством этого служит сравнение скорости поиска в современных СУБД. Именно СУБД, использующие индексацию и двоичные деревья поиска показывают наибольшую производительность при поиске данных по таблице, содержащей большой объем данных [2].

Двоичные деревья поиска в стандартной реализации позволяют увеличить скорость поиска данных в информационных системах и предоставляют точные результаты, однако не способны предоставить оценку среднего времени выполнения операции поиска по базе данных фиксированного объема. В данной статье рассмотрен модифицированный вариант двоичных деревьев поиска - АВЛ-деревья, который позволяет давать точную оценку скорости выполнения операции поиска данных, а так же уменьшает время нахождения искомой информации. Так же будут рассмотрены операции вставки и удаление узлов и поддеревьев из АВЛ-дерева и приведены алгоритмы выполнения данных операций.

1.Определение АВЛ-дерева

Для того, чтобы дать понятие АВЛ-дерева нам необходимо дать определение двоичного дерева поиска. Двоичное дерево поиска - иерархическая структура данных в которой каждый узел имеет не более чем два потомка, причем значение ключа любого узла левого поддерева произвольного узла Х меньше, чем значение самого узла Х, а значение любого узла правого поддерева узла Х больше либо равно значению ключа узла Х [3].

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

Таким образом АВЛ-дерево - это двоичное дерево поиска, для которого определен коэффициент сбалансированности k = 1 [4].

2.Свойства АВЛ-дерева

Из определения АВЛ-дерева, следует, что разница высот левого и правого поддерева любого произвольного узла Х лежит в диапозоне {-1, 0, 1}. Исходя из этого свойства было доказанно, что высота h АВЛ-дерева, содержащего n узлов может быть рассчитана по формуле (1) [5].

(1)

Таким образом можно сказать, что АВЛ-деревья являются наиболее эффективными в обработке ввиду того, что максимальное количество шагов, для обнаружения искомого узла равно высоте дерева, которая является минимальной среди всех существующих двоичных деревьев поиска и максимально приближена к высоте идеально сбалансированного дерева. Время Т нахождения произвольного узла X АВЛ-дереве, содержащем n элементов может быть рассчитана по формуле (2) [6].

(2)

Время выполнения операций вставки и удаления узлов напрямую зависит от скорости поиска узла по дереву и следовательно является является минимальным по сравнению с другими видами двоичных деревьев поиска, однако в следствии выполнения данных операций коэффициент может произойти разбалансировка дерева, т.е. для некоторого узла X высота левого и правого узла станет отличаться на 2, что приведет к потере свойств АВЛ-дерева. Для того, чтобы не допустить этого над АВЛ-деревом определена операция балансировки. Время выполнения операции балансировки фиксировано и она осуществляется путем поворота узлов и изменению связей в дереве. Выделяют 4 типа поворотов (вращений) [7]:

1. Малое правое вращение;

2. Большое правое вращение;

3. Малое левое вращение;

4. Большое левое вращение.

Оба вида большого вращения представляют собой комбинации малых поворотов.

3.Балансировка АВЛ-дерева

Всего существует 2 типа разбалансированности дерева. Для исправления первого случая используется тип порота 1 и 3, а для второго 2 и 4 [8-10].

Рассмотрим первый случай. На рисунке 1 изображено сбалансированное поддерево, где x и y - узлы, а A, B, C - поддеревья. Добавления к поддереву A узла v приведет к нарушению баланса поддерева. Выполним балансировку при помощи правого малого поворота узла у (рисунок 2). Операция выполнения левого малого поворота осуществляется семерично малому правому.

Рис 1. - Сбалансированное поддерево

Рис 2. - Правый малый поворот узла у

Второй случай нарушения баланса дерева исправляется путем выполнения большого правого или большого левого поворота. Рассмотрим дерево изображенное на рисунке 3.

Рис. 3 - Сбалансированное дерево. Случай 2

При добавлении узлов в поддерево А или D баланс дерева не будет нарушен, однако при добавлении узла с поддерево В или С необходимо будет произвести балансировку. Для этого выполним большой правый поворот (рисунок 4). Большой левый поворот выполняется симметрично правому.

Рис. 4 - Большой правый поворот.

Вывод

Рассмотрев АВЛ-деревья и изучив их свойства мы можем сделать вывод, что их использование вместо простых двоичных деревьев поиска приведет к уменьшению времени операции поиска, вставки и удаления данных при одинаковом количестве элементов в дереве, однако это приведет к усложнению алгоритма взаимодействия с деревом ввиду того, что после выполнения каждой операции вставки и удаления придется выполнять операцию проверки дерева на сбалансированность, и при обнаружении разбалансировки выполнять операции поворота узлов дерева.

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

Литература

1. Вирт Н., Алгоритмы и структуры данных. СПб.: Невский Диалект, 2008. 352 с. ISBN 978-5-7940-0065-8.

2. Адельсон-Вельский Г. М., Ландис Е. М. Один алгоритм организации информации // Доклады АН СССР, 1962. Т. 146, № 2. c. 263--266.

3. Lewis H.R., Denenberg L. Data Structures and Their Algorithms. Addison-Wesley. 1991. 509p.

4. Paul E. Dictionary of Algorithms and Data Structures. NIST // URL: xlinux.nist.gov/dads.

5. Кнут Д., Искусство программирования, том 3. Сортировка и поиск 2-е изд. М.:Издательский дом «Вильямс», 2007. 824 с. ISBN 0-201-89685-0.

6. Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Алгоритмы: построение и анализ / Под ред. И. В. Красикова. 2-е изд. М.: Издательский дом «Вильямс», 2005. 1296 с. ISBN 5-8459-0857-4.

7. Tarjan R. E. Data structures and networks algorithms. SIAM. 1983. 125 p.

8. Bfaff P. Performance analysis of BSTs in system software SIGMETRICS Perform. Eval. vol. 32, 2004. pp. 410-411.

Размещено на Allbest.ru

...

Подобные документы

  • Структура оптимальных бинарных деревьев поиска. Рекурсивное решение; вычисление математического ожидания стоимости поиска; выбор ключа, который приводит к его минимальному значению. Вычисленные с помощью процедуры Optimal_BST для распределения ключей.

    доклад [1,2 M], добавлен 14.11.2011

  • Использование бинарных деревьев для поиска данных. Схемы алгоритмов работы с бинарным деревом. Проектирование алгоритмов и программ. Структура программного комплекса. Язык С# как средство для разработки автоматизированной информационной системы "Адрес".

    курсовая работа [914,9 K], добавлен 14.11.2013

  • Сущность объектно-ориентированного подхода в программировании. Описание языков программирования. Использование бинарных деревьев для поиска данных, алгоритмы их обхода. Разработка Windows-приложения автоматизированной системы "Планета животных".

    курсовая работа [3,7 M], добавлен 16.09.2016

  • Изображения древовидной структуры. Десятичная система обозначений Дьюи. Стандартные формы представления деревьев. Представление деревьев с использованием списков, с использованием списков сыновей. Полное бинарное дерево. Основные операции над кучей.

    презентация [495,0 K], добавлен 19.01.2014

  • Организация данных с помощью бинарных деревьев. Определение бинарного дерева. Упорядоченное двоичное дерево поиска и его свойства. Программная реализация добавления данных в упорядоченное двоичное дерево с использованием динамических структур данных.

    курсовая работа [459,0 K], добавлен 09.08.2012

  • Сбалансированные многоходовые деревья поиска. Исследование структуры B+-дерева, её основные операции. Доказательство их вычислительной сложности. Утверждение о высоте. Поиск, вставка, удаление записи, поиск по диапазону. B+-деревья в системах баз данных.

    курсовая работа [705,5 K], добавлен 26.12.2013

  • Разработка информационной системы для регистрации постояльцев в гостинице с использованием структур данных и алгоритмов. Методы хеширования и сортировки данных. Обходы бинарных деревьев. Линейный однонаправленный список. Описание и тестирование программы.

    курсовая работа [2,3 M], добавлен 09.03.2014

  • Способы построения остовного дерева (алгоритма поиска в глубину и поиска в ширину). Вид неориентированного графа. Понятие и алгоритмы нахождения минимальных остовных деревьев. Последовательность построения дерева графов по алгоритмам Крускала и Прима.

    презентация [22,8 K], добавлен 16.09.2013

  • Бинарные деревья поиска, основные действия с ними. Сущность префиксного (прямого), инфиксного (симметричного) и постфиксного (обратного) обхода в глубину. Описание функций редактирования исходных данных. Листинг и текст программы Form 1 и Form 2.

    курсовая работа [1,7 M], добавлен 08.06.2014

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

    дипломная работа [177,1 K], добавлен 24.06.2012

  • Основные функции категории Логические (формат и примеры) в Excel. Технологии поиска в системе "КонсультантПлюс". Особенности Быстрого поиска в новой программе Технологии ПРОФ как дополнение классических поисковых инструментов в системе "КонсультантПлюс".

    контрольная работа [3,7 M], добавлен 18.02.2010

  • Классы задач P и NP, их сводимость. Примеры NP-полных и NP-трудных задач. Сущность метода поиска с возвратом. Алгоритмы решения классических задач комбинаторного поиска. Решение задачи о восьми ферзях. Поиск оптимального решения методом ветвей и границ.

    презентация [441,5 K], добавлен 19.10.2014

  • Организация поиска информации по заданной теме в сети Интернет. Поиск с помощью поисковых машин. Преимущества и недостатки метода поиска по ключевому слову (фразе). Поиск в каталогах информационных ресурсов. Преимущества и недостатки предметных каталогов.

    курсовая работа [47,5 K], добавлен 03.11.2010

  • Объектно-ориентированное программирование как новый подход к созданию приложений. Разработка Windows-приложения для поиска информации в хэш-таблице. Анализ использования хеширования для поиска данных и линейного зондирования для разрешения конфликтов.

    курсовая работа [915,5 K], добавлен 06.03.2016

  • Использование информационной системы отдела кадров предприятия для уменьшения времени выполнения функций, автоматического создания документации, проставления дат и табельных номеров, простоты поиска. Интерфейс программы и структура базы данных приложения.

    курсовая работа [254,7 K], добавлен 25.03.2011

  • Понятие дерево, двоичное дерево, поддерево. Способы хранения деревьев в памяти ЭВМ, их основные недостатки и достоинства. Преобразования, не нарушающие упорядоченности дерева и способствующие лучшей сбалансированности. Анализ алгоритмов управления.

    лабораторная работа [310,1 K], добавлен 14.10.2013

  • Понятие и базовые свойства ориентированного дерева. Обходы (способы нумерации вершин) в глубину и ширину. Представление бинарных графов с помощью указателей и массива, скобочной записи, списком прямых предков. Сбалансированность дерева двоичного поиска.

    презентация [330,6 K], добавлен 19.10.2014

  • Организация работы базы данных с помощью сбалансированных В-деревьев: принципы, методы добавления, поиска, удаления элементов из структуры. Процедуры, производящие балансировку и слияние записей в блоке. Реализация программы в Научной библиотеке ОрелГТУ.

    курсовая работа [95,3 K], добавлен 12.08.2011

  • Проектирование базы данных, отражающей информацию о поездах дальнего следования с использованием алгоритма деревьев. Разновидности деревьев и принцип выбора оптимального из них для создания программы. Модули программы и их функции, анализ работы ПО.

    курсовая работа [28,1 K], добавлен 11.07.2009

  • Создание программы ввода с клавиатуры двух чисел в 9-ричной системе счисления размером с слово, выполнение над ними деления и вывода результата в исходной системе счисления. Программа предусматривает контроль вводимой информации и результат операции.

    лабораторная работа [11,3 K], добавлен 13.02.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.