132     102 15 5 257   558   12
0 1 2 3 4 5 6 7 8 9 10

FIGURA 1
Funciones de Asociatividad [Hash Functions]

Suponga que tenemos celdas en la memoria de la computadora con índices del 0 al 10 (ver Figura 1). Deseamos almacenar y recuperar arbitrariamente enteros no negativos en estas celdas. Un acercamiento es usar una función de asociatividad. Una función de asociatividad toma un dato elemento para ser almacenado o recuperado y computa la primera opción para una localidad del elemento. Por ejemplo, para nuestro problema, almacenar o recuperar el número n, debemos tomar la primera opción para una localidad, residuo de dividir n entre 11 (casi siempre se opta por un número primo como divisor). Nuestra función de asociatividad viene a ser

a(n)  =  residuo de dividir n entre 11.

La Figura 1 muestra el resultado de almacenar 15, 558, 32, 132, 102 y 5, en orden, en celdas inicialmente vacías.
     Ahora suponga que deseamos almacenar 257. Siendo a(257)  =  4, 257 debe ser almacenado en la localidad 4; sin embargo, esta posición ya está ocupada. En este caso decimos que una colisión ha ocurrido. Más precisamente, una colisión ocurre para una función de asociatividad A si A(x)  =  A(y), pero x  ¹  (y). Para manejar colisiones, una política para resolución de colisión es requerida. Una política simple para resolución de colisión es encontrar la más alta (con 0 asumido como continuación de 10) celda desocupada. Si usamos esta política para resolución de colisión, debemos almacenar 257 en la localidad 6 (ver Figura 1).
     Si deseamos localizar y a almacenar un valor n computamos m  =  a(n) y empezamos viendo una localidad m. Si n no está en esta posición, debemos proceder a la siguiente posición más alta, y así en adelante. Si alcanzamos una celda vacía o regresamos a nuestra posición original, concluimos que n no está presente; de otra manera, obtenemos la posición de n.