Question 1 : Notation asymptotique [5 points]

publicité
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, D et E cinq 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) ∈ Θ(n2 log n) dans tous les cas ;
e) TE (n) ∈ Θ(n2 ) en pire cas.
(a) Supposons que vous vouliez concevoir un algorithme Z qui résout un problème P 0 ayant
des instances de taille n. Cet algorithme ne doit jamais prendre plus de n4 log n unités
de temps (à une constante près et pour des entrées de taille assez grande). Dans Z, vous
devriez faire n2 log n appels à 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 algorithme 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] ≤ i2 pour i = 1, . . . , m. Soit T un tableau
additionnel. Considérons l’algorithme suivant :
Début.
k←0
Pour i ← 1 jusqu’à m faire
Pour j ← 1 jusqu’à 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:
P
n= m
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:
P 2
3
T (n) = Θ(m + m
1 i ) = Θ(m )
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 D lorsqu’il est plein. Au cours de son voyage, il rencontrera k postes où
il pourrait faire le plein. Soient di la distance pour aller du poste i − 1 au poste i, d1 la distance du
point A au poste 1, et dB la distance du poste k au point B (on suppose di ≤ D et 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 à k faire
{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 − 1 comparaisons entre éléments :
M ax ← T [1]
Ind ← 1
Pour i ← 2 jusqu’à n faire
Si M ax < T [i] alors M ax ← T [i] ; Ind ← i
Finsi
FinPour
Seules les comparaisons entre éléments sont comptées ici, ce qui exclut les comparaisons implicites dans le contrôle de la boucle Pour. On pourrait subséquemment déterminer le plus petit
élément de T en n − 2 comparaisons supplémentaires :
T [Ind] ← T [1]
M in ← T [2]
Pour i ← 3 jusqu’à n faire
Si M in > T [i] alors M in ← T [i]
Finsi
FinPour
Cela donne 2n − 3 comparaisons.
INF4705 Analyse et conception d’algorithmes, Contrôle périodique
4
a) Trouvez un algorithme A basé 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 > 2 alors
s ← n DIV 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 n est 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 ()
Téléchargement