Une caractéristique particulière d'un HashMap est que contrairement, disons, aux arbres équilibrés, son comportement est probabiliste. Dans ces cas, il serait généralement plus utile de parler de complexité en termes de probabilité qu'un événement du pire des cas se produise. Pour une carte de hachage, c'est bien sûr le cas d'une collision par rapport au niveau de remplissage de la carte. Une collision est assez facile à estimer.
p collision = n / capacité
Ainsi, une carte de hachage avec même un nombre modeste d'éléments est susceptible de connaître au moins une collision. La notation Big O nous permet de faire quelque chose de plus convaincant. Observez que pour toute constante fixe arbitraire k.
O (n) = O (k * n)
Nous pouvons utiliser cette fonctionnalité pour améliorer les performances de la carte de hachage. On pourrait plutôt penser à la probabilité d'au plus 2 collisions.
p collision x 2 = (n / capacité) 2
C'est beaucoup plus bas. Étant donné que le coût de gestion d'une collision supplémentaire n'est pas pertinent pour les performances de Big O, nous avons trouvé un moyen d'améliorer les performances sans réellement changer l'algorithme! Nous pouvons généraliser ceci pour
p collision xk = (n / capacité) k
Et maintenant, nous pouvons ignorer un certain nombre arbitraire de collisions et nous retrouver avec une probabilité minime de plus de collisions que ce que nous comptons. Vous pouvez obtenir la probabilité à un niveau arbitrairement minuscule en choisissant le k correct, le tout sans modifier l'implémentation réelle de l'algorithme.
Nous en parlons en disant que la carte de hachage a un accès O (1) avec une probabilité élevée