GGI026 - Árvore balanceada



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

INF 1010 Estruturas de Dados Avançadas

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

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

Árvores binárias de busca

Árvores Binárias de Busca

GGI026 - Árvore rubro-negra - Remoção

Árvores binárias de busca

INE5408 Estruturas de Dados

Árvores AVL e Árvores B. Jeane Melo

Árvores Binárias de Busca

Árvores Splay. Mestrado em Ciência da Computaçã. ção Estruturas de Dados Prof. Dr. Paulo Roberto Gomes Luzzardi Aluna: Nelsi Warken

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

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

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

Algoritmos e Estrutura de Dados II 2012/1 Lista III-B (0.5 pontos) Nome: Assinatura: Questão 1. Considere as seguintes estruturas de dados.

Linguagem C: Árvores AVL

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

Á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.

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

Árvores AVL. Prof. Robinson Alves

ÁRVORE AVL. Problema do balanceamento

Á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

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

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

Árvores Vermelho-Preto

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

Matemática Discreta. Leandro Colombi Resendo. Matemática Discreta Bacharel em Sistemas de Informações

INF 1010 Estruturas de Dados Avançadas. Indexação em Espaços Multidimensionais DI, PUC-Rio Estruturas de Dados Avançadas 2012.

Árvores Binárias Balanceadas Estrutura de Dados I

Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela

Módulo 9. Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

Árvores de Decisão Matemática Discreta

Teoria dos Grafos Aula 9

ÁRVORES AVL. Factor de Equilíbrio(P)= altura(filho_ direito(p))-altura(filho_esquerdo(p))

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

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

BCC202 - Estrutura de Dados I

Dicionários. TAD Orientado a conteúdo

Estruturas de Dados. Árvores AVL: Partes I e II. Desempenho de ABBs (Revisão)

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

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas

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

Aula 19 Árvores Rubro-Negras

UNILASALLE Curso de Bacharelado em Ciência da Computação. Estrutura de Dados II Prof. Magalí T. Longhi. Árvores AVL*

Árvores Equilibradas. Sumário

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Aula 13 Árvores Rubro-Negras

Árvores AVL (Adelson-Velskii and Landis)

DAINF - Departamento de Informática

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

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

Algoritmos Paralelos - ordenação

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

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

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

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

Árvores de pesquisa. Árvores de pesquisa equilibradas

INF1010 Lista de Exercícios 2

Estruturas de Dados. Módulo 13 - Árvores. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:

