Árvores AVL Balanceadas (Árvore Binária Balanceada)

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Marcio Gonçalves.
Advertisements

Conceitos e algoritmos
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 – Árvores AVL
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária – Árvores de Busca
SEMINÁRIO DE ALGORITMOS
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Árvores AVL.
Classificação e Pesquisa de Dados
Árvores Balanceadas (AVL)
Métodos de Pesquisa: Seqüencial e Binária
Árvores Binárias de Pesquisa (ABP)
Árvores e Árvores Binárias
Métodos de Classificação por Seleção: HeapSort
CAP-223 Árvore através de uma Árvore Binária A BCDE FGHIJK A BC D E FGHIJK.
Árvore Binária & AVL Equipe: Felipe Pontes Gustavo Márcio
Robson Godoi / Sandra Siebra
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Marco Antonio Montebello Júnior
Árvore Binária de Busca
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
Á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
Algoritmos e Estruturas de Dados Apresentação do Curso Setembro/2005.
Á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.
TRANSFORMAÇÕES GEOMÉTRICAS
Á R V O R E S.
Árvores Splay Estruturas de Dados
© 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 B Obs: Uma árvore 2-3 é uma árvore B de ordem 1.
SISTEMAS DE INFORMAÇÃO

Estruturas de Dados Aula 15: Árvores
– Aula 20 Adaptado por Reinaldo Fortes para o curso de
Á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.
© 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

Á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.
Árvores AVL Algoritmos e Estruturas de Dados - IF672
Estruturas Avançadas de Dados UNISINOS
AULA 21 Profa. Sandra de Amo BCC - UFU
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.
1 de outubro de Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães.
Métodos de Pesquisa: Seqüencial e Binária
Árvores Balanceadas (AVL)
Árvores e Árvores Binárias
Árvores Binárias e Árvores AVL Katia Guimarães. Árvores Binárias e Árvores AVL Katia S. Guimarães
BANCO DE DADOS II Árvore de Dados. FATEC - GUARATINGUETÁ Professor: Eduardo Barbosa Adiel Lemos Ana Renata Bruno Michael Jéssica Fernanda Layla Monique.
INE5408 Estruturas de Dados Árvores B - Estrutura e peculiaridades -Algoritmos de inserção, pesquisa e deleção.
Árvores Balanceadas (AVL)
Transcrição da apresentação:

Árvores AVL Balanceadas (Árvore Binária Balanceada) José Antonio de Oliveira Neto mano_oliveira@terra.com.br

SUMÁRIO O que são árvores? Árvores Balanceadas Balanceamento estático e dinâmico! Árvores AVL Fator de Balanceamento (Fatbal) Rotação Simples(Esquerda e direita) Rotação Dupla (Esquerda e Direita) Exemplos Referências.

O que são Árvores? São estruturas de dados não lineares que caracterizam uma relação entre dados; A relação existente entre os dados é uma relação de hierarquia onde um conjunto de nodos é hierarquicamente subordinado a outro.

Árvore Binária Balanceada Árvore Binária Degenerada Árvores Balanceadas Uma arvore é considerada balanceada quando suas sub-arvores à esquerda e à direita possuem a mesma altura. A árvore não balanceada é definida como degenerada Árvore Binária Balanceada Árvore Binária Degenerada

Árvores Balanceadas Balanceamento Estático: - Este balanceamento consiste em, depois de um certo tempo de uso da árvore, destruir sua estrutura, guardando suas informações em uma lista ordenada e reconstruí-la de forma balanceada. Balanceamento Dinâmico: - Tem por objetivo reajustar os nós de uma árvore sempre que uma inserção ou remoção provocar desbalanceamento. - Um exemplo de Balanceamento dinâmico são as árvores AVL.

Árvores AVL O termo AVL vem de seus fundadores Adel´son, Vel´skii e Landis (1962). Foi a primeira estrutura de dados a oferecer operações de inserção, remoção e busca em tempo logaritmo ou seja é um algoritmo muito rápido. - Em uma árvore degenerada de 10.000 nós, são necessárias 5.000 comparações para efetuar uma busca, já numa árvore AVL, com o mesmo número de nós, essa média baixa para 14 comparações. – A árvore AVL é uma árvore binária de busca e sua estrutura foi construída de forma que a altura da sub-árvore direita é diferente da altura da sub-árvore esquerda de no máximo 1.

Árvores AVL Fator de Balanceamento Sendo assim, para cada nó define-se um fator de balanceamento(fatbal), que deve ser -1,0 ou 1. Fatbal = altura (sub-arvore direita) – altura (sub-árvore esquerda) -> Fatbal = -1, quando a sub-árvore da esquerda é um nível mais alto que a direita. -> Fatbal = 0, quando as duas sub-árvores tem a mesma altura. -> Fatbal = 1, quando a sub-árvore da direita é um nível mais alto que a esquerda.

Balanceamento em AVL Inserimos um novo nodo na árvore. Esta inserção pode ou não alterar as propriedades de balanceamento. Caso a inserção desse novo nodo não viole alguma propriedade de balanceamento, podemos continuar inserindo novos nodos. Se a inserção afetar as propriedades de balanceamento devemos restaurar o balanço da árvore. Esta restauração é efetuada através de ROTAÇÕES na árvore.

Rotação: I) Rotação simples à esquerda

Rotação: II) Rotação simples à direita

Rotação: III) Rotação dupla à esquerda (rotação simples à direita + rotação simples à esquerda) (rotação simples à direita + rotação simples à esquerda)

Rotação: IV) Rotação dupla à direita (rotação simples à esquerda + rotação simples à direita)

Rotação: Dicas: a) Para identificar quando uma rotação é simples ou dupla deve-se observar os sinais do Fb: • Sinal for igual, a rotação é simples • Sinal for diferente a rotação é dupla b) Se Fb for positivo (+) a rotação para à esquerda c) Se Fb for negativa (-) a rotação para à direita

Caso I: Rotação Simples Suponha que inserimos os números 50, 40 e 30 em uma árvore. Obteremos então: A inserção novamente produziu um desbalanceamento. • Neste caso, como os sinais dos FB são os mesmos, significa que precisamos fazer apenas uma ROTAÇÃO SIMPLES à direita no nodo com FB -2. • No caso simétrico (nodo com FB 2) faríamos uma rotação simples à esquerda.

Caso I: Rotação Simples Após a rotação simples teremos: A árvore está balanceada dentro das propriedades de AVL.

Exemplo: Considerando a árvore abaixo: A árvore está balanceada, como podemos observar pelos Fb de cada nodo. São dois os possíveis casos de desbalancemento

Caso II: Rotação Dupla Ao inserir o número 5 na árvore teremos a seguinte árvore: O nodo 8 fica com o FB -2 e tem um filho com FB +1. Neste caso para manter o balanceamento devemos aplicar duas rotações, também denominada ROTAÇÃO DUPLA. Primeiro rotaciona-se o nodo com FB 1 para a esquerda.

Caso II: Rotação Dupla Logo rotaciona-se o nodo que possuía FB -2 na direção oposta, nesse caso a direita.

Caso II: Rotação Dupla • Os FB dos nodos voltaram a ficar dentro do esperado das árvores AVL. • O caso simétrico ao explicado acima acontece com os sinais de FB trocados, ou seja, um nodo com FB +2 com um filho com FB -1. Também utilizariamos uma rotação dupla, mas nos sentidos contrários, ou seja, o nodo com FB -1 seria rotacionado para a direita e o nodo com FB +2 seria rotacionado para a esquerda.

A descrição do algoritmo em pseudo-código para a construção de uma árvore AVL seria: Inserir o novo nodo normalmente Iniciando com o nodo pai do nodo recém-inserido, testar se a propriedade AVL é violada no novo nodo. Temos aqui 2 possibilidades: A condição AVL foi violada Execute as operações de rotação conforme for o caso (Caso I ou Caso II). Volte ao passo de Inserção. A condição AVL não foi violada. Se o nodo recém-testado não tem pai, ou seja, é o nodo raiz da árvore, volte para inserir novo nodo.

Referências: Luzzardi, Paulo Roberto Gomes -Estrutura da Dados. UCPel Sites: * http://www.ucb.br/prg/professores/giovanni/disciplinas/2005- 1/eda/material/avl.html * http://www.ufgd.edu.br/~wlsantos/Algo/Arvores_Topicos.pdf * http://www.ufgd.edu.br/~wlsantos/Algo/Arvores.pdf *http://virtual.lncc.br/~rodrigo/cursos/unused/EDII/01_Apostilas/outros/AVL_IME.pdf Simulação: * http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html