Vous êtes sur la page 1sur 5

ITI3 jeudi 12 janvier 2023

Algorithmique avancée
et
Programmation C
Durée : 3h00
Documents autorisés : AUCUN

Remarques :
— Veuillez lire attentivement les questions avant de répondre ;
— Pour chaque section comportant des questions, il est indiqué, entre parenthèses, le nombre de
compétences évaluées par ces questions.

1 QCM (4 compétences)
Répondez au qcm ci joint (à rendre avec votre copie). La note de chaque question peut varier de −1 à
+1.
Soit B le nombre de bonnes réponses à une question et soit M le nombre de mauvaises réponses à cette
même question (B + M est égale au nombre de réponses à la question). Chaque bonne réponse cochée
rapporte 1/B points et chaque mauvaise réponse −1/M points pour la compétence évaluée par la question.

2 Algorithmes sur les graphes (2 compétences)

B D

A C G

E F

Figure 1 – Un graphe étiqueté orienté

Soit le graphe présenté par la figure 1.


Identifiez, en le justifiant, les algorithmes dont le traitement a produit les listes suivantes :
1. ABCEFDG

1
2. ACFGEDB
3. ABCDEFG
Sachant que :
— chaque nœud traité a donné lieu à son ajout (c’est-à-dire en fin de liste) à la liste initialement vide.
Votre justification précisera à chaque étape de l’algorithme identifié, l’état de la collection, à préciser,
qui est utilisée ;
— lorsque, à un moment donné de l’exécution de l’algorithme, plusieurs nœuds peuvent être ajoutés à la
collection 1 , le premier nœud ajouté est celui dont l’identifiant est le plus petit (au sens alphabétique).

3 Compression d’image noir et blanc avec les QuadTree


3.1 Des images en noir et blanc
Une image en noir et blanc est une image pour laquelle les pixels sont soit blanc, soit noir. Un pixel
est identifié à l’aide d’une coordonnée. Comme l’indique la figure 2 (issue de https://www.pngegg.com/
fr/png-ebbnq), le pixel de coordonnée (0, 0) se trouve en haut à gauche.

0,0

largeur-1,hauteur-1

Figure 2 – Une image en noir et blanc

Soit l’énuméré suivant :


— Couleur = {BLANC, NOIR}
Soit le TAD ImageNB suivant :
Nom: ImageNB
Utilise: Naturel, NaturelNonNul, Couleur
Opérations: imageNB: NaturelNonNul × NaturelNonNul × Couleur → ImageNB
largeur: ImageNB → NaturelNonNul
hauteur: ImageNB → NaturelNonNul
obtenirCouleurPixel: ImageNB × Naturel × Naturel ↛ Couleur
fixerCouleurPixel: ImageNB × Naturel × Naturel × Couleur ↛ ImageNB
Préconditions: obtenirCouleurPixel(im,x,y): x<largeur(im) et y<hauteur(im)
fixerCouleurPixel(im,x,y,c): x<largeur(im) et y<hauteur(im)
Axiomes: - largeur(imageNB(l,h,c))=l
- hauteur(imageNB(l,h,c))=h
- obtenirCouleurPixel(imageNB(l,h,c),x,y)=c
- obtenirCouleurPixel(fixerCouleurPixel(im,x,y,c),x,y)=c

3.2 Conception préliminaire (3 compétences)


Donnez les signatures des fonctions et procédures des opérations du TAD ImageNB.
1. le sens de cet ajout étant fonction de la collection utilisée

2
3.3 Utilisation (6 compétences)
1. Proposez l’algorithme de la procédure suivante qui remplit, d’une certaine couleur, une zone rectan-
gulaire donnée :
— procédure remplir (E/S im : ImageNB, E x,y,larg,haut : Naturel, c : Couleur)
⌊précondition(s) x+larg-1<largeur(im), y+haut-1<hauteur(im)
2. Proposez l’algorithme de la fonction suivante qui permet de savoir si tous les pixels d’une zone d’une
image sont tous de la même couleur :
— fonction memeCouleur (im : ImageNB, x,y,larg,haut : Naturel) : Booleen
⌊précondition(s) x+larg-1<largeur(im), y+haut-1<hauteur(im)

3.4 Les QuadTree


