Adloun

Le facteur de charge, et ce qu'il permet de prévoir

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 12 — Tableaux associatifs, hachage et sérialisation

Énoncé

Une table à chaînage contient clés dans cases, la fonction de hachage répartissant uniformément.

Corrigé

1. Les cases vides. Une case donnée reçoit une clé donnée avec probabilité ; elle reste vide après tirages indépendants avec probabilité , qui vaut à la limite, où . Le nombre moyen de cases vides est donc

Le cas mérite d'être retenu : même en dimensionnant la table exactement au nombre de clés, des cases restent vides — et donc des clés se pressent ailleurs. On ne remplit jamais une table de hachage uniformément.

2. Le coût des recherches.

Dans les deux cas, le coût dépend de et pas de . C'est tout le principe : on redimensionne dès que dépasse un seuil, et le coût reste borné. La recopie coûte , mais elle est amortie sur les insertions qui l'ont précédée — exactement le calcul du tableau dynamique du chapitre chap:algo-prog.

3. Les mesures. Table à chaînage écrite en C, mots, , donc :

mesuréprévu
recherche fructueuse sondages
recherche infructueuse sondages
plus longue chaîne---

Et sur le remplissage, par tirage uniforme :

cases vides mesurées
(60{,}6%) (60{,}7%)
(36{,}8%) (36{,}8%)
(1{,}2%) (1{,}5%)

La théorie tombe juste à quatre chiffres. Ce n'est pas une coïncidence, c'est ce que veut dire « en moyenne » : ces formules décrivent le comportement d'une table dont la fonction de hachage disperse bien, et rien d'autre. Avec h_somme de l'exercice précédent, elles seraient fausses d'un facteur .

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.