INF4705 Analyse et conception d’algorithmes, Contrôle périodique 1
ECOLE POLYTECHNIQUE DE MONTREAL
Département de génie informatique et génie logiciel
Cours INF4705: Analyse et conception d’algorithmes (Automne 2008)
3 crédits (3-1.5-4.5)
CORRIGÉ DU CONTRÔLE PÉRIODIQUE
DATE : Mercredi le 8 octobre 2008
HEURE : 9H00 à 10H30
LOCAL : B-505
DUREE : 1H30mn
NOTE : Aucune documentation permise. Aucune calculatrice permise.
Ce questionnaire comprend 4 questions pour 20 points.
Bon travail !
Question 1 : Notation asymptotique [5 points]
Soient A,B,C,Det Ecinq algorithmes qui résolvent le même problème P. Après une analyse
de ces algorithmes nous avons obtenu les résultats suivants :
a) TA(n)∈ O(n2)en pire cas ;
b) TB(n)∈Ω(n2)dans tous les cas ;
c) TC(n)∈Θ(n)en meilleur cas ;
d) TD(n)∈Θ(n2log n)dans tous les cas ;
e) TE(n)∈Θ(n2)en pire cas.
(a) Supposons que vous vouliez concevoir un algorithme Zqui résout un problème P0ayant
des instances de taille n. Cet algorithme ne doit jamais prendre plus de n4log nunités
de temps (à une constante près et pour des entrées de taille assez grande). Dans Z, vous
devriez faire n2log nappels à Résoudre le problème P (tous sur des tailles n). Donnez,
parmi les cinq algorithmes ci-haut, tous ceux qui peuvent être utilisés dans votre algo-
rithme Z, sans dépasser la limite de temps.
Solution:
Les algorithmes A et E peuvent être utilisés
INF4705 Analyse et conception d’algorithmes, Contrôle périodique 2
(b) Vous êtes à élaborer un système qui doit fonctionner en temps réel (le facteur temps est
primordial). Pour ce faire, vous devez choisir un (et un seul) algorithme parmi les cinq
ci-haut. Quel serait le choix le plus prometteur ? Justifiez.
Solution:
A est le choix le plus prometteur
(c) Pour chacun des 5 algorithmes ci-haut, dites, avec justification si on est assuré que son
temps d’exécution en pire cas appartient à l’ensemble suivant :
S= (O(n3)∩Ω(n2)) ∪Θ(n)
Question 2 : Analyse d’algorithme [5 points]
Soit C[1 . . . m]un tableau d’entiers tels que 0≤C[i]≤i2pour i= 1, . . . , m. Soit Tun tableau
additionnel. Considérons l’algorithme suivant :
Début.
k←0
Pour i←1jusqu’à mfaire
Pour j←1jusqu’à C[i]faire
k←k+ 1
T[k]←i
Fin
a) Exprimez le nombre exact de fois que l’instruction k←k+ 1 est exécutée.
Solution:
n=Pm
i=1 C[i]
b) Donnez l’ordre exact (notation Θ) du temps pris par cet algorithme. Votre réponse doit être
valable non seulement en pire cas, mais dans tous les cas.
Solution:
T(n) = Θ(m+n)
c) Donnez l’ordre (notation O), en fonction de m, du temps pris en pire cas par cet algorithme.
Solution:
T(n) = Θ(m+Pm
1i2) = Θ(m3)
Question 3 : Algorithmes voraces [5 points]
M. Tremblay conduit une voiture d’un point Aà un point B. Le réservoir de son auto lui permet
de parcourir une distance Dlorsqu’il est plein. Au cours de son voyage, il rencontrera kpostes où
il pourrait faire le plein. Soient dila distance pour aller du poste i−1au poste i,d1la distance du
point Aau poste 1, et dBla distance du poste kau point B(on suppose di≤Det dB≤D). M.
Tremblay veut effectuer le moins d’arrêts possibles.
INF4705 Analyse et conception d’algorithmes, Contrôle périodique 3
a) Présentez un algorithme vorace qui détermine les postes où Mr Tremblay devrait s’arrêter.
Solution:
Un squelette de réponse serait comme suit :
Fonction VORACE (k : entier) : ensemble
S← ∅
Pour i←1àkfaire
{Tester si la distance parcourue jusqu’au poste prochain est inférieure à D}
si le plein est nécessaire pour se rendre au poste i+ 1 Alors
S←S∪ {i}
Fin pour
Retourner S
b) Est ce que votre algorithme est optimal ? (preuve ou contre exemple)
Solution:
Similaire à ce qui a été fait en cours
Question 4 : Algorithmes diviser-pour-régner [5 points]
Soit T[1 . . . n]un tableau de néléments. Il est facile de déterminer le plus grand élément de T
en faisant exactement n−1comparaisons entre éléments :
Max ←T[1]
Ind ←1
Pour i←2jusqu’à nfaire
Si Max < T [i]alors Max ←T[i];Ind ←i
Finsi
FinPour
Seules les comparaisons entre éléments sont comptées ici, ce qui exclut les comparaisons im-
plicites dans le contrôle de la boucle Pour. On pourrait subséquemment déterminer le plus petit
élément de T en n−2comparaisons supplémentaires :
T[Ind]←T[1]
Min ←T[2]
Pour i←3jusqu’à nfaire
Si Min > T [i]alors Min ←T[i]
Finsi
FinPour
Cela donne 2n−3comparaisons.
INF4705 Analyse et conception d’algorithmes, Contrôle périodique 4
a) Trouvez un algorithme Abasé sur la technique diviser-pour-régner capable de déterminer le
plus petit et le plus grand élément d’un tableau de néléments en faisant moins de 2n−3
comparaisons entre éléments.
Solution:
Fonction MinMax (T[1, . . . , n]) : (reel,reel)
{On suppose que n≥1}
Si n > 2alors
s←nDIV 2
(u1, v1)←MinMax(T[1, . . . , s])
(u2, v2)←MinMax(T[s+ 1, . . . , n])
Retourner (MIN(u1, u2),MAX(v1, v2))
Si n= 1 Alors Retourner (T[1], T [1])
{cas ou n= 2}
Si T[1] < T [2] Alors Retourner (T[1], T [2]) Sinon Retourner (T[2], T [1])
b) Quel est le nombre exact de comparaisons requises par votre algorithme ?
Solution:
Les parties MIN(u1, u2),MAX(v1, v2) et T[1] < T [2] effectuent chacune une comparaison. Pour
ce qui est des appels récursifs à MinMax, supposons que nest une puissance de 2. Alors :
t(2) = 1 pour n= 2
t(n) = 2t(n/2) + 2 pour n≥2
En résolvant cette équation nous obtenons que t(n)∈Θ(n). Plus précisément on trouve que
t(n) = 3n/2−2. Évidement c’est 25 % de moins que 2n−3
Le Professeur: Alaaeddine Fellah ()
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!