Вы находитесь на странице: 1из 21

rvores Splay

Mestrado em Cincia da Computao Estruturas de Dados Prof. Dr. Paulo Roberto Gomes Luzzardi Aluna: Nelsi Warken

Caractersticas
Inventada por Adel' son Vel' skii e Landis - 1962. Estudos e artigos: Daniel Sleator e Robert Tarjan. Tambm chamada de rvores Auto-Ajustadas ou rvore de Afunilamento. um tipo de rvore Binria de Pesquisa (BST) grau de cada n <= 2; mximo 2 filhos: TE e TD; todos ns esquerda contm subrvores com valores menores ao n raiz da subrvore; todos ns direita contm valores maiores ao n raiz da subrvore.

Caractersticas
rvores mais simples que AVL: - no foram o equilbrio; - no mantem informao de altura. uma rvore auto-ajustvel, alteraes tendem ao equilbrio. utilizada para aplicaes especficas, onde se realizam uma sequncia de operaes em um universo ordenado. Possui trs operaes bsicas: pesquisa, insero e remoo. Em todas operaes a rvore faz SPLAY.

O que fazer SPLAY? trazer um elemento X para a raiz da rvore (BTT- Bring To Top), utilizando sucessivas rotaes e tantas quanto necessrias. Objetivos: Minimizar o nmero de acessos para achar a chave requerida. Otimizar a eficincia das operaes, atravs da frequncia com que cada n acessado, mantendo estes ns na parte superior da rvore.

Mtodo Splaying
Torna mais acessvel o que mais usado; ajusta a estrutura da rvore frequncia de acesso aos dados; junto raiz esto os elementos: mais usados mais recentes os elementos mais inativos ficam mais longe da raiz; o recurso implementado por meio de rotaes nos ns.

Rotaes geradas pelo Splay


Rotao Simples:
Zig direita Zig esquerda

Rotao Dupla:
Zig-zig direita; Zig-zig esquerda; Zig-zag esquerda e direita.

Rotao: ZIG

Nesta rotao, o filho direito do elemento y, ficar o filho esquerdo do elemento x, que era pai de y. a rotao de um n sobre seu pai, permanecendo a rvore com a mesma altura.

Splay Tree: zig-zig


Para fazer o zig-zig de x, primeiro realizado o zig do pai de x (que y). Aps, feito o zig de x. Concluso: no fundo feito zig (y) e zig (x), respectivamente.

Splay Tree: zig-zag


Ao contrrio de ZIG-ZIG, primeiro realizar 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). Concluso: No fundo corresponde a fazer ZIG (X) e ZIG (X).

EXEMPLOS
a) Zig: rotao simples.

(b) Zig-zig: duas rotaes simples

(c) Zig-zag: rotao dupla.

Exemplo de Pesquisa(9, A):


1) Pesquisa tipo BST at encontrar, se existe ento fazer SPLAY do x (neste caso 9). Caso no exista, fazer SPLAY do ltimo nodo no nulo encontrado na busca (elemento menor ou maior, mais prximo de 9. 2) Neste caso, para fazer SPLAY, utilizar o ZIG-ZAG(x). 3) rvore final com o x na raiz.

Algortmo de Pesquisa(x, A)

Incio Faz percurso BST at encontrar. Se existe o elemento x na rvore A Faz SPLAY do elemento x Seno Faz SPLAY do sucessor esquerdo ou direito mais prximo de x Fim

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

Exemplo de Insero(8, A)
1) SPLAY(8). 2) 7 vai para a raiz (primeiro elemento menor que 8). 3) Inserir 8, 7 ficar o seu filho esquerdo, e 10 o seu filho direito.

Algortmo de Insero(A, x)

Incio Faz SPLAY do elemento x . Como no existe, o elemento menor mais prximo de x, fica na raiz. Agora s inserir x, que passa a ser a raiz da rvore. Fim

Exemplo de Remoo(12, A)
1) Pesquisa tipo BST. 2) SPLAY (12,A). 3) SPLAY (12,A') onde A' a subrvore esquerda do 12. 4) O elemento menor mais prximo de 12 vai para a raiz e sem filho esquerdo, ento poder ser removido. 5) Eliminar o 12 e ligar o pai de X(12) com seu filho direito (15).

Algortmo de Remoo(A, x)

Incio Se existe o elemento x na rvore A. Faz SPLAY do elemento x. Faz SPLAY do elemento x, na sua subrvore esquerda. Traz o elemento menor mais prximo de x para a raiz. Remove o x. Seno Faz SPLAY do elemento menor mais prximo de x. Fim

Exemplos de Uso
Consultas bancrias Ao fazer uma consulta, o registro de um cliente ser levado para o topo da rvore, diminuindo o tempo de acesso para as prximas consultas. Assim, clientes que fazem consultas freqentemente, tero acesso mais rpido. Os registros de clientes, que no utilizam estes servios, por sua vez, ficaro nos nveis mais inferiores da rvore. Sistemas de Arquivos Microsoft Windows utiliza na sua indexao de arquivos rvores Splay.

Exemplos de Uso
Registro de doentes Hospital Vai para a raiz no momento da internao e permanece por algum tempo. Vai descendo, caso no seja acessado. Proxy Squid utiliza rvores Splay para manipular o cache interno de pginas Web. Particularmente til na implementao de caches.

Concluso
rvores Splay podem ficar desequilibradas, mas garantem uma complexidade O(log n) ao longo do tempo de utilizao (complexidade amortizada). Ajusta a rvore freqncia de acesso aos dados. Junto raiz esto os elementos mais usados / mais recentes (mais disponveis). Os mais inativos ficam mais longe da raiz. importante notar que em um acesso uniforme, a performance da rvore Splay ser considerada pior que em outro tipo de rvore. H estudos empricos, que defendem que, em muitos casos reais, se verifica que 90% dos acessos so feitos apenas 10% dos elementos.

Referncias
Bibliografia: Drozdek, Adam. Estrutura de Dados e Algoritmos em C++ (rvores Auto-Ajustadas). Sleator, Daniel D.; Tarjan, Robert D. Self-Adjusting Binary Search Trees.1985.

Sites: http://www.cs.nyu.edu/algvis/java/SplayTree.html http://www.cs.cmu.edu/afs/cs.cmu.edu/user/sleator/www/papers/self-adjusting.pdf http://gdias.artinova.pt/projecto/pt/applets/applet_splay.php

Demonstraes: http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm http://people.ksp.sk/~kuko/bak/index.html