- Entender una función hash
- Visualizar colisiones
- Distinguir promedio de peor caso
De texto a índice
La función hash debe ser determinista y distribuir claves. El módulo ajusta el resultado a la cantidad de buckets.
function hash(key, size) {
let total = 0;
for (const char of key) total += char.charCodeAt(0);
return total % size;
}Dos claves, un bucket
Una colisión no es un error: es parte del diseño. Separate chaining guarda una pequeña colección dentro de cada bucket; open addressing busca otra posición.
- Más buckets reducen colisiones y usan más memoria.
- Una mala función concentra claves.
- El factor de carga indica cuándo conviene redimensionar.
En producto: usá Map
Implementar la tabla enseña el concepto. En una aplicación JavaScript, Map ya maneja identidad, crecimiento y colisiones de forma robusta.
Provocá una colisión
Con cuatro buckets, buscá dos palabras que terminen en el mismo índice con la función del ejemplo.
Mostrar una pista
Cambiá el orden de letras: la suma simple tiene limitaciones evidentes.