AVL деревья не сбалансированы по весу?

22

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

Этот вопрос, чтобы задать тот же вопрос, но для деревьев AVL .

Вопрос в том, что, учитывая определение μ сбалансированных деревьев, как в другом вопросе,

Существует ли такое μ>0 , чтобы все достаточно большие AVL-деревья были μ сбалансированы?

Я предполагаю, что есть только одно определение деревьев AVL, и нет никакой двусмысленности.

Арьябхата
источник

Ответы:

18

Претензии : Нет, нет таких μ .

Доказательство : мы даем бесконечную последовательность деревьев AVL растущего размера, значение баланса веса стремится к 0 , что противоречит утверждению.

Пусть полное дерево высоты h ; у него 2 часа + 1 - 1Chh2h+11 узел.

Пусть - дерево Фибоначчи высоты h ; имеет F h + 2 - 1 узлов. [ 1 , 2 , TAoCP 3 ]ShhFh+21

Пусть теперь с T h = N ( S h , C h ) последовательностью деревьев, которую мы называем контрпримером.(Th)i1Th=N(Sh,Ch)

Рассмотрим балансировочное значение корня для некоторого h N + :ThhN+

Fh+22h+1+Fh+21=11+2h+1Fh+21Fh+2Fh+22h+1=15(ϕh+2ϕ^h+2)2h+1ϕh+252h+1h0

Это завершает доказательство.

Обозначение :

  • - это n- ечисло ФибоначчиFnn
  • являетсяЗолотым сечением, ф- 0,62ϕ1.6ϕ^0.62 сопряженной.
  • означает, что f и g асимптотически равны, т.е. lim n f ( n )fgfglimnf(n)g(n)=1 .

Нота бене : деревья Фибоначчи - это именно те деревья AVL с наименьшим количеством узлов для данной высоты (или, что эквивалентно, максимальной высоты для данного числа узлов).

Приложение : Как мы можем придумать деревья Фибоначчи, если бы не слышали, как их упоминал профессор? Ну, как бы выглядело дерево AVL высотой с как можно меньшим количеством узлов? Конечно, вам нужен рут. Одно из поддеревьев должно иметь высоту h - 1 , и мы должны выбрать его с как можно меньшим количеством узлов. Другой может иметь высоту h - 2, не нарушая условия выравнивания высоты, и мы выбираем его также с как можно меньшим количеством узлов. По сути, мы строим деревья, которые хотим рекурсивно! Это первые четыре:hh1h2

Первые четыре дерева Фибоначчи
[ источник ]

Мы устанавливаем повторение для числа узлов в построенном таким образом дереве с высотой h :f(h)h

f(1)=1f(2)=2f(h)=f(h1)+f(h2)+1n3

Решение этого приводит к который мы использовали выше.f(h)=Fh+21


Такое же доказательство дано (с меньшими подробностями) в бинарных поисковых деревьях ограниченного баланса Nievergelt и Reingold (1972).

Рафаэль
источник