38
Instituto Tecnológico de Costa Rica Escuela de Computación Curso de Estructuras de Datos Árboles Splays Estudiantes: Randall Araya Diego Delgado Víctor Saborío Bryan Serracín Daniel Solís 2013

Árboles splay

Embed Size (px)

Citation preview

Page 1: Árboles splay

Instituto Tecnológico de Costa Rica

Escuela de Computación

Curso de Estructuras de Datos

Árboles Splays

Estudiantes:

Randall Araya

Diego Delgado

Víctor Saborío

Bryan Serracín

Daniel Solís

2013

Page 2: Árboles splay

¿Qué son los árboles splay?

Page 3: Árboles splay

Definición

Es un árbol binario de búsqueda con la propiedad de

ser auto balanceable, además, los elemento recién

visitados, se accederán más rápido en próximas

consultas.

Page 4: Árboles splay

Acerca de los árboles.

Los árboles splay, fueron creados por: Robert Tarjan y Daniel Sleator.

La operación de biselación, se lleva a cabo mediante la reorganización del árbol

para cada cierto elemento, colocándolo en la raíz.

Éstos árboles son más simples de implementar que otros árboles binarios de

búsqueda auto balanceables.

Los árboles splay, funcionan de forma correcta aunque existan nodos con llaves

repetidas.

Page 5: Árboles splay

Inserción en un Árbol Splay

La inserción en este tipo de árbol es igual a la inserción en un

árbol binario de búsqueda.

Luego de la inserción se ejecuta la Biselación de ese nodo.

Page 6: Árboles splay

Inserción:

Para la inserción de un nuevo valor en el árbol binario de búsqueda se

deben considerar los siguientes aspectos.

La primera inserción en el árbol es conocida como la raíz pero esta va a

ser modificada por la Operación Biselación, otra forma de identificar la

raíz del árbol es que el nodo no tiene un nodo padre.

A la hora de la inserción se hace una comparación con el entre el nodo

padre y el nodo a insertar para evaluar su inserción.

Page 7: Árboles splay

A la hora de la inserción se hace una comparación con el nodo que ya esta en el

árbol para evaluar y dirigir hacia que lado del árbol se da la inserción hasta llegar a

insertarse en uno de los nodos hijos sean mayores o menores vacíos

Insertar: 5

4

5

5

4

4 < 5

entonces se

inserta al a

derecha por la

regla de

inserción

Luego se ejecuta la operación de

Biselación

Raíz5

4

Nueva Raíz

Page 8: Árboles splay

Insertar: 2

5

4

22 < 5 entonces se inserta a la

izquierda por la regla de

inserción, pero su hijo izquierdo

ya esta ocupado así que se

consulta a su hijo para

insertarlo debajo de él siendo el

su padre

5

42 < 4 entonces se

inserta al a

izquierda por la

regla de inserción2

Luego se ejecuta la operación de Biselación

Page 9: Árboles splay

5

4

2

2

Luego se ejecuta de nuevo la operación de

Biselación para el reacomodo del árbol

hasta que e ultimo valor insertado sea la

nueva raíz

4

5

Nueva Raíz

Operación de Biselación

Page 10: Árboles splay

Método eliminación Árbol Splay

Para el diseño de eliminación existen dos posibilidades

Proceder como en árbol binario de búsqueda, y no emplear operaciones splay,considerando que si algo se borra, no significa que se intentará buscar en laproximidad del elemento borrado.

Si lo busca y no lo encuentra efectúa una operación splay con el padre del buscado.Si lo encuentra, efectúa operación splay sobre el nodo, dejándolo en la raíz. Luegoefectúa una operación splay con el nodo con mayor clave en el subárbol izquierdo; acontinuación se descarta la raíz; y finalmente se enlaza el subárbol derecho con elsubárbol izquierdo.

Page 11: Árboles splay

Por ejemplo, eliminar 4.

6

5

1

2

4

3

7 4

1

2

3 5

6

7

Page 12: Árboles splay

Continuación eliminar 4.

5

6

1

2

3

7

4

75

6

1

2

3Liberar Raíz

Join izquierda y derecha

Page 13: Árboles splay

En el ejemplo anterior, la operación eliminar 4, ubica el nodo

con valor 4, y lo lleva a la raíz. Luego se efectúa Splay 3, se

descarta el nodo con valor 4, y se efectúa la unión de dos

subárboles (join).

Page 14: Árboles splay

Ejemplo 2, eliminar 6

8

2

75

6

41

3

Page 15: Árboles splay

5

2

1

83

4 7

6

Splay 5

Page 16: Árboles splay

1

2

3

84

57

6 Liberar Raíz

Page 17: Árboles splay

2

8

1

3

4 7

5

Join izquierda y derecha

Page 18: Árboles splay

Búsqueda en Árbol Splay

Page 19: Árboles splay

Proceso de búsqueda

Para buscar una llave en un árbol splay, se realiza de la misma forma en que se busca

en los árboles binarios de búsqueda, pero con una serie de cambio en la estructura.

Page 20: Árboles splay

Proceso de búsquedaDentro de los cambio básicos, se encuentra:

