La statistique des alvéoles
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 17 — Les dictionnaires dévoilés : le hachage
Énoncé
Réaliser une simulation en insérant clés aléatoires dans une table comportant alvéoles (facteur de charge de ). Écrire un script pour mesurer la proportion d'alvéoles vides, la longueur moyenne des chaînes occupées et la longueur maximale d'alvéole. Comparer le résultat obtenu avec les prédictions théoriques.
Corrigé
import random
m = 1000
n = 1000
longueurs = [0] * m
# Simulation de l'insertion de n clés distribuées au hasard
for _ in range(n):
indice_aleatoire = random.randrange(m)
longueurs[indice_aleatoire] += 1
# Statistiques
nb_vides = longueurs.count(0)
proport_vides = nb_vides / m
alv_occupees = [l for l in longueurs if l > 0]
moyenne_non_vides = sum(alv_occupees) / len(alv_occupees)
longueur_max = max(longueurs)
print(f"Proportion d'alvéoles vides : {proport_vides * 100:.2f}%")
print(f"Longueur moyenne des chaînes non vides : {moyenne_non_vides:.2f}")
print(f"Longueur maximale observée : {longueur_max}")
Analyses et interprétations :
- La proportion d'alvéoles vides mesurée tourne autour de . C'est en parfait accord avec la théorie de la distribution de Poisson et la limite .
- La longueur moyenne des chaînes non vides est d'environ . Ainsi, l'accès moyen à une clé ne demande qu'à peine plus d'une comparaison.
- La longueur maximale oscille généralement entre et . Même pour les éléments les moins bien répartis, la recherche reste extrêmement rapide.
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.