A menudo se dice que la búsqueda de tabla hash funciona en tiempo constante: se calcula el valor hash, lo que le da un índice para una búsqueda de matriz. Sin embargo, esto ignora las colisiones; en el peor de los casos, todos los elementos caen en el mismo depósito y el tiempo de búsqueda se vuelve lineal ( ).
¿Existen condiciones en los datos que pueden hacer que la búsqueda de tablas hash sea realmente ? ¿Es eso solo en promedio, o puede una tabla hash tener O ( 1 ) peor búsqueda?
Nota: vengo desde la perspectiva de un programador aquí; cuando almaceno datos en una tabla hash, casi siempre son cadenas o algunas estructuras de datos compuestos, y los datos cambian durante la vida útil de la tabla hash. Entonces, aunque aprecio las respuestas sobre los hashes perfectos, son lindos pero anecdóticos y no prácticos desde mi punto de vista.
Seguimiento de PS: ¿Para qué tipo de datos son las operaciones de tabla hash O (1)?