dra. elisa schaeffer · los arboles biselados´ (inglés: splay tree) son árboles binarios que...

Post on 24-Jun-2020

11 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Estructuras de datos

Árboles balanceados

Dra. Elisa Schaeffer

elisa.schaeffer@gmail.com

PISIS / FIME / UANL

Arboles balanceados– p. 1

¿Balance?

Las operaciones de insertar y remover claves modifican laforma del árbol.

La garantía de tiempo de acceso O (log n) está solamenteválida a árboles balanceados.

Arboles balanceados– p. 2

Balance perfecto

Un árbol está perfectamente balanceadosi suestructura es óptima con respeto al largo del camino de laraíz a cada hoja:Todas las hojas están en el mismo nivel, es decir, ellargo máximo de tal camino es igual al largo mínimo de talcamino sobre todas las hojas.

Esto es solamente posible cuando el número de hojas es2k para k ∈ Z

+, en que caso el largo de todos los caminosdesde la raíz hasta las hojas es exactamente k.

Arboles balanceados– p. 3

Rotaciones

Necesitamos operaciones para “recuperar” la formabalanceada después de inserciones y eliminaciones deelementos, aunque no cada operación causa una falta debalance en el árbol.

Estas operaciones se llaman rotaciones.

Arboles balanceados– p. 4

Rotaciones básicas

Rotacion simple izquierda Rotacion simple derecha

Rotacion doble izquiera-derecha Rotacion doble derecha-izquierda

t u

vu t

v

B B

A

A

A A

t

t

B

B

u v

u

v

A

u

t

v

w

A

v

t

w

u

B1 B2

B1 B2

t

B B

w

w

A1 A2

A1 A2

vu

u

t v

Arboles balanceados– p. 5

Elección de rotación

La rotación adecuada está elegida según las alturas de losramos que están fuera de balance, es decir, tienendiferencia de altura mayor o igual a dos.

Si se balancea después de cada insercion yeliminacion siempre y cuando es necesario, la diferenciaserá siempre exactamente dos.

Arboles balanceados– p. 6

¿Porqué dos?

Sean los hijos de t que están fuera de balance u y v.

A(u) ≥ A(v) + 2 :

A(A) ≥ A(B) ⇒

rotación simple a la derecha,

A(A) < A(w) ⇒

rotación doble izquierda-derecha,

A(u) ≤ A(v)− 2 :

A(A) ≥ A(B) ⇒

rotación simple a la izquierda,

A(B) < A(w) ⇒

rotación doble derecha-izquierda.

Arboles balanceados– p. 7

Punto de rotación

Con esas rotaciones, ninguna operación va a aumentar laaltura de un ramo, pero la puede reducir por una unidad.

La manera típica de encontrar el punto de rotación t esregresar hacía la raíz después de haber operado con unahoja para verificar si todos los vértices en camino todavíacumplan con la condición de balance.

Arboles balanceados– p. 8

Análisis de las rotaciones

Búsqueda de una hoja ∈ O (log n)

La operación en la hoja ∈ O (1)

La “vuelta” hacía la raíz ∈ O (log n)

Cada rotación en sí ∈ O (1)

Si al ejecutar una rotación, la altura de t cambia, habráque continuar hacía la raíz porque otras faltas de balancepueden técnicamente haber resultado.

Si no hay cambio en la altura de t, no hay necesidad decontinuar más arriba en el árbol.

Arboles balanceados– p. 9

Árboles rojo-negro

Otro tipo de árboles binarias son los arboles rojo-negro(inglés: red-black tree) .

También ofrecen tiempo de acceso y actualizaciónO (log n) y se balancea por rotaciones.

En vez de la condición AVL, se identifica vértices fuera debalance por asignar colores a los vertices.

Arboles balanceados– p. 10

Propiedades

(I) Cada vértice tiene exactamente uno de los doscolores: rojo y negro.

(II) La raíz es negro.

(III) Cada hoja es negro.

(IV) Si un vértice es rojo, sus ambos hijos son negros.

(V) Para cada vértice v, todos los caminos de v a susdescendientes contienen el mismo número de nodosnegros.

Arboles balanceados– p. 11

Altura

Aplica para los árboles rojo-negro que su altura es

O (log n)

y que la expresión exacta tiene cota superior

2 log2(n+ 1)

Arboles balanceados– p. 12

Rotaciones

Rotacion a la izq.

Rotacion a la der.w

w

A

B C A

C

B

v

v

Arboles balanceados– p. 13

Operaciones

Al insertar hojas nuevas o eliminar vértices, además de lasrotaciones para restaurar balance, puede hacer faltarecolorear algunos vértices en el camino desde la hojanueva hasta la raíz.

Las posibles violaciones son de dos tipos: vértices deruteo rojos que llegan a tener un hijo rojo por lasrotaciones y la raíz siendo un vértice rojo por rotaciones.

Es una idea buena implementar esto en una subrutina quese invoca después de cada inserción y otra para invocardespués de cada eliminación.