Un QuadTree est un arbre d’arité 4 qui permet de représenter une image. Un nœud de cet arbre
représente une zone rectangulaire de l’image. La racine représente l’image dans son intégralité. Une feuille
représente une zone rectangulaire où tous les pixels ont la même couleur. Les quatre fils d’un nœud qui
n’est pas une feuille, représentent un découpage en quatre de la zone courante, tel que le premier fils
représente la zone se trouvant au Nord Ouest (NO), le deuxième au Nord Est (NE), le troisième au Sud
Ouest (SO) et le quatrième au Sud Est (SE).
La figure 3 présente un extrait du QuadTree représentant l’image de la figure 2. Les nœuds de l’arbre
qui ne sont pas des feuilles sont sur fond gris alors que les feuilles sont sur fond blanc et elles indiquent
à l’aide des lettres ’b’ (pour blanc) et ’n’ (pour noir) la couleur de la zone correspondante. Cet arbre
s’interprète de la façon suivante :
— l’image dans son entièreté n’étant pas homogène (les pixels n’étant pas tous de la même couleur),
elle est décomposée en quatre zones. La racine de l’arbre n’est donc pas une feuille, elle référence
quatre QuadTree ;
— la zone de l’image se trouvant au Nord Ouest (NO) n’étant pas homogène, le nœud correspondant
(noté 1) n’est donc pas une feuille, il a alors quatre fils correspondant à la décomposition de cette
zone ;
— la zone 1.1 se trouvant au NO de cette zone 1 est totalement blanche, elle est donc représentée par
une feuille (notée aussi 1.1 dans l’arbre) contenant le caractère ’b’ ;
— la zone 1.3 se trouvant au SO de cette zone 1 n’est pas homogène, elle est donc décomposée en quatre
zones, dont la première zone (la 1.3.1) et la troisième (la 1.3.3) sont homogènes (toutes blanches)
elles sont donc représentées par des feuilles.
Même s’ils ne sont pas représentés, tout nœud non feuille possède quatre fils.

3.5 Analyse (4 compétences)


Proposez le TAD QuadTree (axiomes compris) avec les opérations suivantes :
— obtenir un QuadTree à partir d’une couleur pour représenter une zone d’image homogène ;
— obtenir un QuadTree à partir de quatre QuadTree pour représenter une zone d’image non homogène ;
— savoir si un QuadTree est une feuille ;
— obtenir la couleur associée à une feuille ;
— obtenir les quatre fils d’un QuadTree qui n’est pas une feuille.

3
1.1
b
1.3.1

1
b
b

NO
2

1.3.3 1.3.4

1.3.1 1.3.2

1.1
NE

1.4

1.2
b

SO

2
3

SE
4

Figure 3 – Extrait du quadtree sur l’image de la figure 2

4
3.6 Conception préliminaire (1 compétence)
Donnez les signatures des fonctions et procédures du TAD QuadTree.

3.7 Utilisation pour la compression d’image


3.7.1 Image en QuadTree (6 compétences)

On suppose posséder les fonctions suivantes qui calculent pour une zone donnée (définie à l’aide du
point x,y en haut à gauche, de sa largeur et de sa hauteur) les quatre zones définies précédemment (les
valeurs retournées correspondent aux coordonnées du point en haut à gauche, de la largeur et de la hauteur
de la zone calculée) :
— fonction zoneNO (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
— fonction zoneNE (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
— fonction zoneSO (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
— fonction zoneSE (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
Donnez l’algorithme de la fonction suivante qui calcule le QuadTree d’une image (il se peut que vous
ayez besoin d’une fonction privée) :
— fonction imageNBEnQuadTree (im : ImageNB) : QuadTree

3.7.2 QuadTree en Image (6 compétences)

Donnez l’algorithme de la fonction suivante qui calcule l’image décrite par un QuadTree (encore une
fois, il se peut que vous ayez besoin d’une fonction privée) :
— fonction QuadTreeEnImageNB (qt : QuadTree, largeur, hauteur : Naturel) : ImageNB

3.7.3 Sérialisation d’un QuadTree (6 compétences)

On veut représenter un QuadTree à l’aide d’une chaine de caractères telle que :


— une feuille est représentée par la chaı̂ne "b" (pour blanc) ou "n" (pour noir)
— un nœud, non feuille, est représenté par la chaine de caractères "R" concaténée avec les représentations
en chaine de caractères des quatre QuadTree fils.
Donnez l’algorithme de la fonction suivante :
— fonction quadTreeEnChaine (qt : QuadTree) : Chaine

Question bonus (+0,5 point)

La chaine de caractères calculée par la question précédente est une représentation orientée caractère
d’une image. Il serait possible de réduire la consommation mémoire de cette représentation en utilisant
une représentation orientée binaire (en utilisant les bits des octets pour représenter l’information). Si la
chaı̂ne de caractères est de longueur l, combien faut il d’octets pour stocker une représentation binaire
plus courte ?

Vous aimerez peut-être aussi