Skip to content
Snippets Groups Projects
README.md 2.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • david's avatar
    david committed
    # 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. 
    
    david's avatar
    david committed
    
    
    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.
    
    
    david's avatar
    david committed
    ## Exercice 1: Tas binaire borné
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    Le nom de votre branche est constitué de vos numéros d'étudiants séparés par un _
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    `git checkout -b tp3_NUMERO1_NUMERO2`
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    Rajouter le fichier `AUTHORS.md` avec vos noms, prénoms et numéros d'étudiants.
    
    david's avatar
    david committed
    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é.
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    ## Exercice 2: Benchmark
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    Effectuez des expériences sur l’efficacité en temps et en mémoire de cette structure :
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    - 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.
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    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. 
    
    david's avatar
    david committed
    Les noms des fichiers pdf seront de la forme `fixed_binary_heap_MESURE_LANGAGE_ORDRE.pdf`
    
    david's avatar
    david committed
    ### Exemple:
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    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\}
    
    david's avatar
    david committed
    ## Exercice 3: 
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    Commentez le resultat de vos expériences dans un fichier `RAPPORT.md`
    
    david's avatar
    david committed
    
    
    david's avatar
    david committed
    A RENDRE AVANT DIMANCHE!