Производительность АВЛ-дерева

Прежде, чем идти дальше, давайте рассмотрим результат соблюдения этого нового фактора баланса. Утверждением для доказательства станет гарантия, что если дерево имеет фактор сбалансированности -1, 0 или 1, то мы получаем лучшую О-производительность для операций с ключами. Начнём с размышлений о том, как условие баланса изменяет наихудший случай. Есть две возможности, которые следует рассмотреть: перевес дерева влево и вправо. Мы будем изучать деревья высотой 0, 1, 2, и 3, и рисунок 2 иллюстрирует дерево максимально перевешивающее влево согласно новым правилам.

../_images/worstAVL.png

Рисунок 2: Худший случай перевешивающих влево АВЛ-деревьев.

Глядя на общее количество узлов, можно заметить, что для дерева высотой 0 оно равно 1, высотой 1 - 1+1=2, высотой 2 - 1+1+2=4, высотой 3 - 1+2+4=7. Обобщая, количество узлов для дерева высотой h (Nh) равно

Nh=1+Nh1+Nh2

Эта рекуррентность может показаться вам знакомой, поскольку очень похожа на последовательность Фибоначчи. Данный факт можно использовать для вывода формулы высоты АВЛ-дерева с заданным количеством узлов. Напомним, что в последовательности Фибоначчи iое число равно

F0=0F1=1Fi=Fi1+Fi2 for all i2

Важный математический результат заключается в том, что числа Фибоначчи с каждым разом становятся всё больше и больше, а отношение Fi/Fi1 всё ближе и ближе к “золотому сечению” Φ, определяемому как Φ=1+52. Вы можете обратиться к текстам по математике, если хотите посмотреть вывод предыдущего уравнения. Мы же просто используем его для приближённого вычисления Fi как Fi=Φi/5. Если переписать уравнение для Nh с использованием этой аппроксимации, то получится

Nh=Fh+21,h1

Заменив ссылку на Фибоначчи его аппроксимацией к “золотому сечению”, получим

Nh=Φh+251

Перегруппировав переменные и взяв от обоих частей логарифм по основанию 2, получим следующее решение:

logNh+1=(H+2)logΦ12log5h=logNh+12logΦ+12log5logΦh=1.44logNh

Это выражение говорит о том, что каждый раз высота АВЛ-дерева равна константе (1.44), умноженной на логарифм высоты дерева. И это отличная новость для поиска по АВЛ-дереву, поскольку ограничивает его O(logN).

Next Section - Реализация АВЛ-дерева