Algorithmique TD01 : Complexité Algorithme de Horner Tris

publicité
Sup’Galilée
INFO1 S1– Année 2013–2014
Algorithmique
TD01 : Complexité
1/Que vaut x (en fonction de a et n) après exécution de chacun des trois programmes suivants ? Donner
un équivalent asymptotique (Θ(•))
x=a;
for(i=0;i<n;i++)
x++;
x=a;
for(i=0;i<n;i++)
for(j=0;j<i;j++)
x++;
x=a;
for(i=0;i<n;i++)
for(j=0;j<i;j++)
for(k=0;k<j;k++)
x++;
Algorithme de Horner
On représente un polynôme R de degré n par un tableau tR à n + 1 valeurs. La case tR [i] représente
le coefficient du terme de degré i.
Autrement dit, si
i=n
X
R(X) =
ai X i
i=0
4
3
2
on aura tR [i] = ai . Par exemple, X − 2X + 3X − 1 est représenté par le tableau [-1;0;3;-2;1]
(attention à l’inversion de l’ordre des coefficients).
2/Écrire un algorithme qui calcule xn . Combien de multiplications sont effectuées par l’algorithme ?
3/Écrire un algorithme qui étant donné un polynôme P (sous forme de tableau) et une valeur x, calcule
P (x). Combien de multiplications sont effectuées pour l’évaluation d’un polynôme de degré n ?
4/Montrer que tout polynôme P de degré n + 1 peut s’écrire sous la forme
P (X) = Q(X) × X + α
où Q est un polynôme de degré n (que valent α et les coefficients de Q en fonction des coefficients de
P ?)
En utilisant cette égalité, écrire un algorithme récursif pour évaluer P (x), étant donné P et x (algorithme de Horner). Combien de multiplications l’algorithme effectue pour l’évaluation d’un polynôme de
degré n ?
Tris
5/Un tri par sélection fonctionne selon le principe suivant (les éléments déjà triés sont rangés à la fin du
tableau) :
On sélectionne le plus grand 1 élément parmi ceux qui ne sont pas déjà triés, on le met au début de ceux
qui sont triés et on recommence jusqu’à avoir trié tous les éléments.
Écrire un algorithme de tri par sélection. Combien de comparaisons effectue-t-il ?
6/Un tri rapide fonctionne selon le principe suivant :
1. On choisit un pivot (généralement le premier élément) et on sépare les autres éléments en deux
paquets : d’un coté ceux qui sont plus petits que le pivot et de l’autre ceux qui sont plus grands.
2. On trie récursivement chacun des deux paquets.
3. On recolle les deux paquets, avec le pivot entre eux.
Écrire un algorithme de tri rapide. Combien de comparaisons effectue-t-il dans le pire des cas ? Dans
le meilleur des cas ? En moyenne ?
1. Ou le plus petit, ça dépend si on veut trier en ordre croissant ou décroissant.
1
c xkcd.com
2
Téléchargement