stringtranslate.com

Árbol de búsqueda con los dedos

En informática, los árboles de búsqueda digital son un tipo de árbol de búsqueda binario que mantiene punteros a nodos interiores, llamados dedos . Los dedos aceleran las búsquedas, inserciones y eliminaciones de elementos cercanos a los dedos, dando búsquedas O (log n) amortizadas e inserciones y eliminaciones O (1) amortizadas. No debe confundirse con un árbol de dedos ni con un árbol de dispersión , aunque ambos pueden usarse para implementar árboles de búsqueda de dedos.

Guibas et al. [1] introdujo árboles de búsqueda dactilar, basándose en árboles B. La versión original admite búsquedas dactilares en tiempo O (log d), donde d es el número de elementos entre el dedo y el objetivo de búsqueda. Las actualizaciones toman O(1) tiempo, cuando solo se mantienen O(1) dedos móviles. Mover un dedo p posiciones requiere tiempo O(log p). Huddleston y Mehlhorn refinaron esta idea como árboles B vinculados por niveles. [2]

Tsakalidis propuso una versión basada en árboles AVL que facilita la búsqueda desde los extremos del árbol; se puede utilizar para implementar una estructura de datos con varios dedos mediante el uso de varios de dichos árboles. [3]

Para realizar una búsqueda con el dedo en un árbol binario, la forma ideal es comenzar desde el dedo y buscar hacia arriba hasta la raíz, hasta llegar al ancestro menos común , [4] [5] también llamado nodo giratorio , [3] de x e y, y luego bajamos hasta encontrar el elemento que estamos buscando. Determinar si un nodo es el antepasado de otro no es trivial.

Un ejemplo de cómo realizar una búsqueda dactilar en un trampa.

Treaps , una estructura de árbol aleatoria propuesta por Seidel y Aragón, [5] tiene la propiedad de que la longitud del camino esperado de dos elementos de distancia d es O(log d ). Para la búsqueda digital, propusieron agregar punteros para determinar rápidamente el ancestro menos común (LCA), o mantener en cada nodo los valores mínimo y máximo de su subárbol.

Se ha escrito un capítulo de libro que cubre en profundidad los árboles de búsqueda dactilar. [4] En el cual, Brodal sugirió un algoritmo para realizar búsquedas dactilares en trampas en tiempo O(log d), sin necesidad de ninguna información contable adicional; este algoritmo logra esto buscando simultáneamente hacia abajo desde el último LCA candidato.

Ver también

Referencias

  1. ^ Guibas, LJ (1977). "Una nueva representación para listas lineales". Actas del noveno simposio anual de ACM sobre teoría de la informática - STOC '77 . págs. 49–60. CiteSeerX  10.1.1.527.7294 . doi :10.1145/800105.803395. S2CID  2414154.
  2. ^ Huddleston; Mehlhorn, Kurt (1982). "Una nueva estructura de datos para representar listas ordenadas". Acta Informática . 17 (2): 157–184. doi :10.1007/BF00288968. S2CID  10397918.
  3. ^ ab Tsakalidis, Athanasios K. (1985). "Árboles AVL para búsqueda localizada". Información y Control . 67 (1–3): 173–194. doi : 10.1016/S0019-9958(85)80034-6 .
  4. ^ ab Brodal, Gerth Stølting (2005). "11. Búsqueda con el dedo" (PDF) . En Mehta, Dinesh P.; Sahni, Sartaj (eds.). Manual de estructuras y aplicaciones de datos . Chapman y Hall / Prensa CRC . ISBN 978-1584884354. Consultado el 1 de enero de 2013 .
  5. ^ ab Seidel, R .; Aragón, CR (1996). "Árboles de búsqueda aleatoria". Algorítmica . 16 (4–5): 464–497. CiteSeerX 10.1.1.122.6185 . doi :10.1007/BF01940876. S2CID  9370259.