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

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.

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Linguagem C: Árvores AVL

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

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

Introdução a árvores AVL. Prof. Ernesto Lindstaedt

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

ÁRVORE AVL. Problema do balanceamento

AED2 - Aulas 06 e 07 Árvores AVL e rubro-negras

Universidade Federal de Mato Grosso Estrutura de Dados II

Á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 de Pesquisa (Parte II)

Á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

Á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

Árvores de Pesquisa (Parte II)

ÁRVORES. Prof. Yan ndre Maldonado - 1. Prof. Yandre Maldonado e Gomes da Costa

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

Aula 16: Pesquisa em Memória Primária - Árvores AVL. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Árvores AVL IAED, 2014/2015

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

{ = == NULL) = == NULL)

Métodos de Pesquisa de Dados

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Á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

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

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

Árvores de Pesquisa (Parte II)

ÁRVORES. Árvores. Árvores. Prof. Yandre Maldonado e Gomes da Costa

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

Árvore binária - definição

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Á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

ÁRVORES BALANCEADAS (AVL)

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

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas

Algoritmo da raiz quadrada

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

Árvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO

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

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

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 }