Árvores AVL Algoritmos e Estruturas de Dados - IF672

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Árvores Binárias
Advertisements

Estruturas de Dados Arvores
Pesquisas de Dados (Parte 2)
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Organização e Recuperação da Informação
MC 202 – Estruturas de dados
Árvore Binária - altura máxima A: Inserção de 1, 2, 3, 4, 5, 6 e 7 Pior caso: O(n)
Árvores.

Pesquisa em Memória Primária
Pesquisa em Memória Primária – Árvores AVL
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Árvores AVL.
Árvores Balanceadas (AVL)
Árvores Binárias de Pesquisa (ABP)
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Algoritmo e Estrutura de Dados II
Robson Godoi / Sandra Siebra
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Fundamentos sobre Árvores
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
Estruturas de Dados com Jogos
Árvores Binárias de Pesquisa
Algorítmos e estrutura de dados III
Algorítmos e estrutura de dados III
Algoritmos e Estrutura de Dados III
Árvores Balanceadas Liliane Rose Benning Salgado.
Rotação Simples e Dupla Katia Guimarães
Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.
Orientação a Objetos e Java Graduação em Ciência da Computação
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Árvore Binária de Busca
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
– Aula 20 Adaptado por Reinaldo Fortes para o curso de
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Revisão IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Allan Jefferson.
Árvores Vermelho-Preto
Definição: Uma árvore binária vazia é sempre balanceada por altura. Se T não é vazia e TL e TR são suas sub-árvores da esquerda e direita, então T é balanceada.
Árvores AVL Balanceadas (Árvore Binária Balanceada)
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Prof. Hilton Cardoso Marins Junior
Conjuntos Algoritmos e Estruturas de Dados - IF672
Árvores Rubro-Negras São árvores balanceadas segundo um critério ligeiramente diferente do usado em árvores AVL A todos os nós é associada uma cor que.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório.
Estruturas Avançadas de Dados UNISINOS
AVL Árvores Equilibradas Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias.
Introdução a Árvores e Árvores Binárias
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Estruturas de Dados Dinâmicas IF672 - Algoritmos e Estruturas de Dados.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
IF672 cc Algoritmos e Estruturas de Dados
1 de outubro de Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães.
Programação Dinâmica IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto Gomes.
Árvores Balanceadas (AVL)
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE ©
Árvores Binárias e Árvores AVL Katia Guimarães. Árvores Binárias e Árvores AVL Katia S. Guimarães
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Ponteiros IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Murilo Raphael.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
BANCO DE DADOS II Árvore de Dados. FATEC - GUARATINGUETÁ Professor: Eduardo Barbosa Adiel Lemos Ana Renata Bruno Michael Jéssica Fernanda Layla Monique.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Entrada e Saída de Dados com Arquivos – Java
Estruturas de Dados Dinâmicas
Transcrição da apresentação:

Árvores AVL Algoritmos e Estruturas de Dados - IF672 Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo Arrais de Souza Murilo Raphael de Souza Lira Rafael Alberto Gomes Pereira Lima Rafael Brandão Lobo Rafael Loureiro de Carvalho Tiago Carneiro Pessoa Canto Vinicius Miranda Cesar if672.ufpe@gmail.com

balance(nó) = | altura(dir) - altura(esq) | ≤ 1 Árvore AVL Em 1962, os matemáticos Russos G.M. Adelson-Velskki e E. M. Landis descreveram procedimentos para inserção e eliminação de nós em árvores: os algoritmos de balanceamento são chamados algoritmos AVL e as árvores são chamadas árvores AVL. Uma árvore AVL é uma árvore binária de busca (ABB), auto-balenceada, construída de tal modo que a altura de sua subárvore direita difere da altura da subárvore esquerda de no máximo 1. balance(nó) = | altura(dir) - altura(esq) | ≤ 1

Representação do nó public class No<E> { No<E> filhoDireita; No<E> filhoEsquerda; E chave; int balance; No(E chave){ this.chave = chave; this.filhoDireita = null; this.filhoEsquerda = null; this.balance = 0; } Exemplos: No<String> no = new No<String>("Casa"); No<Integer> no = new No<Integer>(10);

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 rebalanceamento através de rotação simples ou rotação dupla. O rebalanceamento pode ser requerido para as operações de inserção e remoção de elementos.

Inserção Em Árvores AVL uma inserção sempre cria uma nova folha, tal fato pode alterar a altura da árvore e por conseqüência desbalancear a mesma, exigindo um rebalanceamento para restauração da propriedade AVL. Qualquer que seja a inserção em uma Árvore AVL, será necessário no máximo uma rotação para restauração do equilíbrio.

Rotações Há diversos casos de inserção que não requerem rotação. Caso seja necessário fazer alguma rotação, há quatro situações diferentes a considerar. Supondo que A é o nó crítico, B é o seu filho à esquerda e C seu filho à direita, temos: Balance de A Lado da inserção Sub-árvore do filho Tipo de rotação -1  esquerda de A  esquerda de B SIMPLES  +1  direita de A  direita de C direita de B DUPLA  esquerda de C A C B

Rotação simples para direita Inserção dos elementos 50, 30 e 20: -2 -1 50 -1 30 20 30 20

Rotação simples para esquerda Inserção dos elementos 50, 60 e 70: 2 1 50 1 60 70 60 70

Rotação dupla para direita (Rotação simples para esquerda + Rotação simples para direita) Inserção dos elementos 40, 20 e 30: -1 -2 40 -1 1 30 20 20 30

Rotação dupla para esquerda (Rotação simples para direita + Rotação simples para esquerda) Inserção dos elementos 50, 70 e 60: 2 1 50 -1 1 70 70 60 60

Rotação simples – de novo -2 X -1 h+2 h Y c h+1 h a a b

Rotação simples – de novo X c h Y h+1 a h+1 b h

Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 -1/0/1 h h+1 Z a b c

Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 -1 h h+1 Z a h h-1 b c

Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 1 h h+1 Z a h-1 h b c

Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 h h+1 Z a h h b c

Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 -1/0/1 h h+1 Z a b c

Rotação dupla – de novo X d h Max( h(b) , h(c) ) = h 0/-1 0/1 Y h a X d h Max( h(b) , h(c) ) = h 0/-1 0/1 Y h a h(b) h(c) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 h+1 h+1 Z h / h-1 h / h-1 b c

Remoção Em Árvores AVL a retirada de um nó é uma operação mais complexa que a inserção e pode resultar no desbalanceamento da árvore. Em situações específicas durante uma remoção podem ser necessárias log(n) rotações para restauração da propriedade AVL(uma para cada nível da árvore).

O que acontece se removermos o nó 39 ??? +1 50 +1 70 38 -2 -1 -1 -1 60 -1 30 40 80 42 +1 +2 -1 45 +1 20 -1 35 40 39 75 45 -1 55 +1 65 -1 90 -1 +1 54 56 64 -1 74 77 +1 +1 42 88 99 +1 25 32 15 +1 57 76 78 89 73 17 Outras rotações são necessárias até a árvore recuperar a propriedade AVL 79 Considere a Árvore AVL acima. Ela está balanceada??? O que acontece se removermos o nó 39 ??? Nó 40 fica desbalanceado (rde) Outras rotações são necessárias até a árvore recuperar a propriedade AVL Nó 38 fica desbalanceado (rse)