Exercices Supplémentaires 1 IFT-17588 : Analyse d`algorithmes Été

publicité
Exercices Supplémentaires 1
IFT-17588 : Analyse d’algorithmes
Été 2005
1
Utilisez les relations ⊂ et = pour mettre en rang les ordres respectifs des fonctions suivantes :
αn
n2
42 n
√
n
2n+1
2n
nα
22n ,
où 0 < α < 1. N’utilisez pas le symbole ⊆. Les preuves ou justifications sont requises. Présentez
clairement votre solution, sur une seule ligne, puis, exhibez clairement (et brièvement) les justifications.
Réponse
O(αn ) ⊂ O(42) ⊂ O(nα ) ⊂ O(n2 ) ⊂ O(n
√
n
) ⊂ O(2n ) = O(2n+1 ) ⊂ O(22n )
Pour les justifications, voir Alexandre lors des ateliers.
2
Résoudre la récurrence suivante en utilisant le théorème général. Justifiez bien votre réponse.
√
n
T (n) = 4T ( ) + n.
4
Réponse
√
1
Cas 1. n = n 2 ∈ O(n1−² ) pour ² = 14 par exemple. Donc T (n) = θ(n).
3
1. Elvis, Jimmy et Janis analysent un même algorithme A et obtiennent les résultats TE (n), Ti (n) et Ta (n)
respectivement. Elvis obtient TE (n) ∈ O(n2 ) en pire cas. Jimmy obtient Ti (n) ∈ Ω(n2 ) en meilleur cas. Janis
affirme que Ta (n) ∈ θ(n2 ) pour tous les cas. Si Elvis et Jimmy ont raison, le résultat de Janis est-il correct ?
Justifiez.
2. Soient A et B des algorithmes prenant des temps, en meilleur cas, dans Ω(n2 ) et Ω(n log n) respectivement.
Est-il possible qu’une implantation de l’algorithme A soit plus efficace qu’une implantation de l’algorithme
B sur tous les exemplaires ? Justifiez.
3. Alice et Bob analysent un même algorithme A et obtiennent les résultats TA (n) et TB (n) respectivement.
Alice obtient que TA (n) ∈ θ(n3 ) en pire cas. Bob obtient que TB (n) ∈ Ω(n2 log n2 ) pour tous les cas. Le
résultat d’Alice implique-t-il celui de Bob ? Justifiez.
4. Énoncez « le principe d’invariance ».
5. Dans le cadre du cours, que veux dire « analyser un algorithme » ?
Solutions :
1. Oui. Elvis ⇒ T (n) ∈ O(n2 ) dans tous les cas et Jimmy ⇒ T (n) ∈ Ω(n2 ) dans tous les cas, d’où le résultat.
2. Oui. Exemple : TA (n) = n2 et TB (n) = 5n3 + 5
3. Non. On pourrait avoir, par exemple, T (n) = n2 (en meilleur cas).
4. Les temps d’exécution de deux implantations d’un même algorithme ne diffèrent qu’à une constante
multiplicative près (Brassard page 60 ou voir les notes de cours).
5. C’est prévoir les ressources nécessaires à cet algorithme. Dans le cadre du cours, c’est le temps d’exécutio
qui nous intéresse.
4
Quel est le lien entre le principe d’invariance, les opérations élémentaires, le temps d’exécution, la notation
asymptotique et l’analyse d’algorithmes ?
Solution. En analyse d’algorithmes, on peut, entre autres, s’intéresser au temps d’exécution d’un algorithme
(c’est ce que nous faisons dans ce cours). La notion d’opérations élémentaires nous permet de se détacher des
contraintes temporelles physiques reliées au temps d’exécution d’un algorithme sur un ordinateur en particulier.
Le principe d’invariance nous permet d’abstraire l’implantation concrète d’un algorithme. Ainsi, le langage de
programmation, le système d’exploitation, le programmeur, n’influence le temps d’exécution qu’à une constante
multiplicative près. Enfin, la notation asymptotique sert à exprimer les résultats de l’analyse.
5
Afin de résoudre un certain problème P on vous propose 7 algorithmes différents qui exécutent exactement
n, n ln n, n2 , n3 , 2n , en et n! opérations élémentaires respectivement. Si on suppose qu’une opération élémentaire
s’exécute en 10−9 seconde, calculez, dans chacun des cas, le nombre d’années nécessaires afin de résoudre un (petit !)
exemplaire de taille n égale à 300. Que pouvez-vous conclure ?
1.
2.
3.
4.
5.
6.
7.
n → 9.5 × 10−15 année
n ln n → 5.4−14 année
n2 → 2.9 × 10−12 année
n3 → 8.6 × 10−10 année
2n → 6.5 × 1073 années
en → 6.2 × 10113 années
Overflow années ! (10598 )
6
Soient A, B, C, D et E cinq algorithmes qui résolvent le même problème P et pour lesquels nous avons obtenu
les résultats d’analyse suivants respectivement :
1. TA (n) ∈ O(n2 ) en pire cas ;
2. TB (n) ∈ Ω(n2 ) dans tous les cas ;
3. TC (n) ∈ Θ(n) en meilleur cas ;
4. TD (n) ∈ Θ(n2 lg n) dans tous les cas ;
5. TE (n) ∈ Θ(n2 ) en pire cas.
a) Vous êtes à concevoir un algorithme Z qui résout un problème P 0 ayant des instances de taille n. Votre
algorithme Z ne doit jamais prendre plus de n4 lg n unités de temps (à une constante près et pour des entrées
de taille assez grande). Dans Z, il y a n2 lg n appels à Résoudre le problème P (tous sur des instances de taille
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.
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 5 ci-haut. Quel est, selon vous, le choix le
plus prometteur ? Justifiez.
c) Pour chacun des 5 algorithmes ci-haut, dites, avec justifications, si on est assuré que son temps d’exécution
en pire cas appartient à l’ensemble suivant :
S = (O(n3 ) ∩ Ω(n2 )) ∪ Θ(n).
d) En supposant que les analyses 2 et 3 soient exactes, est-il possible que les algorithmes B et C soient en fait
un seul et même algorithme ? Justifiez.
Solution.
a)
Les algorithmes A et E peuvent être utilisés.
b)
L’analyse des algorithmes B et C ne donne aucune informations sur le maximum de temps requis pour ces
algorithmes. Ils peuvent donc possiblement être extrêmement lent. Clairement, le choix de l’algorithme D est
moins bon que A et E. Puisque E nous assure un temps de n2 en pire cas, alors que A nous assure un temps
inférieur ou égal à n2 en pire cas, l’algorithme B ne peut être meilleur que A. A est donc le choix le plus prometteur.
c)
– A : non, le temps en PC est au plus n2 mais pourrait être inférieur, n lg n par exemple et dans ce cas il n’est
pas dans l’ensemble car n lg n 6∈ Ω(n2 ) et n lg n 6∈ Θ(n).
– B : non, aucune borne supérieur sur le temps en PC, ce dernier peut donc être n10 qui n’appartient clairement
pas à S.
– C : non, même explication que B.
– D : oui, comme TD (n) ∈ Θ(n2 lg n), on sait que TD (n) ∈ Ω(n2 lg n) ⊂ Ω(n2 ) et TD (n) ∈ O(n2 lg n) ⊂ O(n3 ).
– E : oui, comme TE (n) ∈ Θ(n2 ), on sait que TE (n) ∈ Ω(n2 ) et TE (n) ∈ O(n2 ) ⊂ O(n3 ).
d)
Non car il y a une contradiction. L’analyse 2 nous dit que T (n) est borné inférieurement par n2 dans tous les cas
(en particulier pour le meilleur cas). Par contre, l’analyse 3 nous dit que T (n) est exactement n en meilleur cas.
Mais comme n plus petit que n2 , il ne peut donc pas s’agir du même algorithme.
Téléchargement