Feuille de TD - Jean Sequeira

publicité
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.
Téléchargement