Árvores Equilibradas. Sumário

Documentos relacionados
Árvores de pesquisa. Árvores de pesquisa equilibradas

Uma árvore binária de busca não garante acesso em tempo logarítmico.

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza

Árvores Vermelho-Preto

Estruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção.

Árvores AVL e Árvores B. Jeane Melo

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Linguagem C: Árvores AVL

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza

INE5408 Estruturas de Dados

Dicionários. TAD Orientado a conteúdo

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

Árvores Binárias de Busca

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

Aula 10 Árvores Adelson-Velskii e Landis

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

Árvores AVL. Prof. Robinson Alves

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

Árvores Binárias de Busca

Árvores binárias de busca

ÁRVORE AVL. Problema do balanceamento

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores balanceadas. Aleardo Manacero Jr.

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores binárias de busca

Árvores AVL. Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada. Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Aula 19 Árvores Rubro-Negras

Árvores AVL (Adelson-Velskii and Landis)

PROGRAMAÇÃO III (LTSI)

Problemas com ABP Desbalanceamento progressivo

Árvores Binárias de Busca (ABB) 18/11

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

Árvores Binárias Balanceadas Estrutura de Dados I

Aula 13 Árvores Rubro-Negras

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

INF1010 Lista de Exercícios 2

Aula 28: Listas de Prioridades

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

DAINF - Departamento de Informática

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

AED1 - Árvores. Hebert Coelho. Instituto de Informática Universidade Federal de Goiás. HC AED1-Árvores 1/49

Árvores Binárias de Busca

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Árvores B. Árvore B (ou melhor B+)

Árvores Binárias de Busca (ABB) 18/11

Árvores. Prof. César Melo ICOMP/UFAM

Árvores Rubro-Negra IFRN

Exemplo Árvore Binária

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Árvores & Árvores Binárias

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Árvores Binárias Balanceadas

Mo:vação. Árvore AVL. Caracterís:cas. Origem. Exemplo. Exercício 1 Qual é a altura dos nodos 50 e 44?

Transcrição:

Árvores Equilibradas Sumário Splay Vermelho Preto AA e BB Multidimensionais quaternárias k d Pesquisa Lexicográfica tries multivia tries binárias PATRICIA

Árvores Equilibradas Sumário Árvores AVL Árvores B Splay Pesquisa Lexicográfica tries multivia tries binárias

Árvores equilibradas Árvore de pesquisa binária não garante acesso logarítmico Inserção e eliminação simples podem criar árvores desequilibradas Pior caso é linear: árvore degenera em lista ligada Pior caso ocorre tipicamente para inserções ordenadas Árvores equilibradas Evitam casos degenerados Garantem O(log N) para operações de inserção, remoção e pesquisa Requerem algoritmos mais elaborados para inserção e remoção Condição adicional na árvore condição de equilíbrio, garante que nenhum nó está demasiado profundo

Árvores AVL Adelson Velskii e Landis, 1962 Condição de equilíbrio: na altura das sub árvores de cada nó diferença de alturas não pode exceder 1 garante altura logarítmica para a árvore é simples de manter Definição Uma árvore AVL é uma árvore de pesquisa binária que respeita a seguinte condição de equilíbrio: para qualquer nó da árvore, as alturas das sub árvores esquerda e direita diferem no máximo de 1 unidade. Altura de uma árvore 1 + altura da sua sub árvore mais alta 0 para árvore só com 1 nó 1 para árvore vazia

Número de nós na árvore AVL Uma árvore AVL de altura H tem pelo menos F H+3 1 nós, em que F i é o número de Fibonacci de ordem i S H : tamanho da menor árvore AVL de altura H (S 0 = 1, S 1 = 2) A árvore mais pequena de altura H tem sub árvores de alturas H 1 e H 2 Cada sub árvore terá, por sua vez, o número mínimo de nós para a sua altura Então será S H = S H 1 + S H 2 +1 S H = F H+3 1, por indução: S 0 =1, é F 3 1 Se S H 1 = F H+2 1 e S H 2 = F H+1 1, então S H = S H 1 + S H 2 +1 = F H+2 1 + F H+1 1 +1= F H+2 + F H+1 1 = F H+3 1 F i φ i / 5, com φ= (1+ 5)/2 1.618 árvore de altura H tem no mínimo φ H+3 / 5 nós H < 1.44 log (N+2) 1.328 (não mais de 44% acima da mínima)

