Sobes.tech
Junior — Middle

¿Puede explicar el principio del método de doble hash para resolver colisiones en tablas hash?

sobes.tech AI

Respuesta de la IA

El método de doble hash es una forma de resolver colisiones en tablas hash, en la que cuando ocurre una colisión se calcula un segundo hash, y el siguiente índice para buscar el elemento se determina con este segundo hash.

Idea:

  • Hay dos funciones hash: h1(key) y h2(key).

  • Al insertar o buscar un elemento, primero calculamos h1(key) — el índice inicial.

  • Si la posición está ocupada (colisión), el siguiente índice se calcula con la fórmula:

    índice = (h1(key) + i * h2(key)) mod tamaño_tabla, donde i es el número de intentos (0,1,2,...)

Esto permite evitar colisiones desplazándose por la tabla con un paso que depende de la clave, lo que reduce la agrupación en comparación con la sondeo lineal.

Ejemplo en Go:

func dobleHashing(clave int, i int, tamañoTabla int) int {
    h1 := clave % tamañoTabla
    h2 := 1 + (clave % (tamañoTabla - 1))
    return (h1 + i*h2) % tamañoTabla
}

Aquí, h2 siempre no es cero y garantiza que recorreremos toda la tabla si es necesario.