You are on page 1of 3

18/07/2011

Estructura de Datos I

Agenda
2

Estructura de Datos I

SPLAY TREE

Introduccin Bsqueda en une Splay Tree Operaciones Splaying Nodos splayed Redimiento Ejercicios

UNSA - 2011

Karim Guevara Puente de la Vega

Introduccin
3 4

Bsqueda en un Splay Tree


(20,Z) todas las claves en la regin azul son 20 (35,R) (20,Z)

Un Splay Tree es un BST

(12,A)

Estructura de Datos I

Estructura de Datos I

Cumple las mismas reglas


(2,Q)

(8,T) (14,J) (21,O) (36,L) (37,P) (40,X)

El resultado del recorrido inorder consiste en una lista ordenada de las claves

(10,N)

(1,C)

(4,H)

(9,P)

(11,U)

(3,R) (5,I)

(6,G) (7,Y)

todas las claves en la regin amarilla son 20

Inicia igual que en un BST La bsqueda es descendiendo en el rbol en busca del elemento o de un nodo externo. P.e.: buscar la clave 15.

(12,A)

(35,R)

(8,T) (2,Q)

(14,J)

(21,O) (36,L)

(37,P) (40,X)

(10,N)

(1,C)

(4,H)

(9,P)

(11,U)

(3,R) (5,I)

(6,G) (7,Y)

Bsqueda en un Splay Tree


5 6

Operaciones
(20,Z)

Buscar la clave 10, se encuentra en un nodo interno.


(8,T) (2,Q)

(12,A) (35,R)

Nueva operacin splay:

splaying mueve un nodo a la raz utilizando rotaciones

(21,O) (36,L) (37,P) (40,X)

Estructura de Datos I

(10,N)

Estructura de Datos I

(14,J)

rotacin derecha El hijo izquierdo x de un nodo y, se convierte en su padre, y ahora es el hijo derecho de x
y

rotacin izquierda El hijo derecho y de un nodo x, se convierte en su padre, x ahora es el hijo izquierdo de y
x y

una rotacin derecha en y

una rotacin izquierda en x

(1,C)

(4,H)

(9,P)

(11,U)

x x T3 y T1 T2 T1 T2 T1

(3,R) (5,I)

(6,G) (7,Y) T2

x T3 T3

T3

T1

T2

18/07/2011

Splaying
7

x is a

left-left grandchild (x es hijo izquierdo de su padre, el cual a su vez es hijo izquierdo de su padre) p es padre de x; g es padre de p

Casos del Splaying


8

y x T4 w

zig
x y w

T4 y x T3

Estructura de Datos I

Estructura de Datos I

T3 T1 T2 T1 T2 T3 T4 T1 T2 x

zig-zig

z y T1 x

zig-zag
z

x y

y T1 z T2 T3 T4

T4 T2 T3

T1

T2

T3

T4

(20,Z)

Ejemplo
9

(12,A)

(35,R)

g p
(8,T) (14,J) (21,O) (37,P)

Ejemplo
10
(40,X)

Dado x = (10,N) x es hijo derecho de su padre, el cual es hijo izquierdo del abuelo Rotacin-izquierda en p, luego rotacin-derecha en g
(20,Z)

(2,Q)

(10,N)

(36,L)

1.
(antes de rotacin)
x
(10,N) (20,Z)

x
(1,C) (4,H) (9,P) (11,U)

ahora x es el hijo izquierdo de la raz rotacin-derecha en la raz


(35,R)

(3,R) (5,I)

(6,G) (7,Y) (20,Z) (8,T) (12,A) (21,O) (37,P)

Estructura de Datos I

g x p
(2,Q) (8,T) (10,N)

(12,A)

(35,R)

Estructura de Datos I

(2,Q)

(9,P)

(14,J)

(36,L)

(40,X)

x
(8,T)

(10,N)

(14,J) (21,O) (37,P)

x p
(2,Q) (8,T)

(10,N)

(35,R)

2.
(20,Z)

g
(11,U) (36,L) (40,X) (12,A) (21,O) (37,P)

(1,C)

(4,H)

(11,U)

1.
(3,R) (5,I) (6,G) (7,Y)

(despus de rotar)
(35,R)

(antes de rotar)
(1,C)

(2,Q)

(9,P)

(12,A)

(9,P)

(9,P)

(14,J)

(36,L)

(40,X)

(1,C)

(4,H)

2.
(despus de la 1. rotacin)
(6,G)

(4,H)

(14,J)

(21,O)

(37,P)

(1,C)

(4,H)

(11,U)

3.
(despues de la 2. rotacin) x an no es raz, nuevo splay

(3,R) (5,I)

(6,G) (7,Y)

(11,U)

(36,L)

(40,X)

(3,R) (5,I)

(3,R) (7,Y) (5,I)

(6,G) (7,Y)

x es raz, parar proceso

(20,Z)

Ejemplo
11

(12,A)

(35,R)

antes
(8,T) (14,J) (21,O) (10,N) (37,P)

Entonces
12
(40,X)

(2,Q)

(36,L)

El rbol podra llegar a estar no equilibrado P.e: splay (40,X)


(20,Z)

(1,C) (4,H) (9,P) (11,U)

(3,R) (5,I)

(6,G) (40,X) (7,Y) (20,Z)

Un splay tree es un rbol binario de bsqueda donde un nodo es splayed despus de ser accedido (por una bsqueda o una actualizacin)

Estructura de Datos I

(12,A) (12,A) (40,X) (14,J) (35,R)

(37,P)

Estructura de Datos I

(8,T)

(14,J)

(37,P) (2,Q)

(8,T)

La profundidad de los nodos internos accedidos es splayed El costo del splaying es O(h), donde h is la altura del rbol el cual podra ser O(n) en el peor caso

(2,Q)

(10,N)

(35,R)

(10,N)

(21,O)

(36,L)

O(h) rotaciones, cada uno es O(1)

(1,C) (1,C) (4,H) (9,P) (11,U) (21,O) (36,L)

(4,H)

(9,P)

(11,U)

(3,R) (5,I)

(6,G) (7,Y)

despus del 1er. splay

(3,R) (5,I)

(6,G) (7,Y)

despus del 2do. splay

18/07/2011

Nodos splayed
13 14

Rendimiento de los Splay Trees

Cules son los nodos splayed despues de cada operacin?


Estructura de Datos I

Estructura de Datos I

Mtodo
Find(k)

Splay node
Si la clave est, aplicar al nodo donde est la clave Si la clave no est, aplicar al padre del nodo externo donde debera estar la clave Aplicar al nuevo nodo que contienen la clave insertada Aplicar al padre del nodo interno que ser eliminado del rbol

Llamamos: rank de un nodo, al logaritmo (base 2) de su tamao. As, el costo de una operacin splay es O(log n). Esto implica, que los splay trees pueden adaptarse a bsquedas con frecuentes requerimientos ms rpido que O(log n) en algunos casos

Insert(k,y) Remove(k)

Ejercicios
15

(20,Z)

En el siguiente Splay Tree, realizar las siguientes operaciones:


Buscar: (8,T), (9,P) Insertar: (16, M), (27,C) Eliminar. (7,Y), (4,H)

(1,C) (8,T) (2,Q)

(12,A)

(35,R)

(14,J)

Estructura de Datos I

(21,O) (36,L)

(37,P) (40,X)

(10,N)

(4,H)

(9,P)

(11,U)

(3,R) (5,I)

(6,G) (7,Y)

You might also like