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

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

Árvores Equilibradas. Árvores espalhadas (Splay)

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

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

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

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

Árvores Equilibradas. Sumário

Árvores AVL e Árvores B. Jeane Melo

Algoritmos e Estruturas de Dados 2007/2008. Ajusta a estrutura da árvore à frequência de acesso aos dados

Árvores Vermelho-Preto

Árvores Vermelho-Preto

Árvores balanceadas. Aleardo Manacero Jr.

Linguagem C: Árvores AVL

Árvores de pesquisa. Árvores de pesquisa equilibradas

EAD Árvore - representação usando listas ligadas

Árvores Rubro-Negra IFRN

Árvores binárias de busca

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

Dicionários. TAD Orientado a conteúdo

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

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

INF1010 Lista de Exercícios 2

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

INE5408 Estruturas de Dados

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

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

Aula 10 Árvores Adelson-Velskii e Landis

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

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

Árvores binárias de busca

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

Árvores AVL. Prof. Robinson Alves

Métodos de Pesquisa de Dados

Algoritmos e Estruturas de Dados I. Aula 11 Árvores AVL. Prof. Jesús P. Mena-Chalco.

PROGRAMAÇÃO III (LTSI)

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

Algoritmos e Estruturas de Dados. Décima primeira aula: Árvores chanfradas

Aula 13 Árvores Rubro-Negras

Aula 19 Árvores Rubro-Negras

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

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

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

Aula 13 Árvores Adelson-Velskii e Landis

Árvores AVL IAED, 2014/2015

Á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. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira

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

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

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

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

Árvores-B (Parte Ia) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

ÁRVORE AVL. Problema do balanceamento

Árvores binárias de busca

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Árvores Binárias de Busca. Árvores Binárias de Busca. Introdução

Árvores B Partes I e II

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

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

Árvores Auto-ajustadas

Problemas com ABP Desbalanceamento progressivo

Universidade Federal de Mato Grosso Estrutura de Dados II

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

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

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Árvores Binárias de Busca

Árvores Binárias de Pesquisa Equilibradas

INF 1010 Estruturas de Dados Avançadas

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

Árvores Binárias de Busca

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

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

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

Á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

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

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

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

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

Algoritmos e Estruturas de Dados 2005/2006

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Árvores Binárias Balanceadas Estrutura de Dados I

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

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Lista de Prioridades. Estrutura de Dados II Prof. Erinaldo

Filas de Prioridades Letícia Rodrigues Bueno

Algoritmos e estruturas espaciais

Árvores Binárias de Busca

Algoritmos e Estruturas de Dados 2006/2007

Árvores de Pesquisa (Parte II)

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

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

Algoritmos e Estruturas de Dados I Aula 15 Árvores de busca balanceadas (e mais...)

Árvores de Pesquisa (Parte II)

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

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

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

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

Transcrição:

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

Introdução Inventada por Adelson Velskii e Landis - 1962. Também chamada de Árvores Auto-Ajustadas ou Árvore de Afunilamento. ( BST ) É um 0po de Árvore Binária de Pesquisa máximo 2 7lhos: TE e TD; todos nós à esquerda contem subárvores com valores menores ao nó raiz da subárvore; todos nós à direita contem valores maiores ao nó raiz da subárvore;

Introdução Árvores mais simples que AVL: não forçam o equilíbrio; não mantém informação de altura. É uma árvore auto-ajustável, alterações tendem ao equilíbrio. É u0lizada para aplicações especí7cas, onde se realizam uma seqüência de operações em um universo ordenado. Possui três operações básicas: pesquisa, inserção e remoção. Em todas operações a árvore faz SPLAY.

Introdução Permite pior caso para uma só operação O(n) Garante pior caso amor0zado O(logn) Uma sequência qualquer de m operações demora, no pior caso O(m log n) reestruturar a árvore para impedir repe0ção de operações O(n)

Espalhamento O que é fazer SPLAY? É trazer um elemento X para a raiz da árvore (BTT- Bring To Top), u0lizando sucessivas rotações e tantas quanto necessárias. Obje0vos: Minimizar o número de acessos para achar a chave requerida. O0mizar a e7ciência das operações, através da freqüência com que cada nó é acessado, mantendo estes nós na parte superior da árvore.

Espalhamento Torna mais acessível o que é mais usado; Ajusta a estrutura da árvore à frequência de acesso aos dados; Junto à raiz estão os elementos mais usados mais recentes Os elementos mais ina0vos 7cam mais longe da raiz; O recurso é implementado por meio de rotações nos nós.

Rotações Rotação Simples: Zig direita Zig esquerda Rotação Dupla: Zig-zig direita; Zig-zig esquerda; Zig-zag esquerda e direita. Mesma que a AVL

Rotação Zig Nesta rotação, o 7lho direito do elemento y, 7cará o 7lho esquerdo do elemento x, que era pai de y. É a rotação de um nó sobre seu pai, permanecendo a árvore com a mesma altura.

Rotação Zig-Zig Para fazer o zig-zig de x, primeiro temos que fazer o zig do pai de x (que é y). Depois, fazemos o zig de x. Conclusão: no fundo é feito zig (y) e zig (x), respec0vamente.

Rotação Zig-Zag Ao contrário de ZIG-ZIG, primeiro devemos fazer o ZIG de X com o pai de X (que é o y). Depois fazer o ZIG de X com avô de X (que é o Z). Conclusão: No fundo corresponde a fazer ZIG (X) e ZIG (X).

EXEMPLOS a) ZIG: rotação simples. (b) Zig-zig: duas rotações simples (c) Zig-zag: rotação dupla.