Árvores AVL 12 12 8 16 8 16 4 10 14 4 10 14 2 6 2 6 Inserção com violação da condição em 2 nós 5 Inserções e remoções podem destruir o equilíbrio de alguns dos nós da árvore Necessário verificar condição e reequilibrar se tiver sido destruída

Inserção em Árvores AVL Após uma inserção, só os nós no caminho da raiz ao ponto de inserção podem ter a condição de equilíbrio alterada condição só depende das alturas das sub árvores de um nó Para reequilibrar: subir no caminho até à raiz reequilibrar o nó mais profundo onde surge desequilíbrio toda a árvore resulta equilibrada X: nó a reequilibrar devido a inserção em 1 árvore esquerda do filho esquerdo de X 2 árvore direita do filho esquerdo de X 3 árvore esquerda do filho direito de X 4 árvore direita do filho direito de X Casos 1 e 4 simétricos; casos 2 e 3 simétricos

Rotação simples k2 Caso 1 k2 A B C A B C k2 é nó mais profundo onde falha o equilíbrio sub árvore esquerda está 2 níveis abaixo da direita B não está no mesmo nível de A, ou k2 estaria desequilibrado antes da inserção B não está no mesmo nível que C, ou seria nó desequilibrado mais fundo

Rotação simples 12 12 A k2 8 C 4 10 14 B 16 A 4 2 k2 8 14 16 2 6 1 B 6 10 C 1 Árvore resultante da rotação é AVL e k2 passam a ter subárvores da mesma altura nova altura da árvore resultante é igual á da árvore anterior à inserção problema fica resolvido com uma só operação

Rotação simples com filho esquerdo /** * Rotate binary tree node with left child. * For AVL trees, this is a single rotation * for case 1. */ static BinaryNode withleftchild( BinaryNode { BinaryNode = k2.left; k2.left =.right;.right = k2; return ; }

Rotação simples com filho direito /** * Rotate binary tree node with right child * For AVL trees, this is a single rotation * for case 4. */ static BinaryNode withrightchild( BinaryNod { BinaryNode k2 =.right;.right = k2.left; k2.left = ; return k2; }

Rotação simples no caso 2 k2 Caso 2 k2 R P P Q Q R Rotação simples não resolve o desequilíbrio! sub árvore Q está a 2 níveis de diferença de R sub árvore Q passa a estar a 2 níveis de diferença de P

Rotação dupla no caso 2 k3 k2 Caso 2 k3 k2 A B C D A B C D Uma das subárvores B ou C está 2 níveis abaixo de D (e só uma) k2, a chave intermédia, fica na raiz posições de, k3 e subárvores completamente determinadas pela ordenação

Rotação dupla 12 12 k3 8 16 k2 6 16 D 4 10 14 k3 4 8 14 A 2 k2 6 A 2 B 5 C 10 D B 5 C Rotação dupla pode ser vista como sequência de 2 rotações simples rotação entre o filho e o neto de X rotação entre X e o seu novo filho

Rotação dupla com filho esquerdo /** * Double rotate binary tree node: first lef * with its right child; then node k3 with n * left child. * For AVL trees, this is a double rotation * case 2. */ static BinaryNode doublewithleftchild( Binar { k3.left = withrightchild( k3.left ); return withleftchild( k3 ); }

Rotação dupla com filho direito } /** * Double rotate binary tree node: first rig * with its left child; then node with ne * right child. * For AVL trees, this is a double rotation * case 3. */ static BinaryNode doublewithrightchild(binar {.right = withleftchild(.right ); return withrightchild( ); }

Algoritmo recursivo Inserção em árvore AVL Inserir nó com chave X numa árvore A recursivamente, inserir na subárvore conveniente de A, SA se a altura de AS não se modifica: terminar se a altura de AS é modificada: se ocorre desequilíbrio em A, fazer as rotações necessárias para reequilibrar Comparação de alturas requer cálculo repetido de alturas das árvores: preferível manter o resultado da comparação como um factor de equilíbrio Algoritmo iterativo Especificar paragem logo que uma rotação é realizada