Arboles balanceados– p. 14

Árboles biselados

Los arboles biselados(inglés: splay tree) son árbolesbinarios que ofrecen en tiempo O (log n) cualquiera de lasoperaciones siguientes:

búsqueda de una clave

inserción de una clave

eliminación de una clave

unión de árboles

división de árboles

Arboles balanceados– p. 15

Propiedades

En un árbol biselado cada vertice contiene a una clave ylas claves en el ramo izquierdo son menores que la clavedel vértice mismo, mientras a la derecha están las clavesmayores.

Las claves son unicas.Las operaciones no cuidan ni restauran balance.

Arboles balanceados– p. 16

Las claves mismas son los datos

En este caso, no hay ningun dato asociado a unaclave.

=⇒ Una búsqueda por la clave ℓ tiene salidas “sí” (en elcaso que la clave está presente en el árbol) y “no” (en elcaso que la clave no está incluido).

Arboles balanceados– p. 17

Unión y división

Para aplicar una union, todas las claves de uno de los dosárboles tienen que ser menores a la clave mínima del otro.

La division corta un árbol a dos árboles tal que todas lasclaves de uno de los árboles que resultan son menores oiguales a una clave dada como parámetro y las mayoresestán en el otro árbol.

Arboles balanceados– p. 18

La operación splay

La operacion basicautilizada para implementar todasestas operaciones es splay(ℓ, A).

Lo que hace splay es convertir el árbol A a tal forma queel vértice con claveℓ es la raız, si presente, y en laausencia de ℓ en A, la raíz será

max {k ∈ A | ℓ > k} (1)

si A contiene claves menores a ℓ y mın {k ∈ A} en otrocaso.

El orden de las claves después de la operación cumple elmismo requisito de orden de las claves.

Arboles balanceados– p. 19

Implementaciones

busqueda deℓ enA: ejecuta splay(ℓ, A). Si la raíz enel resultado es ℓ, la salida es “sí”, en otro caso “no”.

union deA1 conA2: se supone que las claves de A1

son todos menores que la clave mínima de A2.Ejecutamos splay(∞, A1) para lograr que la raíz deA1 modificado es su clave máxima y todos los otrosvértices están en el ramo izquierdo. Hacemos que A2

sea el ramo derecho.

division deA con la claveℓ: ejecutamos splay(ℓ, A).Los dos árboles resultantes serán tal que A1 contienesolamente el ramo derecho de la raíz y A2 el resto delA modificado.

Arboles balanceados– p. 20

Implementaciones

eliminacion deℓ deA: divide A con la clave ℓ. Si resultaque ℓ es la raíz, quítalo y ejecuta la unión de los dosramos sin ℓ. Si ℓ no es la raíz, solamente vuelve ajuntar A1 como el ramo derecho de A2.

insercion deℓ enA: ejecuta la división de A con ℓ. Si ℓya es la raíz, solamente vuelve a juntar A1 como elramo derecho de A2. Si no lo es, crea un vértice raíznuevo con la clave ℓ y haz A2 su ramo derecho y A1 suramo izquierdo.

Arboles balanceados– p. 21

Ejemplo: unión

+

+

splay(+∞, A)

Arboles balanceados– p. 22

Implementación de splay(v)

Comenzamos como cualquier busquedade v en un árbolbinario ordenado desde la raíz utilizando el hecho que lasclaves pequeñas están a la izquierda y las grandes a laderecha.

Al terminar la búsqueda en un vértice v, empezamosrotacionespara mover v hacıa la raız sin mezclar elorden de las claves.

Arboles balanceados– p. 23

Rotaciones básicas

Rotacion simple izquierda Rotacion simple derecha

Rotacion doble izquiera-derecha Rotacion doble derecha-izquierda

t u

vu t

v

B B

A

A

A A

t

t

B

B

u v

u

v

A

u

t

v

w

A

v

t

w

u

B1 B2

B1 B2

t

B B

w

w

A1 A2

A1 A2

vu

u

t v

Arboles balanceados– p. 24

Rotaciones para splay

Las rotaciones se elige según las relaciones entre unvértice v y su padre y “abuelo”.

Si v tiene padrepero no tiene abuelo, elegimos unarotación simple derecha.

Así v llega al ser la raíz en el último paso.

Arboles balanceados– p. 25

Rotaciones dobles

Si v tiene un padreu y un abuelow, hay varios casos.

Si v y u on hijos derechos, elegimos una rotacióndoble derecha-derecha.

Si son hijos izquierdos, una rotación dobleizquierda-izquierda que es la misma pero “por espejo”.

En el caso que otro de v y u es un hijo izquierdo y elotro derecho, elegimos una de las rotaciones doblesbásicas.

Arboles balanceados– p. 26

Rotación doble derecha-derecha

rotate(y)rotate(x)

x

A B

y

C

z

D

DC

y

B

x

zA

Arboles balanceados– p. 27

top related