Exemplo de Pesquisa(9, A): 1) Pesquisa 0po BST até encontrar o nó 2) Se nó existe então fazer SPLAY do x (neste caso 9). Caso não exista, fazer SPLAY do úl0mo nodo não nulo encontrado na busca (elemento menor ou maior, mais próximo de 9. 2) Neste caso, para fazer SPLAY, u0lizar o ZIG-ZAG(x). 3) Árvore 7nal com o x na raiz.

Exemplo de Pesquisa(x, A): Início Faz percurso BST até encontrar nó. Se existe o elemento x na árvore A Faz SPLAY do elemento x Senão Faz SPLAY do sucessor esquerdo ou direito mais próximo de x Fim

Exemplo de Pesquisa raiz. Pesquisar o valor 80 (não existe na árvore): Como a pesquisa parou em 70, é este o elemento que vai para a raiz. Se a primeira árvore não 0vesse o nodo com valor 70, a pesquisa pararia em 90 e o valor 90 iria para a

Exemplo de Inserção(8, A).( SPLAY(8 (1 2) 7 vai para a raiz (primeiro elemento menor que 8). 3) Inserir 8, 7 7cará o seu 7lho esquerdo, e 10 o seu 7lho direito.

Exemplo de Inserção(x, A) OBS: Essa abordagem é interessante caso queira garantir que valores próximos a x fiquem perto da raiz. Início Faz SPLAY do elemento x. Como não existe, o elemento menor mais próximo de x, fca na raiz. Agora é só inserir x, que passa a ser a raiz da árvore. Fim

Exemplo de Remoção(12, A) 1) Pesquisa 0po BST. 2) SPLAY (12,A). 3) SPLAY (12,A') onde A' é a subárvore esquerda do 12. 4) O elemento menor mais próximo de 12 vai para a raiz e sem 7lho esquerdo, podemos então remover..( 15 ) 5) Eliminar o 12 e ligar o pai de x (12) com seu 7lho direito

Exemplo de Remoção(x, A) Início Se existe o elemento x na árvore A. Faz SPLAY do elemento x. Faz SPLAY do elemento x, na sua subárvore esquerda. Traz o elemento menor mais próximo de x para a raiz. Remove o x. Senão Faz SPLAY do elemento menor mais próximo de x. Fim

Como fazer o espalhamento?! Duas abordagens BoXom-up Top-down

Espalhamento boxom-up rotações ascendentes desde o nó x acessado até à raiz se p (pai de x) é a raiz: rotação simples (zig) senão, existe um a (avô de x) e se x é 7lho direito (esquerdo) de p e p 7lho direito (esquerdo) de a faz rotação zig-zig Rodar primeiro o pai e avô, depois o 7lho se x é 7lho direito (esquerdo) de p e p 7lho esquerdo (direito ) de a faz rotação zig-zag Rodar pai e 7lho, depois avô

Espalhamento em k1

Espalhamento em k1 Fazer uma pesquisa de k1 extrai a respec0va informação e tem como efeito lateral reestruturar a árvore, tornando-a mais equilibrada Não só o nó k1 veio para raiz como os que

Exemplo OBS: Nesse slide, está sendo realizado o splay depois da inserção, somente para ilustração.

Análise do exemplo Inserções cada inserção é feita em tempo constante (insere 7lho à direita da raíz e faz uma rotação) total das n inserções é O(n) a árvore resultante é muito ruim (lista) mas o processo encontra-se "adiantado rela0vamente a n * O(log n) Acessos acesso ao nó 1 é O(n) (nº de rotações relacionado com distância à raíz) acesso muito ruim que faz reduzir a vantagem acumulada acesso ao nó 2 já é O(n/2) globalmente: calcula-se tempo amor0zado Conclusão consegue-se sempre, para as primeiras m operações, manter o tempo amor0zado, mesmo no pior caso, abaixo de O(m log n)

Exercício Executar a sequência de operações em uma árvore splay tree u0lizando a abordagem boxom-up: Inserir 40, 30, 15, 50, 45, 13, 80, 71, 20 Remover 50 Remover 30 Remover 13 Inserir 50 Remover 71

Aplicação Consultas bancárias Ao fazer uma consulta, o registro de um cliente será levado para o topo da árvore, diminuindo o tempo de acesso para as próximas consultas. Assim, clientes que fazem consultas freqüentemente, terão acesso mais rápido. Os registros de clientes que não u0lizam estes serviços, por sua vez, 7carão nos níveis mais inferiores da árvore. Sistemas de Arquivos Microsof Windows u0liza na sua indexação de arquivos por árvore Splay.

Aplicação Hospital Registro de pacientes recentes vai para a raiz no momento da internação e permanece por algum tempo. Vai afundando, caso não seja acessado. Par0cularmente ú0l na implementação de caches. Proxy Squid u0liza árvores Splay para manipular o cache interno de páginas Web.

Considerações 7nais Árvores Splay podem 7car desequilibradas, mas garantem uma complexidade O(log n) ao longo do.( amor0zada tempo de u0lização (complexidade Ajusta a árvore à freqüência de acesso aos dados. Junto à raiz estão os elementos mais usados / mais recentes (mais disponíveis). Os mais ina0vos 7cam mais longe da raiz. É importante notar que em um acesso uniforme, a performance da Árvore Splay será considerada pior que em outro 0po de árvore. Há estudos empíricos, que defendem que, em muitos casos reais, se veri7ca que 90% dos acessos são feitos apenas à 10% dos elementos.