stringtranslate.com

Sondeo cuadrático

El sondeo cuadrático es un esquema de direccionamiento abierto en programación informática para resolver colisiones de hash en tablas hash . El sondeo cuadrático funciona tomando el índice hash original y sumando valores sucesivos de un polinomio cuadrático arbitrario hasta que se encuentra una ranura abierta.

Un ejemplo de secuencia que utiliza sondeo cuadrático es:

El sondeo cuadrático se recomienda a menudo como una alternativa al sondeo lineal porque implica menos agrupamiento . [1] El sondeo cuadrático muestra una mejor localidad de referencia que muchas otras tablas hash como el encadenamiento ; sin embargo, para las consultas, el sondeo cuadrático no tiene una localidad tan buena como el sondeo lineal , lo que hace que este último sea más rápido en algunas configuraciones. [2]

El sondeo cuadrático fue introducido por primera vez por Ward Douglas Maurer en 1968. [3]

Función cuadrática

Sea h ( k ) una función hash que asigna un elemento k a un entero en [0,  m −1], donde m es el tamaño de la tabla. Sea la i -ésima posición de la sonda para un valor k dada por la función

donde c 2 ≠ 0 (Si c 2 = 0, entonces h ( k , i ) se degrada a una sonda lineal ). Para una tabla hash dada , los valores de c 1 y c 2 permanecen constantes.

Ejemplos:

uint64_t roundUp2 ( uint64_t v ){ v -- ; v |= v >> 1 ; v |= v >> 2 ; v |= v >> 4 ; v |= v >> 8 ; v |= v >> 16 ; v |= v >> 32 ; v ++ ; volver v ; }                           

Limitaciones

Signos alternados

Si el signo del desplazamiento se alterna (p. ej. +1, −4, +9, −16, etc.), y si el número de cubos es un número primo congruente con 3 módulo 4 (p. ej. 3, 7, 11, 19, 23, 31, etc.), entonces los primeros desplazamientos serán únicos (módulo ). [ se necesita más explicación ] En otras palabras, se obtiene una permutación de 0 a , y, en consecuencia, siempre se encontrará un cubo libre mientras exista al menos uno.

Referencias

  1. ^ Cormen, Thomas H.; Leiserson, Charles Eric; Rivest, Ronald Linn; Stein, Clifford (2009). Introducción a los algoritmos (3.ª ed.). Cambridge, Massachusetts Londres, Inglaterra: MIT Press. ISBN 978-0-262-53305-8.
  2. ^ Richter, Stefan; Alvarez, Victor; Dittrich, Jens (2015). "Un análisis de siete dimensiones de los métodos de hash y sus implicaciones en el procesamiento de consultas". Actas de la Fundación VLDB . 9 (3): 96–107. doi :10.14778/2850583.2850585. ISSN  2150-8097.
  3. ^ Maurer, WD (1968). "Técnica de programación: un código hash mejorado para almacenamiento disperso". Comunicaciones de la ACM . 11 (1): 35–38. doi : 10.1145/362851.362880 . ISSN  0001-0782.
  4. ^ El arte de la informática Volumen 3 Ordenación y búsqueda, Capítulo 6.4, ejercicio 20, Donald Knuth

Enlaces externos