Árvores de pesquisa. Árvores de pesquisa equilibradas

Documentos relacionados
Árvores Equilibradas. Sumário

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

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

Algoritmos e Estruturas de Dados 2005/2006

Árvores Vermelho-Preto

ÁRVORE AVL. Problema do balanceamento

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

Árvores AVL IAED, 2014/2015

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Linguagem C: Árvores AVL

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

Árvores AVL e Árvores B. Jeane Melo

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

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

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

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

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

Árvores binárias de busca

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Aula 13 Árvores Rubro-Negras

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

DAINF - Departamento de Informática

Árvores balanceadas. Aleardo Manacero Jr.

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE

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

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

INF1010 Lista de Exercícios 2

Prof. Marco Antonio M. Carvalho

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Métodos de Ordenação Parte 3

Problemas com ABP Desbalanceamento progressivo

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Árvores Rubro-Negra IFRN

Árvores & Árvores Binárias

Algoritmos e Estruturas de Dados I

Árvores Binárias de Busca (ABB) 18/11

Árvores Binárias de Busca

PAA-DCC-UFAM. Árvores. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

BCC202 - Estrutura de Dados I

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

Árvore Binária de Busca. Prof. César Melo

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

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

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

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

PROGRAMAÇÃO III (LTSI)

Árvores binárias de busca

Exemplo Árvore Binária

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

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

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

Estruturas de Dados. Parte deste material consiste de: Adaptações dos slides gentilmente cedidos pela Profa. Maria Cristina F.

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

Aula 16 Árvores Patricia e Árvores B

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Árvores Binárias. 9/11 e 11/11 Conceitos Representação e Implementação

Algoritmos e Estruturas de Dados: Árvore Binária de Busca

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Árvores B. Prof. Flávio Humberto Cabral Nunes

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.

ÁRVORE BINÁRIA DE BUSCA

Árvore Binária de Busca

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 Balanceadas

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

O conjunto de registros pode ser: Um vetor de registros Uma lista encadeada Uma árvore Etc.

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Mo:vação. Árvore AVL. Caracterís:cas. Origem. Exemplo. Exercício 1 Qual é a altura dos nodos 50 e 44?

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

Algoritmos e estruturas espaciais

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

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

GGI026 - Árvore balanceada

Linguagem Haskell. Maria Adriana Vidigal de Lima

Universidade Federal de Mato Grosso

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

LEIC-FEUP 2001/2002 Algoritmos e Estruturas de Dados 1. Árvores-1

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

Métodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa

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

Recursividade. Objetivos do módulo. O que é recursividade

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras

Estruturas de Informação Árvores B ÁRVORES B

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Arquivos Seqüenciais: Intercalação

Algoritmos de Pesquisa

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução

Aula 07: Algoritmos de busca e Listas encadeadas

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

{ = == NULL) = == NULL)

Estruturas de Dados. Árvores AVL. Cesar Tadeu Pozzer. Curso de Ciência da Computação UFSM (12/12/2007)

Transcrição:

Árvores VL Árvores Splay Árvores Árvores de pesquisa Árvores Vermelho-Preto Árvores e Árvores Multidimensionais quaternárias k-d [Árvores para Pesquisa Lexicográfica tries multivia tries binárias PTRII] VL-1 Árvores de pesquisa equilibradas Árvore de pesquisa binária não garante acesso logarítmico Inserção e eliminação simples podem criar árvores desequilibradas Pior caso é linear: árvore degenera em lista ligada Pior caso ocorre tipicamente para inserções ordenadas Árvores equilibradas Evitam casos degenerados Garantem O(log N) para operações de inserção, remoção e pesquisa Requerem algoritmos mais elaborados para inserção e remoção ondição adicional na árvore condição de equilíbrio, garante que nenhum nó está demasiado profundo VL-2

delson-velskii e Landis, 1962 Árvores VL ondição de equilíbrio: na altura das sub-árvores de cada nó diferença de alturas não pode exceder 1 garante altura logarítmica para a árvore é simples de manter Definição Uma árvore VL é uma árvore de pesquisa binária que respeita a seguinte condição de equilíbrio: para qualquer nó da árvore, as alturas das sub-árvores esquerda e direita diferem no máximo de 1 unidade. ltura de uma árvore 1 + altura da sua sub-árvore mais alta 0 para árvore só com 1 nó -1 para árvore vazia VL-3 Número de nós na árvore VL Uma árvore VL de altura H tem pelo menos F H+3-1 nós, em que F i é o número de Fibonacci de ordem i S H : tamanho (nºde nós) da menor árvore VL de altura H (S 0 = 1, S 1 = 2) árvore mais pequena de altura H tem sub-árvores de alturas H-1 e H-2 ada sub-árvore terá, por sua vez, o número mínimo de nós para a sua altura Então será S H = S H-1 + S H-2 +1 S H = F H+3-1, por indução: S 0 =1, é F 3-1 S 1 =2, é F 4-1 Se S H-1 = F H+2-1 e S H-2 = F H+1-1, (lembrar que F 0 = 0, F 1 = 1, F i =F i-1 +F i-2 para i>1) então S H = S H-1 + S H -2 +1 = F H+2-1 + F H+1-1 +1= F H+2 + F H+1-1 = F H+3-1 (H>1) F i φ i / 5, com φ= (1+ 5)/2 1.618 (número de ouro) árvore de altura H tem no mínimo (aproximadamente) φ H+3 / 5 nós H < 1.44 log (N+2) -1.328 (não mais de arox. 44% acima da mínima, i.e., logn) VL-4

