¿Cuál es el propósito del factor de carga en las tablas hash?

Una instancia de HashMap tiene dos parámetros que afectan su rendimiento: capacidad inicial y factor de carga. La capacidad es el número de cubos en la tabla hash, y la capacidad inicial es simplemente la capacidad en el momento en que se crea la tabla hash. El factor de carga es una medida de cuán llena se permite que llegue la tabla hash antes de que su capacidad aumente automáticamente. Cuando el número de entradas en la tabla hash excede el producto del factor de carga y la capacidad actual, la tabla hash se vuelve a aplicar (es decir, se reconstruyen las estructuras de datos internas) para que la tabla hash tenga aproximadamente el doble de la cantidad de cubos.

Como regla general, el factor de carga predeterminado (.75) ofrece una buena compensación entre los costos de tiempo y espacio. Los valores más altos disminuyen la sobrecarga de espacio pero aumentan el costo de búsqueda (reflejado en la mayoría de las operaciones de la clase HashMap, incluidas get y put). El número esperado de entradas en el mapa y su factor de carga deben tenerse en cuenta al establecer su capacidad inicial, para minimizar el número de operaciones de repetición. Si la capacidad inicial es mayor que el número máximo de entradas dividido por el factor de carga, nunca se realizarán operaciones de repetición.

Tomado directamente de la documentación y stackoverflow –

HashMap (Plataforma Java SE 6)

¿Cuál es la importancia del factor de carga en HashMap?

Cuando se usa el encadenamiento separado para la resolución de colisión en una tabla hash, el tiempo requerido para buscar / eliminar un elemento de la tabla es [matemática] O (n / m) [/ matemática], es decir, se escala linealmente con nuestro factor de carga.

Por lo tanto, no queremos que nuestro factor de carga sea demasiado alto antes de expandir la tabla, o de lo contrario aumentará el tiempo requerido para buscar o eliminar un elemento de nuestra tabla hash.

La lógica es similar cuando utilizamos sondeo lineal / cuadrático para la resolución de colisión, aunque los efectos del factor de carga son mucho más dramáticos. Para cada uno de estos, el número promedio de sondas requeridas para una búsqueda fallida en nuestra tabla hash aumentará exponencialmente a medida que nuestro factor de carga se acerque a 1, mientras que aumentará bastante lentamente en un enfoque de un factor de carga de 0.5.

Entonces, independientemente de nuestros medios de resolución de colisiones, esperar hasta que hayamos “llenado” nuestra tabla hash antes de aumentar su tamaño dará como resultado largas búsquedas.

More Interesting

¿Cuándo podrán los algoritmos de detección de imágenes filtrar imágenes ofensivas de manera confiable?

Cómo comenzar a aprender y explorar el campo de los Algoritmos de Big Data

¿Cuál de los siguientes libros es más adecuado para principiantes y más fácil de entender: CLRS o Algorithms by Sedgewick?

¿En qué tipos de gráfico DFS y BFS producirán el mismo árbol (misma fuente) independientemente de la secuencia de visitas de los vecinos?

¿Qué es mejor para la búsqueda binaria, la matriz ordenada o la lista vinculada?

¿Cuál es la forma más eficiente para que un programador principiante entienda las tablas hash y los intentos?

¿Cuáles son algunos algoritmos utilizados por las grandes empresas (como Amazon) para determinar de manera eficiente desde qué almacén se debe cumplir un pedido?

¿Los desarrolladores de Google realmente usan conceptos como la notación O grande para determinar el tiempo de ejecución de un algoritmo en un proceso de codificación diario?

¿Cuáles son las principales diferencias, con ejemplos, entre un algoritmo de aprendizaje profundo y un algoritmo de aprendizaje de refuerzo?

¿Cómo podemos lograr O (nlogn) / O (n) para ThePalindrome (Topcoder SRM 427)?

¿Cuáles son todas las estructuras de datos que conoce? ¿Cuál de estos usas con frecuencia? Agrúpelos en "Básico" y "Avanzado".

¿Por qué mi código JavaScript muestra un error de bucle infinito en la línea 7? ¿Por qué no está eliminando los elementos de la matriz de entrada?

¿Qué algoritmo siguen las historias de Instagram para mostrar a los espectadores?

¿Es un mal hábito ejecutar algoritmos solo en un papel?

¿Cuáles son algunos problemas prácticos en los que no se puede evitar el uso de algoritmos con big-O muy grande?