Skip to content
Snippets Groups Projects
user avatar
david authored
3994cc76
History

Sujet de TP 3: Tas Binaire

Règles pour ce semestre

Vous travaillerez en binôme durant les TPs. Il ne sera pas possible de changer de binôme en cours de semestre.

Il est interdit de partager du code avec d'autres binômes ou de "s'en inspirer".

Toute ressemblance suspecte sera AUTOMATIQUEMENT considérée comme de la fraude et sévèrement sanctionnée.

Chaque semaine, un rendu vous sera demandé (vous aurez jusqu'au dimanche soir pour rendre le TP si vous ne finissez pas à temps) via gitlab.

Vos travaux seront évalués une fois à mi-semestre et une fois à la fin du semestre.

Exercice 1: Tas binaire borné

Le nom de votre branche est constitué de vos numéros d'étudiants séparés par un _

git checkout -b tp3_NUMERO1_NUMERO2

Rajouter le fichier AUTHORS.md avec vos noms, prénoms et numéros d'étudiants.

Développez une structure/classe de tas binaire dans laquelle le tableau servant à stocker les clés est de taille fixe. Cette taille est fixée à la création du tas. Si l’utilisateur tente d’ajouter une valeur dans un tas plein, un programme en C affichera une erreur et un programme en C++, Python ou Java jettera une exception. La structure de tas permettra au moins d’ajouter une clé, et d’extraire la plus petite clé contenu dans le tas. Pour chaque opération, on veut pouvoir récupérer le nombre d'échanges que la fonction a effectué.

Exercice 2: Benchmark

Effectuez des expériences sur l’efficacité en temps et en mémoire de cette structure :

  • dans le cas où l’on ne fait qu’ajouter des clés dans l’ordre croissant,
  • dans le cas où l’on ne fait qu’ajouter des clés dans l’ordre décroissant,
  • dans le cas où l’on ne fait qu’ajouter des clés aléatoires.

Inspirez vous des expériences menées sur les tableaux dynamiques. Attention, pour chaque expérience, vous devez impérativement écrire de nouvelles fonctions main dans de nouveaux fichiers et sauvegarder les différents fichiers pdf que vous ob- tenez grâce à vous expériences.

Les noms des fichiers pdf seront de la forme fixed_binary_heap_MESURE_LANGAGE_ORDRE.pdf

Exemple:

Pour la mesure du temps amorti de l'ajout d'un élément dans l'ordre croissant en C, le fichier de sortie sera fixed_binary_heap_amortized_time_C_INCREASING.pdf

On a donc:

  • MESURE peut valoir { amortized_time, wasted_memory, swap }.
  • LANGAGE peut valoir { C, CPP, Java, Python}
  • ORDRE peut valoir { increasing, descrasing, random}

Exercice 3:

Commentez le resultat de vos expériences dans un fichier RAPPORT.md

A RENDRE AVANT DIMANCHE!