Articulo de referencia

Hashing estático

El hash estático es una forma de hash en la que las búsquedas se realizan sobre un conjunto de diccionarios finalizado (todos los objetos del diccionario son definitivos y no ca...

El hash estático es una forma de hash en la que las búsquedas se realizan sobre un conjunto de diccionarios finalizado (todos los objetos del diccionario son definitivos y no cambian).

Uso

Solicitud

Dado que el hash estático requiere que la base de datos , sus objetos y referencias permanezcan iguales, sus aplicaciones son limitadas. Las bases de datos que contienen información que cambia con poca frecuencia también son aptas, ya que solo requeriría un rehash completo de toda la base de datos en raras ocasiones. Ejemplos de esto incluyen conjuntos de palabras y definiciones de idiomas específicos, conjuntos de datos importantes para el personal de una organización, etc. [ 1 ]

Hashing perfecto

El hash perfecto es un modelo de hash en el que cualquier conjunto denorte{\displaystyle n}Los elementos se pueden almacenar en una tabla hash de igual tamaño y se pueden realizar búsquedas en tiempo constante. Fue descubierto y analizado específicamente por Fredman, Komlos y Szemeredi (1984) y, por lo tanto, se le ha apodado "hashing FKS". [ 2 ]

Hashing FKS

El hash FKS utiliza una tabla hash con dos niveles en la que el nivel superior contienenorte{\displaystyle n}cubetas que contienen cada una su propia tabla hash. El hash FKS requiere que, si se producen colisiones , estas solo ocurran en el nivel superior.

Implementación

El nivel superior contiene una función hash creada aleatoriamente,h(incógnita){\displaystyle h(x)}, que se ajusta a las restricciones de una función hash de Carter y Wegman del hash universal . Habiendo hecho esto, el nivel superior deberá contenernorte{\displaystyle n}cubos etiquetadosk1,k2,k3,...,knorte{\displaystyle k_{1},k_{2},k_{3},...,k_{n}}Siguiendo este patrón, todos los cubos contienen una tabla hash de tamañosi{\displaystyle s_{i}}y una función hash respectivahi(incógnita){\displaystyle h_{i}(x)}La función hash se decidirá mediante la configuraciónsi{\displaystyle s_{i}}aki2{\displaystyle k_{i}^{2}}y recorriendo aleatoriamente las funciones hasta que no haya colisiones. Esto se puede hacer en tiempo constante.

Actuación

Porque hay(norte2){\displaystyle n \choose 2}pares de elementos, de los cuales tienen una probabilidad de colisión igual a1/norte{\displaystyle 1/n}, el hash FKS puede esperar tener estrictamente menos denorte/2{\displaystyle n/2}colisiones. Basándose en este hecho y en que cadah(incógnita){\displaystyle h(x)}se seleccionó de manera que el número de colisiones fuera como máximonorte/2{\displaystyle n/2}, el tamaño de cada mesa en el nivel inferior no será mayor que2norte{\displaystyle 2n}.

Véase también

Referencias

  1. Daniel Roche (2013). SI486D: Aleatoriedad en computación, unidad de hash . Academia Naval de los Estados Unidos, Departamento de Ciencias de la Computación.
  2. ^ Michael Fredman; János Komlós; Endre Szemerédi (1984). Almacenamiento de una tabla dispersa con O(1) tiempo de acceso al peor caso . Revista de la ACM (Volumen 31, Número 3).