Année Universitaire 2016/2017 Licence d’Informatique (L3) SIN5U1TL – Algorithmique avancée TD 1 (Jeudi 15/09) 1. Complexité (exemples simples) – donnez o(f(n)) et la constante multiplicative dans chacun des cas : 2 - f(n) = 1000.n + 3.n.log(n) + n 2 10 - f(n) = 2.n + 30000.n.log(n ) 3 2. Complexité (suite) : On dispose de deux algorithmes A et B pour résoudre un même problème. Le nombre d’opérations de A en fonction de la taille n de l’échantillon est f(n) ; celle de B est g(n). - f(n) = 100.n.log(n) 2 - g(n) = n Dans quel cas vaut-il mieux utiliser A ou B … et donnez la valeur de n à laquelle on bascule 3. Complexité (tris) : Evaluez les complexités maximales et en moyenne : - du tri par fusion - du tri par extraction simple (on l’appelle aussi « par sélection ») Evaluez précisément pour une configuration donnée la complexité du tri bulle, puis les complexités maximales et en moyenne de ce tri 4. Exponentiation indienne : n On souhaite calculer x . On peut le faire simplement en initialisant une variable à 1 et en multipliant sa valeur par x n fois. Quelle est la complexité de cet algorithme ? n Si n est impair alors x = x.x (n-1) n n/2 2 - mais (n-1) est pair alors – et si n est pair alors x = (x ) n Invariant : soit z = 1 et y = x ; nous allons faire évoluer z, y et n de telles sorte que z*y valle toujours x n n Ecrivez un algorithme qui permette de calculer x en s’appuyant sur le maintien de cet invariant, et qui soit plus rapide que l’algorithme initial. Quelle est sa complexité ? n n Que se passe-t-il si au lieu de calculer x on calcule (x mod p) ? 5. Polynômes de Horner : On souhaite évaluer y = a0 + a1x + … + anx n Evaluez la complexité du calcul de cette expression. n-1 Si l’on remarque que y = a0 + x.(a1 + … + anx ) peut-on calculer y différemment ? Evaluez la complexité de ce nouveau mode de calcul.