Professional Documents
Culture Documents
Captulo 20
4
3
6
8
10
20-01-2010
La Figura 20.1 muestra dos heaps. La trayectoria derecha del ubicado a la izquierda est
formada por los nodos: 1, 4 y 6. La trayectoria derecha del heap ubicado a la derecha est
formada por los nodos: 2, 5, y 8. Las trayectorias derechas se recorren de arriba hacia abajo.
En la Figura 20.2, a la izquierda se muestra la mezcla de los dos trayectos derechos, se forma
una ruta derecha ms larga, formada por la secuencia: 1, 2, 4, 5, 6 y 8. Luego a la derecha se
muestra el intercambio de los hijos de cada nodo del trayecto derecho; lo cual deja un skew
heap con trayecto derecho de un nodo.
1
1
2
3
3
5
9
7
8
10
8
9
10
h2
a
b
d
c
20-01-2010
Seleccionar. Skewheap.
El siguiente segmento inicia el heap h con la mezcla, e intercambia los hijos; al mismo tiempo
inicia la variable y, que recuerda al ltimo nodo agregado al heap con la mezcla:
h = h1;
y = h1;
// apunta al ltimo agregado
h1 = y->right;
//desciende en trayecto derecho
y->right = y->left; //intercambia hijos
h
a
h1
c
20-01-2010
20-01-2010
Seleccionar. Skewheap.
skew
*q
raz
20-01-2010
}
return h;
} /* meld */
20-01-2010
Seleccionar. Skewheap.
4
5
7
8
6
9
10
7
8
10
0
20-01-2010
apunta a los dos descendientes de ms a la derecha de ambos hijos, lo que facilita la mezcla
hacia arriba. Un nodo sin subrbol izquierdo apunta a s mismo.
La estructura es cclica y permite el descarte de cualquier elemento con complejidad O(log n).
La Figura 20.9, a la izquierda, muestra un heap mediante un rbol binario con punteros a los
hijos. A la derecha se muestra con los punteros derechos la referencia al padre, el puntero
derecho de la raz referencia al hijo ms derechista. Con los punteros izquierdos se apunta al
hijo ms derechista del subrbol izquierdo, o a s mismo si no tiene descendientes izquierdos.
1
6
8
h
7
8
9
2
8
20-01-2010
Seleccionar. Skewheap.
hasta la raz, mediante los punteros derechos; y rutas ascendentes hasta las hojas, mediante los
punteros hacia abajo.
8
6
Figura 20.12. Insercin de elemento mayor o igual que el primero de la lista derecha.
20-01-2010
10
Si el elemento que se inserta es mayor que la raz y menor que el primero de la lista descendente
derecha se recorre la lista descendentemente ordenada hasta encontrar el lugar de insercin, al
mismo tiempo que se van colocando los elementos mayores en las listas ascendentes hacia
abajo.
Esto se logra con dos punteros auxiliares, y que busca la posicin para insertar; y el puntero z
que apunta al descendiente hacia abajo.
Al inicio ambos punteros auxiliares apuntan al primero de la lista derecha. Donde n es el nodo
que se insertar, y h apunta a la raz del heap.
y = z = h->right;
while (n->prioridad < y->right->prioridad)
{ y=y->right; //avanza en la lista descendente.
t=z; z=y->down; y->down=t; // swap(z, y->down)
}
n->right=y->right; n->down=z; //enlaza lista ascendente y descendente.
y->right=h->right=n; // cambia inicio lista y encadena el nuevo nodo
La Figura 20.13 ilustra la insercin del nodo con prioridad 6, en la Figura 20.10, a la derecha.
En este caso no se efecta el cdigo del while.
h
1
20-01-2010
Seleccionar. Skewheap.
11
h
4
8
6
20-01-2010
12
Los elementos a la derecha del nodo next cumplen: d > e, por pertenecer a uno de los trayectos
que forman una lista descendente; y d < f por formar parte de una lista ascendente.
La lista derecha de f, cumple > g > d > f.
El proceso de abajo hacia arriba garantiza que d es menor que a.
h
a
next
d
//selecciona siguiente
if (mayor->prioridad < menor->prioridad)
{ next = menor; menor = mayor;}
else {next = mayor;}
}
h
d
g
mayor
e
20-01-2010
Seleccionar. Skewheap.
13
20-01-2010
14
20-01-2010
Seleccionar. Skewheap.
15
20-01-2010
16
Ejercicios.
E20.1.
Para el procesamiento top-down:
Comprobar que la insercin de la secuencia: 5, 6, 4, 7, 3, 8, 2, 9, 1, 10 deja un trayecto derecho
de 5 elementos de un total de 10. Lo cual es un ejemplo de secuencia de insercin de peor caso.
Comprobar que al descartar el mnimo, la estructura recobra un largo derecho razonable, de
largo uno en este caso.
Referencias.
D. D. Sleator, R.E. Tarjan., Self-adjusting Heaps, SIAM J. Comput. Vol 15, N 1, Feb 1986.
20-01-2010
Seleccionar. Skewheap.
17
ndice general.
CAPTULO 20 ........................................................................................................................................... 1
SKEW HEAPS. SELECCIONAR. ........................................................................................................... 1
20.1. MEZCLA DE DOS SKEW HEAPS. ......................................................................................................... 1
20.2. OPERACIN MEZCLA CON INTERCAMBIO. TOP-DOWN. .................................................................... 2
20.3. DEFINICIN DE TIPOS. ...................................................................................................................... 4
20.4. CREACIN DE NODO Y DE COLA. ...................................................................................................... 4
20.5. TEST DE COLA VACA. ...................................................................................................................... 4
20.6. INSERTAR. ENCOLAR. TOP-DOWN. ................................................................................................... 4
20.7. SELECCIONAR EL MNIMO. DESENCOLAR. TOP-DOWN. .................................................................... 5
20.8. FUNCIN MEZCLAR. TOP-DOWN...................................................................................................... 5
20.9. TEST DE LAS FUNCIONES. ................................................................................................................. 6
20.10. MEZCLA ASCENDENTE (BOTTOM-UP). ............................................................................................ 7
20.11. ANLISIS DE INSERCIN BOTTOM UP. ............................................................................................ 9
20.12. ANLISIS DE DESCARTAR EL MNIMO: BOTTOM UP....................................................................... 11
20.13. TIPOS Y OBTENCIN DE NUEVO NODO. ......................................................................................... 12
20.13. INSERTAR. BOTTOM-UP. .............................................................................................................. 13
20.14. DESCARTAR. BOTTOM-UP. ........................................................................................................... 13
20.15. TEST DE LAS FUNCIONES. ............................................................................................................. 15
EJERCICIOS. ............................................................................................................................................ 16
E20.1. ................................................................................................................................................ 16
REFERENCIAS. ........................................................................................................................................ 16
NDICE GENERAL. ................................................................................................................................... 17
NDICE DE FIGURAS................................................................................................................................. 17
ndice de figuras.
FIGURA 20.1. MEZCLA DE TRAYECTOS DERECHOS DE DOS HEAPS. ............................................................... 1
FIGURA 20.2. MEZCLA E INTERCAMBIO DE HIJOS EN EL TRAYECTO.............................................................. 2
FIGURA 20.3. MEZCLA E INTERCAMBIO DE HIJOS EN EL TRAYECTO.............................................................. 2
FIGURA 20.4. INICIO DE LA MEZCLA CON INTERCAMBIO. ............................................................................. 3
FIGURA 20.5. HEAP CON UN ELEMENTO. ...................................................................................................... 3
FIGURA 20.6. PASO POR REFERENCIA A LA COLA DE PRIORIDAD SKEW. ....................................................... 5
FIGURA 20.7. MEZCLA DE TRAYECTOS DERECHOS DE DOS HEAPS. ............................................................... 7
FIGURA 20.8. MEZCLA BOTTOM-UP DE LOS HEAPS DE LA FIGURA 20.7. ....................................................... 7
FIGURA 20.9. RBOL DE PRIORIDAD Y SKEW BOTTOM-UP EQUIVALENTE. .................................................... 8
FIGURA 20.10. ENDEREZANDO PUNTEROS Y REPRESENTACIN POR LISTAS. ................................................ 8
FIGURA 20.11. INSERCIN DE ELEMENTO CON MENOR PRIORIDAD QUE LA RAZ. ......................................... 9
FIGURA 20.12. INSERCIN DE ELEMENTO MAYOR O IGUAL QUE EL PRIMERO DE LA LISTA DERECHA. ........... 9
FIGURA 20.13. INSERCIN DE ELEMENTO 6, MENOR QUE EL PRIMERO DE LA LISTA DERECHA. ................... 10
FIGURA 20.14. INSERCIN DE ELEMENTO 4, MENOR QUE EL PRIMERO DE LA LISTA DERECHA. ................... 11
FIGURA 20.15. LAZO DE MEZCLA E INTERCAMBIO. .................................................................................... 12
FIGURA 20.16. DESPUS DE LA ACTUALIZACIN DE CINCO PUNTEROS. ...................................................... 12
20-01-2010