En varias implementaciones de tablas hash, he visto "números mágicos" para cuando una tabla hash mutable debe cambiar de tamaño (crecer). Por lo general, este número está entre el 65% y el 80% de los valores agregados por ranuras asignadas. Estoy asumiendo que la compensación es que un número más alto dará la posibilidad de más colisiones y un número más bajo menos a expensas de usar más memoria.cuándo cambiar el tamaño de una tabla hash?
Mi pregunta es ¿cómo se llega a este número?
¿Es arbitrario? basado en las pruebas? basado en alguna otra lógica?
papel interesante –
¿Cómo disminuiría el tamaño el número de colisiones? La función hash para la matriz más larga seguirá siendo la misma, por lo que las colisiones seguirán ocurriendo para la misma clave, ¿verdad? –
@Core_Dumped - sí, la función hash se mantiene igual y el valor hash de los elementos en la tabla permanece igual. Pero la longitud de los segmentos cambia y, por lo tanto, en qué elementos del contenedor residen. Cambiar el tamaño significa cambiar la longitud de la matriz (generalmente) de cubos, luego volver a baldear todos los elementos en la tabla hash. La longitud de la cadena por cubo disminuye en promedio, lo que significa menos colisiones. –