
2.4 Comparaison des algorithmes
Question 17 Discutez de l’intérêt de chacun des algorithmes de tri par rapport aux autres :
— Est-il efficace en théorie ?
— Est-il efficace en pratique ? Si oui, dans quel(s) cas ?
— Que dire de la place mémoire nécessaire ?
2.5 Bonus
2.5.1 Contexte
Une image en niveaux de gris peut être représentée comme un tableau bi-dimensionnel Ide taille n×m,
avec n≥1et m≥1. Un pixel est simplement un élément I[i, j]du tableau. Chacun de ces éléments contient
un entier compris entre 0et une valeur maximale, appelé le niveau de gris du pixel. Un pixel de valeur 0est dit
noir, et un pixel de valeur maximale est dit blanc. Une image étant un tableau bi-dimensionnel, on dira qu’elle
est triée si les pixels sont ordonnés ligne après ligne : I[0,0] ≤I[0,1] ≤I[0,2] ≤ · · · ≤ I[0, m −1] ≤I[1,0] ≤
... ≤I[1, m −1] ≤ · · · ≤ I[n−1, m −1].
Cinq images vous sont fournies pour les questions suivantes. Vous pouvez bien sûr aussi utiliser d’autres
images. Les images fournies sont au format P GM (Portable Graymap File Format) ASCII. Ce format est très
simple :
— la première ligne stocke le “nombre magique” P2 ;
— la deuxième ligne stocke la largeur mpuis la hauteur nde l’image (en nombre de pixels) ;
— les nlignes suivantes stockent chacune mentiers codés en ASCII : un entier peut valoir entre 0lorsque
le pixel correspondant est noir et 65536 lorsque le pixel est blanc ;
— aucune ligne ne peut faire plus de 70 caractères : une ligne trop longue est scindée en plusieurs lignes
séparées par un saut de ligne.
2.5.2 Questions
Question 18 Implémentez une fonction qui lit une image au format P GM ASCII et stocke ses pixels dans un
tableau bidimensionnel. La fonction doit traiter comme un cas d’erreur le fait que le fichier n’est pas conforme
au format tel que décrit ci-dessus. Précisez les cas d’erreur que vous identifiez, traitez-les et validez le traitement
par des tests que vous préciserez.
Question 19 Implémentez une fonction qui, à partir d’un tableau bidimensionnel de pixels en niveaux de
gris, génère une image au format P GM ASCII. La fonction doit traiter comme un cas d’erreur le fait que les
structures de données ne permettent pas la génération d’une image conforme au format tel que décrit ci-dessus.
Précisez les cas d’erreur que vous identifiez, traitez-les et validez le traitement par des tests que vous préciserez.
Question 20 Pour tout ou partie des algorithmes de tri vus précédemment, adaptez le code au cas des tableaux
bi-dimensionnels en niveaux de gris. Sauvegardez les résultats intermédiaires au format P GM ASCII.
Question 21 Ecrire un script qui convertit une suite d’images au format P GM ASCII en une animation GIF
(vous pouvez utiliser un outil externe, comme The Gimp ou ImageMagick).
Attention : si vous sauvegardez tous les résultats intermédiaires pour une image de taille assez grande, vous
risquez d’obtenir une animation très longue, et qui prend beaucoup de place en mémoire.
Question 22 Testez sur les images en niveaux de gris fournies (ou d’autres de votre choix).
4