Splay tree (Árbol
biselado)
Árbol Splay
Un Árbol biselado o Árbol Splay es un Árbol binario de búsqueda auto-balanceable,
con la propiedad adicional de que a los elementos accedidos recientemente se
accederá más rápidamente en accesos posteriores. Realiza operaciones básicas
como pueden ser la inserción, la búsqueda y el borrado en un tiempo del orden de
O(log n).
Ventajas
• Los nodos accedidos con más frecuencia se moverán cerca de la raíz donde
podrán ser accedidos más rápidamente.
• Tienen la ventaja de ser consideradamente más simples de implementar que
otros árboles binarios de búsqueda auto-balanceados, como pueden ser los
árboles Rojo-Negro o los árboles AVL, mientras que su rendimiento en el caso
promedio es igual de eficiente.
• No necesitan almacenar ninguna otra información adicional aparte de los propios
datos, minimizando de este modo los requerimientos de memoria.
Operaciones
Búsqueda
• La búsqueda de un valor de clave en un árbol biselado tiene la
característica particular de que modifica la estructura del árbol.
• El descenso se efectúa de la misma manera que un árbol binario de
búsqueda, pero si se encuentra un nodo cuyo valor de clave coincide
con el buscado, se realiza una biselación de ese nodo.
• Si no se encuentra, el nodo biselado será aquel que visitamos por
último antes de descartar la búsqueda.
Inserción
• Es igual que en el árbol binario de búsqueda con la
salvedad de que se realiza una biselación sobre el
nodo insertado.
• Además, si el valor de clave a insertar ya existe
en el árbol, se bisela el nodo que lo contiene.
Extracción
• Esta operación requiere dos biselaciones. Primero se busca el
nodo que contiene el valor de clave que se debe extraer.
• Si no se encuentra, el árbol es biselado en el último nodo
examinado y no se realiza ninguna acción adicional.
• Si se encuentra, el nodo se bisela y se elimina. Con esto el árbol
se queda separado en dos mitades, por lo que hay que seleccionar
un nodo que haga las veces de raíz.
• Al ser un árbol binario de búsqueda y estar todos los valores
de clave ordenados, podemos elegir como raíz el mayor valor
del subárbol izquierdo o el menor valor de clave del derecho.
Operación de Biselación
• Esta operación traslada un nodo x, que es el nodo al que se accede, a la raíz .
CASO 1:
Si x es hijo izquierdo de p entonces realizaremos una rotación simple derecha.
En caso de que x sea el derecho la rotación que deberemos realizar es simple
izquierda.
CASO 2:
Si x es hijo y nieto izquierdo de p y q, respectivamente.
Entonces debemos realizar rotación doble a la derecha, en caso
de que x sea hijo y nieto derecho de p y q la rotación será
doble izquierda.
CASO 3:
En caso de que x sea hijo izquierdo de p y nieto derecho de q
realizaremos una rotación simple derecha en el borde entre x y p
y otra simple izquierda entre x y q. En caso contrario, x sea
hijo derecho y nieto izquierdo de q, la rotaciones simples será
izquierda y después derecha.
Bibliografia
• Sleator, D. D., & Tarjan, R. E. (1985). Self-adjusting binary search trees. Journal of
the ACM (JACM), 32(3), 652-686.
• Link: https://dl.acm.org/doi/10.1145/3828.3835
• Tarjan, R. E. (1983). Data Structures and Network Algorithms. Society for
Industrial and Applied Mathematics. Capítulo 9: Splay Trees.
• Link: https://www.cs.princeton.edu/courses/archive/fall03/cs528/handouts/lec-6-
splay.pdf

Splay tree

  • 1.
  • 2.
    Árbol Splay Un Árbolbiselado o Árbol Splay es un Árbol binario de búsqueda auto-balanceable, con la propiedad adicional de que a los elementos accedidos recientemente se accederá más rápidamente en accesos posteriores. Realiza operaciones básicas como pueden ser la inserción, la búsqueda y el borrado en un tiempo del orden de O(log n).
  • 3.
    Ventajas • Los nodosaccedidos con más frecuencia se moverán cerca de la raíz donde podrán ser accedidos más rápidamente. • Tienen la ventaja de ser consideradamente más simples de implementar que otros árboles binarios de búsqueda auto-balanceados, como pueden ser los árboles Rojo-Negro o los árboles AVL, mientras que su rendimiento en el caso promedio es igual de eficiente. • No necesitan almacenar ninguna otra información adicional aparte de los propios datos, minimizando de este modo los requerimientos de memoria.
  • 4.
    Operaciones Búsqueda • La búsquedade un valor de clave en un árbol biselado tiene la característica particular de que modifica la estructura del árbol. • El descenso se efectúa de la misma manera que un árbol binario de búsqueda, pero si se encuentra un nodo cuyo valor de clave coincide con el buscado, se realiza una biselación de ese nodo. • Si no se encuentra, el nodo biselado será aquel que visitamos por último antes de descartar la búsqueda.
  • 5.
    Inserción • Es igualque en el árbol binario de búsqueda con la salvedad de que se realiza una biselación sobre el nodo insertado. • Además, si el valor de clave a insertar ya existe en el árbol, se bisela el nodo que lo contiene.
  • 6.
    Extracción • Esta operaciónrequiere dos biselaciones. Primero se busca el nodo que contiene el valor de clave que se debe extraer. • Si no se encuentra, el árbol es biselado en el último nodo examinado y no se realiza ninguna acción adicional. • Si se encuentra, el nodo se bisela y se elimina. Con esto el árbol se queda separado en dos mitades, por lo que hay que seleccionar un nodo que haga las veces de raíz. • Al ser un árbol binario de búsqueda y estar todos los valores de clave ordenados, podemos elegir como raíz el mayor valor del subárbol izquierdo o el menor valor de clave del derecho.
  • 7.
    Operación de Biselación •Esta operación traslada un nodo x, que es el nodo al que se accede, a la raíz . CASO 1: Si x es hijo izquierdo de p entonces realizaremos una rotación simple derecha. En caso de que x sea el derecho la rotación que deberemos realizar es simple izquierda.
  • 8.
    CASO 2: Si xes hijo y nieto izquierdo de p y q, respectivamente. Entonces debemos realizar rotación doble a la derecha, en caso de que x sea hijo y nieto derecho de p y q la rotación será doble izquierda.
  • 9.
    CASO 3: En casode que x sea hijo izquierdo de p y nieto derecho de q realizaremos una rotación simple derecha en el borde entre x y p y otra simple izquierda entre x y q. En caso contrario, x sea hijo derecho y nieto izquierdo de q, la rotaciones simples será izquierda y después derecha.
  • 10.
    Bibliografia • Sleator, D.D., & Tarjan, R. E. (1985). Self-adjusting binary search trees. Journal of the ACM (JACM), 32(3), 652-686. • Link: https://dl.acm.org/doi/10.1145/3828.3835 • Tarjan, R. E. (1983). Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics. Capítulo 9: Splay Trees. • Link: https://www.cs.princeton.edu/courses/archive/fall03/cs528/handouts/lec-6- splay.pdf