Una característica particular de un HashMap es que, a diferencia de, por ejemplo, árboles equilibrados, su comportamiento es probabilístico. En estos casos, generalmente es más útil hablar sobre la complejidad en términos de la probabilidad de que ocurra el peor de los casos. Para un mapa hash, ese es el caso de una colisión con respecto a qué tan completo está el mapa. Una colisión es bastante fácil de estimar.
p colisión = n/capacidad
Así, un mapa hash, incluso con un modesto número de elementos es bastante probable que experimentar al menos una colisión. La notación Big O nos permite hacer algo más convincente. Observe eso para cualquier constante arbitraria, fija k.
O (n) = O (k * n)
Podemos utilizar esta función para mejorar el rendimiento de la correlación hash. En cambio, podríamos pensar en la probabilidad de un máximo de 2 colisiones.
p colisión x 2 = (n/capacidad)
Esto es mucho menor. Como el costo de manejar una colisión extra es irrelevante para el rendimiento de Big O, ¡hemos encontrado una manera de mejorar el rendimiento sin cambiar realmente el algoritmo! Podemos generalzie esto a
p colisión xk = (n/capacidad) k
Y ahora podemos pasar por alto un número arbitrario de colisiones y terminar con infinitamente pequeña probabilidad de más colisiones de las que estamos contabilizando. Puede obtener la probabilidad de un nivel arbitrariamente pequeño eligiendo la k correcta, todo sin alterar la implementación real del algoritmo.
Hablamos de esto diciendo que el hash-mapa tiene O (1) Acceso con alta probabilidad
La notación Big O le da un límite superior para el tipo particular de análisis que está haciendo. Aún debe especificar si le interesan el peor de los casos, el promedio de casos, etc. –
Sé que esta podría no ser una respuesta, pero recuerdo que Wikipedia tiene un [muy buen artículo] (http://en.wikipedia.org/wiki/Hash_table) sobre esto. No te pierdas la sección [análisis de rendimiento] (http://en.wikipedia.org/wiki/Hash_table#Performance_analysis) –