Saltar al contenido

Modelo por capas

Función hash, cubetas y colisiones

Una tabla hash tiene un array de cubetas y una función hash: una función que convierte cualquier clave en un número entero. El índice de la cubeta es ese número reducido al tamaño de la tabla:

Texto
índice(clave) ← hash(clave) mod capacidad

Con capacidad 8 y hash(«ana») = 21, la clave va a la cubeta 21 mod 8 = 5.

Una clave llega a su cubetaA la izquierda, la clave «ana». Una flecha, marcada hash(«ana») = 21 y 21 mod 8 = 5, la lleva a la cubeta 5 de una tabla de 8 cubetas numeradas de 0 a 7. La cubeta 5, con el borde grueso, guarda ana; las demás están vacías.cubetas (capacidad 8)012345ana*67«ana»clavehash(«ana») = 21función hash21 mod 8 = 5
Clave, función hash, índice y cubeta: el índice sale del cálculo, no de una búsqueda.

La función hash tiene que dar siempre el mismo número para la misma clave, y repartir claves distintas lo más parejo posible.

Hay muchas más claves posibles que cubetas, así que dos claves distintas pueden dar el mismo índice: es una colisión. No es un error: es inevitable, y la tabla tiene que manejarlo.

Con capacidad 10, hash(«ana») = 47, hash(«luis») = 52 y hash(«eva») = 27. ¿Qué claves colisionan?