Existe uma estrutura de dados da árvore de pesquisa binária que pode evitar se tornar mal equilibrada?

7

Esta é uma pergunta de acompanhamento de " Nem todas as árvores Vermelho-Pretas estão equilibradas? " E "As árvores AVL não são equilibradas em peso? ".

Definição: Para uma árvore raiz e um vértice , seja o número de nós na subárvore esquerda de e seja o número de nós na subárvore raiz no . Dizemos que é balanceado , com , se para cada nó v \ em V (T) a desigualdade \ mu \ le \ frac {L_T (v ) + 1} {N_T (v) + 1} \ le 1 - \ mu é válido e se \ mu é mínimo sujeito a essa desigualdade.TvV(T)LT(v)vNT(v)vTμ0μ12vV(T)

μLT(v)+1NT(v)+11μ
μ

(Estes são, aparentemente, também conhecido como balanceamento de peso árvores na parte da literatura.) Uma árvore que é μ -balanced para alguns μ<μ , diremos é desequilibrada-μ .

Os posts acima mostram essencialmente que nem as árvores AVL , nem as árvores vermelho-preto podem ser garantidas como μ balanceadas para qualquer μ>0 : ou seja, para qualquer μ , é possível fornecer uma sequência de entradas a ser inserido para que a árvore resultante seja μ balanceada.

Questão. Existe alguma estrutura de árvore de pesquisa binária, com as características usuais de tempo de inserção e pesquisa de O(logn) e alguns m>0 , de modo que a árvore sempre seja μ balanceada por algum μ>m ?

Niel de Beaudrap
fonte
11
Eu diria que a razão pela qual -balanced árvores raramente são utilizados: eles exigem muita sobrecarga quando equilibrando-os, com um pouco de ganho. Considere o exemplo nesta resposta : A árvore tem altura . Sua subárvore esquerda possui nós e sua subárvore direita possui nós, portanto, no geral, possui . Se colocarmos o mesmo número de nós em uma árvore perfeitamente equilibrada, ela ainda terá altura . Como a altura é o que determina os custos de operação, não ganhamos nada, gastamos muito mais tempo reequilibrando. μ2k+22k122k+1122k+1+2k12k+2
Petr Pudlák
@ PetrPudlák: De fato, lendo as árvores de pesquisa binária de equilíbrio limitado (Nievergelt + Reingold) na resposta de Aryabhata, fico impressionado com a estranheza da ideia de pesquisar percorrendo toda a estrutura de dados. Não sei em que circunstâncias alguém poderia querer fazer uma coisa dessas, o que não sugeriria uma estrutura de dados mais simples ou mais elaborada. Se encontrar o caminho para o elemento procurado é fácil, como em uma implementação típica de BSTs em um conjunto ordenado, é a altura, mas não o peso, o que importa; mas como combinatorista, estou curioso.
Niel de Beaudrap

Respostas:

6

Sim, acredito que sim (embora não me lembre dos detalhes do artigo para confirmar).

Este é o artigo original que tratou disso:

Nievergelt J. e Reingold EM, " Árvores de busca binária de equilíbrio limitado ", Anais do quarto simpósio anual da ACM sobre Teoria da Computação, pp 137-142, 1972

Aqui está uma página sobre árvores com peso equilibrado que parece ter mais informações e menciona seu uso em linguagens funcionais.

Este artigo: No número médio de operações reequilibradas em árvores com peso balanceado , parece estar investigando o número de operações reequilibradas em árvores com peso balanceado.

Também me lembro que os livros de Art of ... de Knuth tinham uma referência ao artigo de Reingold acima (talvez nos exercícios).

Aryabhata
fonte