Al momento de encontrar la llave por eliminar, el nodo del árbol, se bisela.

Si no se encuentra la llave, se bisela el último nodo que fue visitado, antes de descartar

la búsqueda.

Con esto, la raíz contendrá un sucesor o predecesor del nodo buscado.

Page 21: Árboles splay

Operación de biselación

Biselación: consiste en subir un nodo hasta que

este llegue a ser la raíz. Esto se realiza con

rotaciones simples y dobles.

Page 22: Árboles splay

¿Cuándo y a que nodo se realiza la

biselación?

Se sigue el mismo algoritmo de, búsqueda, eliminación

e inserción que de árbol binario de búsqueda, pero el

nodo que se insertó, buscó o el mayor hijo izquierdo

del nodo eliminado será biselado.

Page 23: Árboles splay

Caso 1(aplicando biselación al 4)

El 4 es hijo izquierdo de 9, por lo que aplicamos rotaciónsimple a la derecha a 9 (al “padre”). Recordar que labiselación consiste en que ese número llegue a ser la raíz.

Page 24: Árboles splay

Caso 1(aplicando biselación al 17)

El 17 es hijo derecho de 15, por lo que le aplicamos rotación simple a la izquierda a 15 (al “ padre”).

Page 25: Árboles splay

Caso 2(aplicando biselación al 17)

Page 26: Árboles splay

El 17 es hijo derecho de 15 y nieto derecho de 9, por loque aplicamos rotación doble a la izquierda , es decir,rotación simple izquierda a 9 (al “abuelo”) y luegorotación simple izquierda a 15 (“al padre”) .

Page 27: Árboles splay

Caso 2(aplicando biselación al 9)

Page 28: Árboles splay

El 9 es hijo izquierdo de 15 y nieto izquierdo de 17, porlo que aplicamos rotación doble a la derecha , esdecir, rotación simple derecha a 17 (al “abuelo”) yluego rotación simple derecha a 15 (“al padre”) .

Page 29: Árboles splay

Caso 3(aplicando biselación al 18)

Page 30: Árboles splay

El 18 es hijo izquierdo de 20 y nieto derecho de 14, porlo que aplicamos rotación simple derecha izquierda ,es decir, rotación simple derecha a 20 (al “padre”) yluego rotación simple izquierda a 14 (“al abuelo”) .

Page 31: Árboles splay

Caso 3(aplicando biselación al 18)

Page 32: Árboles splay

El 18 es hijo derecho de 14 y nieto izquierdo de 20, porlo que aplicamos rotación simple izquierda derecha ,es decir, rotación simple izquierda a 14 (al “padre”) yluego rotación simple derecha a 20 (“al abuelo”) .

Page 33: Árboles splay

Teoremas de rendimiento:

• TEOREMA DEL BALANCE

• TEOREMA DE OPTIMALIDAD ESTÁTICA

• TEOREMA “STATIC F INGER”

• TEOREMA “WORKING SET ”

• TEOREMA “DYNAMIC F INGER”

Page 34: Árboles splay

Teorema del balanceO(m log(n) + n log(n)).

Una secuencia de “m” operaciones Splay en un arbol de n nodos tiene una complejidad

temporal:

O(m log(n) + n log(n)).

En general cuando una secuencia de M operaciones toma tiempo O(M f(N)), se dice que

el costo Amortizado en tiempo de cada operación es O(f(N)). Por lo tanto, en un splay

tree los costos amortizados por operacion son de O(log(N)).

Page 35: Árboles splay

Teorema de optimalidad estática

Sea “q” el número de veces que se accede al elemento “i” en S.

En otras palabras, los árboles biselados se comportan tan bien como los árboles

binarios de búsqueda estáticos óptimos en las secuencias de al menos n accesos.

Page 36: Árboles splay

Teorema de “Static Finger”Suponemos siempre que la búsqueda de un elemento comienza desde el nodo raíz. El

elemento donde comenzamos búsqueda cambia cada vez que un elemento diferente

llega al nodo raíz.

Suponga que dieron un puntero a un elemento y comenzar la búsqueda de ella cada vez

que llega una consulta.

Sea i-j el elemento visitado en el e-esimo acceso de S y f sea un element fijo, el costo de

realizer esta secuencia de accesos seria de:

Page 37: Árboles splay

Teorema “Working Set”

Sea t(j) el numero de elementos distintos accedidos desde la ultima vez que

se accedió a J antes del instante i.

supongamos que J es buscado en la t-esima operación. T(j) denota el numero

de elementos distintos buscados desde la ultima búsqueda de J, por ejemplo

la secuencia 7,9,5,6,4,3,2,4,3,5, y si intentamos buscar T(10)(5) es 4. el

teorema explica que:

Page 38: Árboles splay

Teorema Dynamic finger

Supongamos que el tamaño (r) es el número de nodos en el subárbol

con raíz en r (incluyendo r) y el rango (r) = log2 (tamaño (r)). A

continuación, la función potencial de P (t) para un árbol de splay t es la

suma de los rangos de todos los nodos en el árbol. Esto tiende a ser alto

para los árboles mal equilibrados y bajo en los árboles equilibrados.