Sujet 2020

Vous aimerez peut-être aussi

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

Université Clermont Auvergne Z225DM01, Licence Informatique, S4

Algorithmique 2 - Session 1
- le 26 mail 2020, Durée : 1h20min

Toute réponse doit être justifiée

Rappel Important. Pour donner la complexité en temps d’une fonction, il faut d’abord
indiquer le paramètre. Ensuite, il faut justifier en expliquant comment à partir des opérations du
pseudo-code on peut aboutir à la complexité donnée.

Exercice 1 Complexité (4 pts)


Pour chacune des opérations suivantes, vous indiquerez, en justifiant, la complexité en temps dans
le pire des cas. Vous indiquerez quels sont les cas qui permettent d’atteindre une telle complexité
en temps.
1. Calculer le minimum/maximum/moyenne dans une liste. (1 pt)
2. Rechercher un élément dans un ABR/liste triée. (1 pt)
3. Calculer le deuxième minimum/maximum dans un tas-min/max/ABR/ARN. (1 pt)
4. Insertion/suppression d’un élément dans une liste triée. (1 pt)

p. 1/2
Exercice 2 TDA Collection (16 pts)
Le TDA Collection permet de stocker des données et admet les opérations suivantes :
— creerCollection () : permet de créer une collection vide ;
— ajouter (C,e) : ajoute l’élément e dans la collection C ;
— premier (C) : permet d’initier un parcours des éléments de C en renvoyant un élément de C ;
— suivant (C,e) : prend une collection C, un élément e visité et renvoie un nouvel élément non
encore visité ;
— finVisite (C) : retourne true si et seulement si on a visité tous les éléments de C, sinon false.
1. En utilisant le TDA Liste, expliquez comment implémenter le TDA Collection. Vous donnerez
le pseudo-code pour chacune des opérations du TDA Collection. Les fonctions doivent avoir
la meilleure complexité possible. (3 pts)
2. Peut-on avoir une complexité en temps O(1) pour chacune des opérations avec l’implémen-
tation précédente ? Justifiez vos réponses. (2 pts)
3. Peut-on avoir une complexité en temps O(1) pour chacune des opérations du TDA Collection
si on utilise les arbres binaires implémentées avec le tableau PERE (vu en TD) ? Sinon, quelle
est la meilleure complexité en temps que l’on peut espérer pour chacune des opérations ?
Justifiez vos réponses. (3 pts)
On veut maintenant écrire les deux fonctions suivantes manipulant le TDA Collection.
a.1 associer (C, f) : Si la collection C est composée des éléments {e1 , . . . , en }, renvoie une col-
lection C’ composée des éléments {f (e1 ), . . . , f (en )} ;
a.2 filtrer (C,f) : retourne une collection composée des éléments de la collection C et pour
lesquelles la fonction f renvoie true ; f prend un élément et retourne un booléen.
b.1 plier_gauche (C,f,a) : si la collection C est composée des éléments {e1 , . . . , en }, renvoie
f (. . . (f (f (a, e1 ), e2 ) . . .), en ) ;
b.2 plier_droite (C,f,a) : si la collection C est composée des éléments {e1 , . . . , en }, renvoie
f (e1 , f (e2 , (f (. . . (f (en , a)) . . .)))).
On suppose que dans notre pseudo-code on peut donner des fonctions comme paramètres
à d’autres fonctions, comme les pointeurs de fonctions en C, mais ici, on va simplifier la syn-
taxe. Pour dire qu’un paramètre est une fonction, on utilise la syntaxe suivante (fun id-fonction :
T1 , T2 , . . . , Tp , T) où
— id-function est l’identifiant du paramètre,
— T1 , . . . , Tp sont les types des paramètres attendu par la fonction id-function, et T le type de
la valeur de retour.
Pour utiliser le paramètre id-function dans le pseudo-code, on utilise son identifiant en faisant
un appel classique de fonction. Par exemple, la fonction f ci-dessous prend comme paramètre une
fonction que l’on a nommé g et cette dernière a deux paramètres entiers et retourne un float. Notre
fonction f ici ne fait que retourner la valeur retournée par l’appel à la fonction g.
Function f (int x, int y, (fun g:int,int,float)) {
return g(x+1,y*2-1)
}
4. Ecrivez le pseudo-code pour les fonctions a.1/2 et b.1/2 avec la meilleure complexité en
temps. Attention, vous n’avez accés qu’aux fonctions du TDA Collection et on ne suppose
aucune implémentation spécifique du TDA. (4 pts)
5. A partir des réponses précédentes, faites un tableau comparatif de la complexité en temps de
chacune des deux fonctions a.1/2 et b.1/2 avec les deux implémentations du TDA Collection
discutées précédemment. Justifiez vos réponses. (4 pts)

p. 2/2

Vous aimerez peut-être aussi