De acuerdo con Wikipedia:
En informática, una función hash perfecta para un conjunto S es una función hash que asigna elementos distintos en S a un conjunto de enteros, sin colisiones. En términos matemáticos, es una función inyectiva total.
¿Por qué querrías un mapeo uno a uno de elementos establecidos a enteros?
- ¿Dónde puedo encontrar a alguien dispuesto a enseñarme estructura de datos y algoritmos de forma gratuita o a un costo muy barato?
- ¿Cuáles son las situaciones en las que uno puede usar ArrayList y otras situaciones para usar solo LinkedList?
- ¿Cuál es una explicación intuitiva del algoritmo de optimización de aprendizaje profundo de Adam?
- ¿Por qué Python es realmente más lento en algunos cálculos que Java? Las profundidades recursivas también son limitadas.
- ¿Qué necesitas saber para aprender algoritmos? Probé los algoritmos gratuitos de Coursera y el curso de estructuras de datos de Princeton y me perdí por completo.
Porque cuando está construyendo una tabla hash, asignar dos elementos al mismo número significa que intentará poner dos cosas diferentes en la misma ranura. Esto hace que la inserción y recuperación de elementos con o cerca de este valor hash sea un poco más lenta. En el peor de los casos, podría convertir lo que debería ser una búsqueda de tiempo constante en una de tiempo lineal, aunque incluso las colisiones en el peor de los casos pueden ralentizar las cosas lo suficiente como para importar en un código de tiempo crítico.