Estruturas de Dados
Arvores
Arvores Balanceadas
Prof. Rosana
Estruturas de Dados - Árvores
• Conforme se sabe, as árvores
binárias são casos particulares de
árvores.
• Sendo uma estrutura de dados
hierárquica, ela pode facilmente se
tornar desbalanceada.
Árvores Binárias
Estruturas de Dados - Arvores
• De acordo com o tipo de algoritmo de
balanceamento estas árvores recebem nomes
especiais como:
– Árvore AVL
– Árvore Rubro-Negra
– Árvore B
– Etc..
Árvore AVL
• Árvore AVL (ou árvore balanceada pela altura) é uma árvore de
busca binária auto-balanceada.
• Em tal árvore, as alturas das duas sub-árvores a partir de cada nó
difere no máximo em uma unidade.
• As operações de busca, inserção e eliminação de elementos
possuem complexidade O(logn) (no qual n é o número de
elementos da árvore).
• Inserções e eliminações podem também requerer o
rebalanceamento da árvore, exigindo uma ou mais rotações.
• O nome AVL vem de seus criadores Adelson Velsky e Landis, e sua
primeira referência encontra-se no documento "Algoritmos para
organização da informação" de 1962.
Wiikipédia
Árvores AVL
• Balanceamento
• Uma árvore AVL é dita balanceada quando, para cada nó da árvore, a
diferença entre as alturas das suas sub-árvores (direita e esquerda) não é
maior do que um.
• Caso a árvore não esteja balanceada é necessário seu balanceamento
através da rotação simples ou rotação dupla.
• O balanceamento é requerido para as operações de adição e exclusão de
elementos.
• Para definir o balanceamento é utilizado um fator específico para nós.
• O fator de balanceamento de um nó é dado pelo seu peso em relação a
sua sub-árvore. Um nó com fator balanceado pode conter 1, 0, ou -1 em
seu fator.
• Um nó com fator de balanceamento diferente dos citados é considerado
uma árvore não-AVL e requer um balanceamento por rotação ou duplarotação.
Árvore Rubro-Negra
Uma árvore rubro-negra é um tipo de árvore de busca binária
balanceada.
A estrutura original foi inventada em 1972 por Rudolf
Bayer[carece de fontes?] que a chamou de "Árvores Binárias B
Simétricas", mas adquiriu este nome moderno em um artigo
de 1978 escrito por Leonidas J. Guibas e Robert Sedgewick..[1]
Ela é complexa, mas tem um bom pior-caso de tempo de
execução para suas operações e é eficiente na prática: podese buscar, inserir, e remover em tempo O(log n), onde n é o
número total de elementos da árvore.
De maneira simplificada, uma árvore rubro-negra é uma
árvore de busca binária que insere e remove de forma
inteligente, para assegurar que a árvore permaneça
aproximadamente balanceada.
Árvore Rubro_negra
•
•
•
•
•
•
•
Uma árvore rubro-negra é uma árvore de busca binária onde cada nó tem um atributo de
cor, vermelho ou preto. Além dos requisitos ordinários impostos pelas árvores de busca
binárias, as árvores rubro-negras tem os seguintes requisitos adicionais:
Um nó é vermelho ou preto.
A raiz é preta. (Esta regra é usada em algumas definições. Como a raiz pode sempre ser
alterada de vermelho para preto, mas não sendo válido o oposto, esta regra tem pouco efeito
na análise.)
Todas as folhas(null) são pretas.
Ambos os filhos de todos os nós vermelhos são pretos.
Todo caminho de um dado nó para qualquer de seus nós folhas descendentes contem o
mesmo número de nós pretos.
Essas regras asseguram uma propriedade crítica das árvores rubro-negras: que o caminho
mais longo da raiz a qualquer folha não seja mais do que duas vezes o caminho mais curto da
raiz a qualquer outra folha naquela árvore. O resultado é que a árvore é aproximadamente
balanceada. Como as operações de inserção, remoção, e busca de valores necessitam de
tempo de pior caso proporcional à altura da árvore, este limite proporcional a altura permite
que árvores rubro-negras sejam eficientes no pior caso, diferentemente de árvore de busca
binária.
Wiikipédia
Árvore Rubro-negra
Árvore B
• Árvore B ou B-Tree é um tipo de árvores muito utilizado em
banco de dados e em sistemas de arquivos.
• Para inserir ou remover variáveis de um nó, o nó não poderá
ultrapassar sua ordem e nem ser menor que sua ordem
dividida por dois. Árvores B não precisam ser rebalanceadas
como são freqüentemente as árvores de busca binária com
Árvore AVL.
• Árvores B têm vantagens substanciais em relação a outros
tipos de implementações quanto ao tempo de acesso e
pesquisa aos nós.
• O criador das árvores B, Rudolf Bayer, não definiu claramente
de onde veio o B das árvores B. Ao que parece, o B vem de
balanceamento onde todos os nós folhas da árvore estão em
um mesmo nível. Também é possível que o B tenha vindo de
seu sobrenome Bayer, ou ainda do nome da empresa onde
trabalhava, a Boeing Scientific Research Labs.
Wiikipédia
Árvore B
DEFINIÇÃO
• Uma árvore B de ordem "m" (máximo de filhos para cada nó)
é uma árvore que atende as seguintes propriedades:
– Cada nó tem no máximo "m" filhos
– Cada nó (exceto a raíz e as folhas) tem pelo menos "m/2"
filhos
– A raiz tem pelo menos dois filhos se a mesma não for uma
folha
– Todas as folhas aparecem no mesmo nível e não carregam
informação
– Um nó não-folha com "k" filhos deve ter k-1 chaves
Árvore B
Fonte de Consulta
• Wikipédia (Estruturas de dados – Ávores)
Download

Árvores Balanceadas