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 0C[i]i2pour i= 1, . . . , m. Soit Tun tableau
additionnel. Considérons l’algorithme suivant :
Début.
k0
Pour i1jusqu’à mfaire
Pour j1jusqu’à C[i]faire
kk+ 1
T[k]i
Fin
a) Exprimez le nombre exact de fois que l’instruction kk+ 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 i1au poste i,d1la distance du
point Aau poste 1, et dBla distance du poste kau point B(on suppose diDet dBD). 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 i1à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
SS∪ {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 n1comparaisons entre éléments :
Max T[1]
Ind 1
Pour i2jusqu’à 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 n2comparaisons supplémentaires :
T[Ind]T[1]
Min T[2]
Pour i3jusqu’à nfaire
Si Min > T [i]alors Min T[i]
Finsi
FinPour
Cela donne 2n3comparaisons.
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 2n3
comparaisons entre éléments.
Solution:
Fonction MinMax (T[1, . . . , n]) : (reel,reel)
{On suppose que n1}
Si n > 2alors
snDIV 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 n2
En résolvant cette équation nous obtenons que t(n)Θ(n). Plus précisément on trouve que
t(n) = 3n/22. Évidement c’est 25 % de moins que 2n3
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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !