Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Arvores
Advertisements


André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores AVL.
Árvores Balanceadas (AVL)
Prof. Ernesto Lindstaedt
Árvores Binárias de Pesquisa
Algoritmos e Estrutura de Dados III
Árvore Binária de Busca
© 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
Introdução a Árvores e Árvores Binárias
Árvores Balanceadas (AVL)
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
1 Heap Sort Algoritmos e Estuturas de Dados Cátia Vaz.
INE5408 Estruturas de Dados Árvores Binárias de Busca - Características - Algoritmos - Inserção, deleção e pesquisa.
Métodos de Pesquisa e Ordenação Estruturas de Dados Melissa Marchiani Palone Zanatta.
POLINÔMIOS. Polinômio ou função polinomial na variável complexa x é toda função P: ℂ → ℂ definida por P(x) = a n x n + a n–1 x n–1 + a n–2 x n–2 +...
Listas de Prioridades Cinéticas Tese de Mestrado de: Guilherme Dias da Fonseca (bolsista CAPES) Orientadora: Celina M. H. de Figueiredo 03/2003.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Árvores Binárias Estruturas de Dados Melissa Marchiani Palone Zanatta.
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I
Árvores Binárias de Pesquisa (ABP)
INE5408 Estruturas de Dados
Márcio Soussa Estrutura de Dados Márcio Soussa
Programação em C Aula 8.
Tópicos Preliminares (Tipos, Constante e Variável)
Estruturas de Repetição
Árvores Balanceadas (AVL)
Métodos de Pesquisa: Seqüencial e Binária
Algoritmos e Estruturas de Dados I
Módulo I Capítulo 3: Fluxo de Código e Operador Condicional
Capítulo VIII – Técnicas de Ordenação
Prof. Wellington Franco Manipulação de Arquivos em C
Árvores.
Administração de Sistemas Livres
LIMITE DE UMA FUNÇÃO Aula 01 – Matemática I – Engenharia de Aquicultura Prof. Danilene Donin Berticelli.
FUNDAMENTO DE PROGRAMAÇÃO
IP – Repetições Prof. Eduardo Falcão.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Profª Juliana Schivani
Algoritmos e Programação MC102
Aula 02 – Produtos Notáveis
Organização básica de arquivos
O que você deve saber sobre
Múltiplos e Divisores.
Complexidade de Algoritmos
Vetores: Exercícios Resolvidos
2.4 Configurações eletrónicas dos átomos
Grafos Árvores (introdução) Anjolina Grisi de Oliveira
Prof. Rafael Mesquita Pilha Prof. Rafael Mesquita
Filas Prof. Kariston Pereira
Estruturas de Dados em C
Algoritmos de ordenação
Profª Juliana Schivani docente.ifrn.edu.br/julianaschivani
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Python: Comandos Básicos
Ementário Noções de hardware e software. Conceitos Fundamentais.
Limite no ponto e limites laterais
INE5408 Estruturas de Dados
INE5408 Estruturas de Dados
INE5408 Estruturas de Dados
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
Sistemas de Informação
MATEMÁTICA.
Transcrição da apresentação:

Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)

UDESC – Prof. Kariston Pereira Tópicos Abordados Árvores Binárias de Pesquisa (ABP) Balanceamento usando árvores AVL UDESC – Prof. Kariston Pereira

Árvores Binárias de Pesquisa Definição: árvore binária de pesquisa (ABP) é uma árvore binária na qual para cada nó n: A sua subárvore à esquerda contém somente nós com valores menores que o valor em n. A sua subárvore à direita contém somente nós com valores maiores que o valor em n. Ambas as subárvores também sejam ABP. Os nós de uma ABP contêm valores distintos. UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira ABP: exemplo 4 3 6 1 5 7 2 UDESC – Prof. Kariston Pereira

Árvores Binárias de Pesquisa ABPs são comumente utilizadas para: Busca; Implementação de estruturas mais abstratas, tais como conjuntos. Operações típicas em um ABP: Busca Inserção Exclusão UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Busca numa ABP Em média, tem desempenho na ordem de O(log n). node* busca(node *n, char chave) { if (n == null) return null; if (chave < n->info) return busca(n->left, chave); if (chave > n->info) return busca(n->right, chave); return n; } UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Inserção numa ABP Deve obedecer as condições de uma ABP. Percorre a árvore até encontrar o nó no qual o novo nó deve ser inserido como filho. Exemplo: inserção do valor 2. 4 4 3 6 3 6 1 5 7 1 5 7 2 UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Exclusão numa ABP Deve obedecer as condições de uma ABP. Três casos de exclusão: Nó folha Nó tem um filho Nó tem dois filhos Por cópia Por fusão UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Exclusão de um nó folha Exclue-se o nó e seu pai aponta para nulo. Exemplo: exclusão do nó 2. 4 4 3 6 3 6 1 5 7 1 5 7 2 UDESC – Prof. Kariston Pereira

Exclusão de um nó com um filho Exclue-se o nó e seu pai aponta para o nó filho. Exemplo: exclusão do nó 1. 4 4 3 6 3 6 1 5 7 2 5 7 2 UDESC – Prof. Kariston Pereira

Exclusão de um nó com dois filhos... Por Fusão Extrai-se uma subárvore das duas subárvores do nó e a anexa ao ascendente do nó. Deve-se encontrar na subárvore esquerda, o nó com maior valor e torná-lo um ascendente da subárvore direita. Tornar o maior nó na subárvore esquerda a raiz da subárvore direita. Excluir o nó e seu pai deve apontar para a raiz da subárvore esquerda. Exemplo 1: exclusão do nó 6. 4 4 3 5 3 6 1 7 1 5 7 2 UDESC – Prof. Kariston Pereira 2

Exclusão de um nó com dois filhos... Por Fusão... Exemplo 2 Tornar o maior nó na subárvore esquerda a raiz da subárvore direita. Excluir o nó e seu pai deve apontar para a raiz da subárvore esquerda. Exemplo: exclusão do nó 15 ... 10 15 11 5 10 30 12 5 11 20 40 30 12 40 20 UDESC – Prof. Kariston Pereira

Exclusão de um nó com dois filhos... Por Fusão... Exemplo 3 Tornar o maior nó na subárvore esquerda a raiz da subárvore direita. Excluir o nó e seu pai deve apontar para a raiz da subárvore esquerda. Exemplo: exclusão do nó 15 ... 15 10 10 30 5 30 5 20 40 4 7 20 40 4 7 UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Tópicos Abordados Árvores Binárias de Pesquisa (ABP) Balanceamento usando árvores AVL UDESC – Prof. Kariston Pereira

Balanceamento de Árvores Binárias Numa ABP, as inserções e exclusões influenciam a estrutura da árvore Tende a ficar desbalanceada. Reduz o desempenho da busca. Exemplo: inserção dos valores: 1, 2, 3, 4, 5. 1 2 É preciso balancear a árvore! 3 4 5 UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Lembrando que... Árvore Balanceada: para todo nó, a diferença de altura de suas subárvores deve ser de, no máximo, um. UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Inserção numa ABP Exemplo: inserção do valor 2 torna a árvore desbalanceada. 4 3 6 1 5 7 2 UDESC – Prof. Kariston Pereira

Abordagens para Balanceamento Árvores Auto-balanceáveis: Árvores AVL; Árvores bicolores (Red & Black Trees) Balanceamento a posteriori Algoritmo DSW (Day/Stout/Warren, 1986) UDESC – Prof. Kariston Pereira

Árvore AVL Tem o nome de seus inventores: Adel’son-Vel’skii e Landis (1962). Definição: uma AVL é uma ABP construída de tal modo que o Fator de Balanceamento de seus nós é -1, 0 ou +1. Fator de Balanceamento (FB) de um nó é definido como: FB = altura(sub_arv_esquerda) - altura(sub_arv_direita) UDESC – Prof. Kariston Pereira

Condição de balanceamento: Exemplos +1 -1 5 4 -1 -2 -1 2 6 2 5 +1 +1 1 4 7 1 3 7 3 6 Condição de balanceamento: É uma árvore AVL Não é uma árvore AVL!! UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Rotações Para manter a condição de árvore AVL durante inserções ou exclusões, utiliza-se uma operação chamada rotação. Uma rotação: Reorganiza um ou mais nós desbalanceados; Preserva a ordem das chaves (ABP); UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Rotações: casos de uso Rotações Simples À esquerda; À direita. Rotações Duplas UDESC – Prof. Kariston Pereira

