@@ -55,9 +55,9 @@ Initialiser dans la fonction `experiment_load_factor` des listes `insertion_time
6. A quoi sert la fonction `experiment_longest` ?
La fonction experiment_longest parcourt par une iteration, des nombres de 0 à 999, et stocke chaque valeurs
dans un dictionnaire avec la cle qui correspond au nombre sous la forme de chaine de caracteres.
A chaque fois qu'un élément est insérée dans le dictionnaire, le temps d'insertion est est mesurer et ajouté dans un graphe.
La fonction experiment_longest parcourt, par une itération, les nombres de 0 à 999 et stocke chaque valeur dans un dictionnaire
avec une clé correspondant au nombre sous forme de chaîne de caractères.
À chaque insertion d'un élément dans le dictionnaire, le temps d'insertion est mesuré et ajouté dans un histogramme.
## Visualisation des résultats
...
...
@@ -70,16 +70,26 @@ A chaque fois qu'un élément est insérée dans le dictionnaire, le temps d'ins
10. Commentez vos résultats.
7A : Ici, on observe le temps d'insertion de chaque éléments dans le dictionnaire pour un facteur de charge. Ici, nous avons fait une moyenne de temps
pour chaque facteur de charge, et nous l'avons représenté sur le graphique. Nous nous attendons à ce que le temps pour un petit facteur de charges soit plus petits que les autres.
Cependant, c'est l'inverse qui s'est produit, nous ne savons pas comment l'expliquer. Nous avons essayé de savoir, s'il y avait un biais, pour cela, nous avons utlisé la mediane au lieux de la moyenne,
mais nous avons obtenue les même résultats.
7B : Ici, le graphique, montre le nombre de réallocation de mémoire en fonction du facteurs de charges. On observe que les petit facteur de charges
n'ont pas besoins de beaucoup d'espace, et donc peut de réallocation. Cependant, les plus gros facteurs de charges nécessite beaucoup plus de place, du coup,
nous avons besoins de plus de réallocations. On peut aussi noté, que nous avons des plateaux dans notre graphique. En effet, étant donnée, qu'il faut mulitpliée la taille par deux,
il reste de la place, pour ainsi plus d'éléments. Du coup, on insère jusqu'à ce qu'on n'a plus de place, pour un certain facteur de charge et ensuite on redouble le nombre
de réallocation.
7C : Ici, pour ce graphique, on a
Histogramme.png :
7A : Ce graphique représente le temps d'insertion des éléments dans le dictionnaire en fonction du facteur de charge.
Nous avons calculé la moyenne du temps d'insertion pour chaque facteur de charge et l'avons représentée sur le graphique.
Nous nous attendions à ce que le temps d'insertion soit plus faible pour les petits facteurs de charge, mais nous avons observé l'inverse, sans pouvoir l'expliquer.
Nous avons cherché un éventuel biais en utilisant la médiane au lieu de la moyenne, mais les résultats sont restés identiques.
Nous pouvons cependant noter qu'un dictionnaire possède une taille initiale définie.
Lorsqu'un élément est ajouté, il faut parcourir le dictionnaire et trouver un emplacement libre, ce qui explique le temps d'insertion observé, qui est censé être plus grand avec le facteur de charge.
7B : Ce graphique illustre le nombre de réallocations de mémoire en fonction du facteur de charge.
On remarque que les petits facteurs de charge nécessitent peu d'espace, et donc peu de réallocations.
En revanche, pour les plus grands facteurs de charge, la mémoire requise augmente, entraînant davantage de réallocations.
On observe également des plateaux dans le graphique. En effet, la taille du dictionnaire double à chaque réallocation,
laissant un espace libre suffisant pour insérer de nouveaux éléments sans nécessiter immédiatement une nouvelle réallocation.
Ainsi, on insère jusqu'à saturation, puis une nouvelle réallocation est déclenchée.
7C : Ce graphique représente la taille de la mémoire occupée en fonction du nombre d'éléments insérés.
On observe que pour les petites valeurs, le nombre de réallocations de mémoire est faible.
À mesure que le facteur de charge augmente, la taille des réallocations croît également.
Cependant, on note des écarts importants à certains moments. Cela s'explique par le mécanisme des réallocations : la taille du dictionnaire double lorsque l'espace est insuffisant.
Par conséquent, pour certaines valeurs du facteur de charge, il reste suffisamment d’espace pour insérer plusieurs éléments sans nécessiter de nouvelle réallocation.
Histogramme.png : Ce dernier graphique montre la distribution des temps d'insertion sous forme d'histogramme.
On remarque que la plupart des valeurs sont insérées très rapidement dans le dictionnaire, tandis qu'un faible nombre d'insertions prennent plus de temps.
Cela s’explique par le fait que le dictionnaire doit parfois parcourir son espace de stockage pour trouver une position libre avant d'insérer la nouvelle clé et sa valeur.