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)