Rotação Simples à Direita Condição: Sempre que um nó tem fator positivo (+2) e seu filho à esquerda também tem fator positivo (+1). Execução: Filho à esquerda (P) assume a posiçao do nó desbalanceado (Q). Filho à direita de P passa a ser o filho à esquerda de Q . Q torna-se o filho à direita de P. +2 Q Rotação à direita P +1 +1 P D B Q +1 B C A C D UDESC – Prof. Kariston Pereira A

Rotação à Direita: exemplo 1) Árvore está balanceada. 4 +1 3 6 2 5 7 UDESC – Prof. Kariston Pereira

Rotação à Direita: exemplo 2) Ao se adicionar o valor 1, o nó 3 torna-se desbalanceado. +1 4 +2 3 6 +1 2 5 7 1 UDESC – Prof. Kariston Pereira

Rotação à Direita: exemplo 3) É preciso fazer uma rotação à direita no nó 3. +1 4 4 +2 Rotação à direita 3 6 2 6 +1 2 5 7 1 3 5 7 1 UDESC – Prof. Kariston Pereira

Rotação Simples à Esquerda Condição: Sempre que um nó tem fator negativo (-2) e seu filho à direita também tem fator negativo (-1). Execução: Filho à direita (P) assume a posiçao do nó desbalanceado (Q). Filho à esquerda de P passa a ser o filho à direita de Q. Q torna-se o filho à esquerda de P. -2 Q P Rotação à esquerda -1 -1 A P Q C -1 B C A B D D UDESC – Prof. Kariston Pereira

Rotação à Esquerda: exemplo 1) Árvore está balanceada. 4 +1 -1 3 6 2 7 UDESC – Prof. Kariston Pereira

Rotação à Esquerda: exemplo 2) Ao se adicionar o valor 9, o nó 6 torna-se desbalanceado. -1 4 +1 -2 3 6 -1 2 7 9 UDESC – Prof. Kariston Pereira

Rotação à Esquerda: exemplo 3) É preciso fazer uma rotação à esquerda no nó 6. -1 4 4 +1 Rotação à esquerda -2 +1 3 6 3 7 -1 2 7 2 6 9 9 UDESC – Prof. Kariston Pereira

Rotação Dupla: condições À direita: Condição:sempre que um nó tem fator positivo e seu filho à esquerda tem fator negativo. Execução: rotação à esquerda no nó filho da esquerda e rotação à direita no próprio nó. À esquerda: Condição: sempre que um nó tem fator negativo e seu filho à direita tem fator positivo. Execução: rotação à direita no nó filho da direita e rotação à esquerda no próprio nó. UDESC – Prof. Kariston Pereira

Rotação Dupla à Direita: exemplo 4 +1 3 6 1 5 7 Árvore balanceada. UDESC – Prof. Kariston Pereira

Rotação Dupla à Direita: exemplo +1 4 +2 3 6 -1 1 5 7 2 Ao se adicionar o valor 2, o nó 3 torna-se desbalanceado. É preciso fazer uma rotação dupla à direita. UDESC – Prof. Kariston Pereira

Rotação Dupla à Direita: exemplo +1 +1 4 4 +2 Rotação à esquerda +2 3 6 3 6 -1 +1 1 5 7 2 5 7 2 1 UDESC – Prof. Kariston Pereira

Rotação Dupla à Direita: exemplo +1 +1 4 4 +2 Rotação à esquerda +2 3 6 3 6 -1 +1 1 5 7 2 5 7 2 1 4 Rotação à direita 2 6 1 3 5 7 UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Considerações Para a operação de inserção, basta incluir o novo nó, avaliar o tipo de rotação, e executar a rotação. Se mais de um nó tiver FB = -2, basta balancear o nó de maior nível. No entanto, a operação de exclusão é mais complexa: Exclue-se o nó, em seguida realiza-se recursivamente n rotações a partir do nó desbalanceado até a raiz (caso necessário). UDESC – Prof. Kariston Pereira

UDESC – Prof. Kariston Pereira Exercício: Remova o nó 8 (será preciso balancear mais de uma vez). 32 16 48 8 24 40 56 28 36 44 52 60 58 62 UDESC – Prof. Kariston Pereira