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.