Научная статья на тему 'АВЛ-деревья, выполнение операций над ними'

АВЛ-деревья, выполнение операций над ними Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1231
124
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
AVL-TREE / BINARY SEARCH TREE / TREE BALANCING / DATA SEARCHING BY KNOWN KEY / АВЛ-ДЕРЕВО / БИНАРНОЕ ДЕРЕВО ПОИСКА / БАЛАНСИРОВКА ДЕРЕВА / ПОИСК ДАННЫХ В ДВОИЧНОМ ДЕРЕВЕ ПО КЛЮЧУ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Сергеев М.И., Янишевская А.Г.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

AVL-trees and operation applied to them

The articlal is touch the problem of impossibility to give certain assessment of compliting of data search operation while using classic binary search trees. Proposed an solution to solve that problem by using AVL-trees. Given algoritms od operations applied to AVL-trees.

Текст научной работы на тему «АВЛ-деревья, выполнение операций над ними»

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

М. И. Сергеев, А. Г. Янишевская Омский государственный технический университет

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

Ключевые слова: АВЛ-дерево, бинарное дерево поиска, балансировка дерева, поиск данных в двоичном дереве по ключу.

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

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

Введение

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

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

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

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

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

Таким образом можно сказать, что АВЛ-деревья являются наиболее эффективными в обработке ввиду того, что максимальное количество шагов,

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

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

к < [1.45 * 1од2(п + 2)]

(1)

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

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

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

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

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

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

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

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

Т = 0(1од2(п))

(2)

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

4 [8-10].

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

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

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

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

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

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

операцию проверки дерева на сбалансированность, и при обнаружении разбалансировки выполнять операции поворота узлов дерева.

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

Литература

1. Радчук В. А. Закономерности развития рынка информационных услуг на современном этапе (обзор) // Инженерный вестник Дона, 2011, №3. URL: ivdon.ru/ru/magazine/archive/n3y2011/494.

2. Шаякбаров Н.Ф., Зорин Д.С. Анализ производительности систем управления базами данных при работе с большим объемом информации. // Инженерный вестник Дона, 2015, №2 ч.2. URL: ivdon.ru/ru/magazine/archive/n2p2y2015/2974.

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

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

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

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

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

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

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

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

References

1. Radchuk V.A. Inzenernyj vestnik Dona (Rus), 2011, №3. URL: ivdon.ru/ru/magazine/archive/n3y2011/494.

2. Shayakbarov N.F., Zorin D.S. Inzenernyj vestnik Dona (Rus), 2015, №2. URL: ivdon.ru/ru/magazine/archive/n2p2y2015/2974.

3. Virt N., Algoritmy i struktury dannykh. [Algorithms and data structures] SPb.: Nevskiy Dialekt, 2008. 352 p. ISBN 978-5-7940-0065-8

4. Adel'son-Vel'skiy G. M., Landis E. M. Doklady AN SSSR, 1962. V. 146, № 2. pp. 263—266.

5. Lewis H.R., Denenberg L. Data structures and their algorithms. addison-Wesley. 1991. 509 p.

6. Paul E. Dictionary of algorithms and data structures. NIST. URL: xlinux.nist.gov/dads.

7. Knut D., Iskusstvo programmirovaniya, tom 3. Sortirovka i poisk 2e izd. [The art of programming] M.: Izdatel'skiy dom «Vil'yams», 2007. 824 p. ISBN 0201-89685-0.

8. Kormen, T., Leyzerson, Ch., Rivest, R., Shtayn, K. Algoritmy: postroenie i analiz [Introduction to algorithms]. Pod red. I. V. Krasikova. 2e izd. M.: Izdatel'skiy dom «Vil'yams», 2005. 1296 p. ISBN 5-8459-0857-4.

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

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

i Надоели баннеры? Вы всегда можете отключить рекламу.