Збалансоване дерево
У програмуванні збалансоване дерево в загальному розумінні цього слова — це такий різновид двійкового дерева пошуку, яке автоматично підтримує свою висоту, тобто кількість рівнів вершин під коренем є мінімальною.
Швидкість роботи більшості операцій на деревах залежить від висоти дерева. Такими операціями в першу чергу є:
- пошук вершини
- вставка вершини
- видалення вершини
Швидкість цих операцій напряму залежить від висоти дерева -- O(Height). Якщо говорити про залежність між кількістю вершин в дереві та його висотою, то висота дерева лежить у таких межах:
- H = N Висота дерева дорівнює кількості вершин у дереві, якщо дерево є виродженим.
- H = log(N) Висота дерева дорівнює логарифму, якщо дерево є повним.
Збалансованість дерева є важливою саме тому, що час виконання більшості алгоритмів на двійкових деревах пошуку є пропорційний до їхньої висоти. Звичайні двійкові дерева пошуку можуть мати досить велику висоту в тривіальних ситуаціях, що від’ємно впливає на швидкість виконання операцій.
Процедура зменшення (балансування) висоти дерева виконується за допомогою трансформацій, відомих як обернення дерева, у певні моменти часу (переважно при видаленні або додаванні нових елементів).
Ідеально збалансоване дерево — це дерево, у якого для кожної вершини різниця між висотами лівого та правого піддерев не перевищує одиниці[сумнівно ][джерело?]. Однак, така умова може вимагати значної перебудови дерева при додаванні або видаленні елементів, тому їх застосовують лише для пошуку, коли дані в них практично незмінні.
При додаванні в дерево нових вузлів або внаслідок їх вилучення ідеальна збалансованість втрачається. Дерево можна перебудувати, але така операція триває досить довго. Тому було запропоновано слабші вимоги щодо збалансованості, які отримали назву АВЛ-збалансованості. Дерево є АВЛ-збалансованим, якщо висоти лівого та правого піддерев різняться не більше, ніж на одиницю[1]. Дерева, що задовольняють таким умовам, називають АВЛ-деревами (за прізвищами їх винахідників — Адельсон-Вельського і Ландіса). Зрозуміло, що кожне ідеально збалансоване дерево є також АВЛ-збалансованим, але не навпаки.
- ↑ Адельсон-Вельський, Ландіс, 1962, с. 263—266.
- Дональд Кнут. Sorting and Searching // The Art of Computer Programming. — 3rd. — Massachusetts : Addison–Wesley, 1998. — Т. 3. — 780 с. — ISBN 0-201-89685-0.(англ.)
- Гудзь Р. В., Ярошко С. А. Використання динамічних структур даних у програмах на Borland Pascal: Тексти лекцій. — Львів : Ред.-вид. відділ ОЦ ЛНУ ім. І. Франка, 2000.
- Г. М. Адельсон-Вельський. Один алгоритм организации информации / Г. М. Адельсон-Вельський, Е. М. Ландис // Докл. АН СССР. — 1962. — Т. 146, № 2. — С. 263–266.(рос.)
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |