Saltar al contenido

Una clave que cambia

Una tabla guarda la clave [1, 2] (una lista) con hash calculado a partir de su contenido, en la cubeta hash([1, 2]) mod 8 = 3. Después, el programa añade un 3 a esa misma lista, que ahora es [1, 2, 3], con hash mod 8 = 6. La tabla no se entera: la clave sigue físicamente en la cubeta 3.

Una clave que cambia dentro de la tablaTres pasos sobre una tabla de 8 cubetas. Paso 1: la clave [1, 2] se guarda en la cubeta 3. Paso 2: se añade un 3 a esa lista, que pasa a ser [1, 2, 3]; sigue guardada en la cubeta 3, pero su hash mod 8 ahora es 6. Paso 3: buscar [1, 2, 3] mira la cubeta 6, que está vacía, y responde que no está.Paso 1 de 3: insertas [1, 2]0123[1, 2]*4567hash mod 8 = 3Paso 2 de 3: la clave cambia0123[1, 2, 3]4567ahora hash mod 8 = 6Paso 3 de 3: buscas [1, 2, 3]0123[1, 2, 3]4567mira la cubeta 6: vacíaresponde «no está»
La clave nunca se movió de la cubeta 3; lo que cambió fue el lugar donde la busca el hash.
Una tabla guarda la lista [4, 5] como clave (la tabla guarda la lista, no una copia), con hash calculado de su contenido: cubeta 2. El programa añade un 6 a esa lista, que ahora es [4, 5, 6] y daría la cubeta 7. ¿Qué pasa al buscar [4, 5, 6] y al buscar [4, 5]?