Hash doble

Cuando doble método del valor de propagación o doble dispersión ( Inglés doble dispersión ) es un método para realizar una cerrada método de hash . En los procedimientos de hash cerrados, se intenta acomodar a los desertores en la tabla hash en lugar de almacenarlos dentro de la celda (por ejemplo, como una lista). (Los procedimientos de hash abiertos pueden asignar entradas dos veces y, por lo tanto, no requieren ningún sondeo). Atención: Como se encuentra en la tabla hash de artículos en "Variantes del procedimiento hash", los términos "hash abierto" o "hash cerrado" se utilizan exactamente de la manera opuesta.

Para hacer esto, el doble hash usa una función de sondeo que incluye una función de hash secundaria, p. B. , y que se utiliza si el índice calculado por la función hash primaria ya está ocupado.

La función hash completa entonces lee:, donde j es el número de índices ya "probados", i. Esto significa que j aumenta en 1 cada vez que ya se utiliza un índice.

Se supone que la función de sondeo forma una permutación de los índices de la tabla hash.

La secuencia de funciones hash que ahora se forman usando y se ve así:

El costo de este método está cerca del costo del hash ideal.

Independencia de las funciones hash

El hash doble utiliza dos funciones hash independientes y . Estos se denominan independientes si la probabilidad de una llamada doble colisión, es decir, H. , es menor o igual que, y por lo tanto mínimo, donde es el tamaño de la matriz.

Ejemplos

Funciones de ejemplo

Tamaño de la matriz: m

Índices: {0; m-1}

Función hash principal: ( método de división del resto )

Función hash secundaria:

Función exploratoria:

Función de doble hash completa:

Ejemplo de cálculo

Tamaño de la matriz: m = 7

Funciones hash
Función exploratoria

Tabla de picadillo:

k 10 19 31 22 14 dieciséis
H 3 5 3 1 0 2
H ' 1 5 2 3 5 2

La matriz se llenó con la ayuda de la tabla hash y la función de sonda:

0 1 2 3 Cuarto 5 Sexto
31 22 dieciséis 10 - 19 14

Explicación utilizando el ejemplo :

y no generan una colisión y por lo tanto no necesitan la función de doble hash . El índice de la función hash se puede leer aquí. crea una colisión en la matriz en el punto , por lo que ahora usa la función doble hash con :

El punto crea una colisión de nuevo, por lo que la siguiente se llama con:

El puesto está vacante y por tanto recibe el contenido .

enlaces web