Árvores VL 8 add(5) 8 4 10 14 4 10 14 2 6 2 6 Inserção com violação da condição em 2 nós 5 Inserções e remoções podem destruir o equilíbrio de alguns dos nós da árvore Necessário verificar condição e reequilibrar se tiver sido destruída VL-5 Inserção em Árvores VL pós uma inserção, só os nós no caminho da raiz ao ponto de inserção podem ter a condição de equilíbrio alterada condição só depende das alturas das sub-árvores de um nó Para reequilibrar: subir no caminho até à raiz reequilibrar o nó mais profundo onde surge desequilíbrio toda a árvore resulta equilibrada X: nó a reequilibrar devido a inserção em 1- árvore esquerda do filho esquerdo de X 2- árvore direita do filho esquerdo de X 3- árvore esquerda do filho direito de X 4- árvore direita do filho direito de X asos 1 e 4 simétricos; casos 2 e 3 simétricos VL-6

Rotação simples aso 1 é nó mais profundo onde falha o equilíbrio sub-árvore esquerda está 2 níveis abaixo da direita não está no mesmo nível de, ou estaria desequilibrado antes da inserção não está no mesmo nível que, ou seria nó desequilibrado mais fundo VL-7 Rotação simples 8 4 10 14 2 6 4 2 8 14 1 6 10 1 Árvore resultante da rotação é VL e passam a ter sub-árvores da mesma altura nova altura da árvore resultante é igual á da árvore anterior à inserção problema fica resolvido com uma só operação VL-8

Rotação simples com filho esquerdo /** * Rotate binary tree node with left child. * For VL trees, this is a single rotation * for case 1. */ static inarynode withlefthild( inarynode ) { inarynode =.left;.left =.right;.right = ; return ; VL-9 Rotação simples com filho direito /** * Rotate binary tree node with right child. * For VL trees, this is a single rotation * for case 4. */ static inarynode withrighthild( inarynode ) { inarynode =.right;.right =.left;.left = ; return ; VL-10

Rotação simples no caso 2 aso 2 R P P Q Q R Rotação simples não resolve o desequilíbrio! sub-árvore Q está a 2 níveis de diferença de R sub-árvore Q passa a estar a 2 níveis de diferença de P VL-11 Rotação dupla no caso 2 k3 aso 2 k3 D D Uma das subárvores ou está 2 níveis abaixo de D (e só uma), a chave intermédia, fica na raiz posições de, k3 e subárvores completamente determinadas pela ordenação VL-

Rotação dupla k3 8 D 4 10 14 6 k3 4 8 14 2 6 2 5 10 D 5 Rotação dupla pode ser vista como sequência de 2 rotações simples rotação entre o filho (K1) e o neto (K2) de X (K3) rotação entre X (K3) e o seu novo filho (K2) VL-13 Rotação dupla com filho esquerdo /** * Double rotate binary tree node: first left child * with its right child; then node k3 with new * left child. * For VL trees, this is a double rotation for * case 2. */ static inarynode doublewithlefthild( inarynode k3) { k3.left = withrighthild( k3.left ); return withlefthild( k3 ); VL-14

Rotação dupla com filho direito /** * Double rotate binary tree node: first right child * with its left child; then node with new * right child. * For VL trees, this is a double rotation for * case 3. */ static inarynode doublewithrighthild(inarynode ) {.right = withlefthild(.right ); return withrighthild( ); VL-15 lgoritmo recursivo Inserção em árvore VL Inserir nó com chave X numa árvore recursivamente, inserir na subárvore conveniente de, S se a altura de S não se modifica: terminar se a altura de S é modificada: se ocorre desequilíbrio em, fazer as rotações necessárias para reequilibrar omparação de alturas para evitar o cálculo repetido de alturas de sub-árvores, pode-se manter em cada nó o resultado da comparação das alturas das sub-árvores(?) lgoritmo iterativo Especificar paragem logo que uma rotação é realizada Na prática, são usadas outras árvores binárias equilibradas (como as árvores vermelho-preto) em que a inserção ou remoção e a correspondente reposição do equilíbrio se podem fazer mais eficientemente numa única passagem VL-