Árvores Binárias. Algoritmos e Estruturas de Dados Flavio Figueiredo (

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

Teoria de Jogos. Algoritmo Minimax e Alfa-Beta AED

Algoritmo da raiz quadrada

Programação Dinâmica. Aplicação directa - Fibonacci

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

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Árvores Binárias de Busca

Árvores Binárias de Busca

Problemas com ABP Desbalanceamento progressivo

Isomorfismos de Grafos, Grafos Planares e Árvores

Transcrição:

GGI06 - Árvore balanceada Marcelo K. Albertini 11 de Setembro de 013

/1 Trabalho 1 implementar programa para resolver o problema entregue programa deve funcionar conforme pedido na descrição 3 fazer apresentação do problema 4 apresentar no dia 11/09/013 5 calcular a complexidade da solução desenvolvida 6 escrever relatório explicando algoritmo, código da implementação do programa, testes realizados e complexidade 7 opcional submeter solução funcional que não exceda tempo limite máximo em br.spoj.com (10 pontos extras)

3/1 Aula de hoje Nesta aula veremos Balanceamento de árvores

4/1 Motivação - balanceamento Balanceamento Garantir que a árvore esteja o mais próxima da completa possível, para ter uma altura média de nós baixa. Porquê balancear árvores? Complexidade das operações de inserção e remoção dependem da altura da árvore. Em uma árvore balanceada, O(log n). Em uma árvore desbalanceada, O(n).

5/1 Exemplo de árvore binária desbalanceada 1 3 4 5

6/1 Exemplo de árvore binária balanceada 1 4 3 5 árvore é balanceada se o máximo de diferença de altura entre nós-folhas é limitado esse limite é tipicamente 1 a altura da árvore balanceada com n nós tem altura igual à parte inteira de log (n) existem algoritmos de construção de árvores balanceadas: AVL e Rubro-Negra

7/1 Estrutura de dados e operações de uma ABB criação de uma árvore inserção de um novo nó exclusão de nó busca por nó caminhos em árvores determinar altura da árvore 1 class Tree { Node raiz ; 3 4 public Tree() {... } // criacao 5 public void insercao (Node n) {... } 6 public boolean exclusao ( int id ) {... } 7 public Node busca( int id ) {... } 8 public int altura () {... } 9... 10 }

8/1 Árvores AVL Árvores de Adelson-Velskii e Landis (196) Para garantir balanceamento, sempre inserimos e removemos nós de maneira balanceada. Altura das subárvores à direita e à diferem no máximo em 1. Queremos inserir o 5 de forma balanceada. Queremos remover o 1 de forma balanceada. 1 3 4

9/1 Balanceamento Método de balanceamento: rotações em árvores rotações podem ser à direita ou à esquerda. Rotação à direita 1 A 1 B C Rotação à esquerda A B C

10/1 Balanceamento Cada nó da AVL tem um fator de balanceamento -1 se subárvore à esquerda é mais alta 0 se subárvore à esquerda tem altura igual à direita 1 se subárvore à direita é mais alta

11/1 Fator de balanceamento 3 5 4 6 1 3 0 5 6 7

1/1 Fator de balanceamento +1 3-1 5 4 0 6 0 0 0 0 1 +1 3 0 0 + 5 6-1 7

13/1 Inserção Após inserção de nó verificar pais do nó continuam balanceados se não continuar balanceado, realizar rotações rotação simples: à direita ou esquerda rotação dupla: à direita-e-esquerda ou esquerda-e-direita

14/1 Inserção Seja árvore, com altura à direita hd e altura à esquerda he, então se um novo nó é inserido à esquerda teremos: Se hd = he, alturas ficarão diferentes Se he < hd, alturas ficarão iguais Se he > hd, altura da esquerda ficará com fator, exigindo balanceamento

15/1 Tipos de desbalanceamento Tipo esquerda-esquerda Tipo esquerda-direita 1 h 1 h h+ h+1 h+1 h+

16/1 Debalanceamento Esquerdo-Esquerdo Tipo esquerda-esquerda 1 C A B Seja q o nó que foi inserido na sub-árvore esquerda de 1 B e C têm a mesma altura A é um nível mais alta Então, fazer rotação à direita: 1 a nova raiz sua sub-árvore da direita B e C sub-árvores de

17/1 Debalanceamento Esquerdo-Esquerdo: resultado Tipo esquerda-esquerda A 1 B C O caso de desbalanceamento direita-direita é simétrico e resolvido com rotação à esquerda. Seja q o nó que foi inserido na sub-árvore esquerda de 1 B e C têm a mesma altura A é um nível mais alta Então, fazer rotação à direita: 1 a nova raiz sua sub-árvore da direita B e C sub-árvores de Resultado: árvore rebalanceada

18/1 Desbalanceamento esquerda-direita Fazer rotação dupla: 3 1 C 1 3 A A B1 C B1 B B Começar com uma rotação à esquerda Terminar com uma rotação à direita

19/1 Inserção: passos inserção igual à árvore-binária após inserção, no máximo um dos casos de desbalaceamento deverá ser tratado : esquerda-esquerda: simples direita-direita: simples esquerda-direita: duplo direita-esquerda: duplo usar altura das subárvores esquerda e direita para calcular fator de desbalanceamento fator = altura(subárvore esquerda) - altura(subárvore direita)

0/1 Algoritmo de balanceamento em um nó qualquer P fator = altura(subárvore esquerda) - altura(subárvore direita) 1 balancear (Node P) { 3 if ( fator (P) < 1) { 4 if ( fator (P. esq) < 0) { 5 // caso esquerda direita 6 rotacao esquerda (P. esq) ; 7 } 8 rotacao direita (P) ; 9 10 else if ( fator (P) > 1) { 11 // simetricamente análogo 1 } 13 }