Sup’Galil´ee INFO1 S1– Ann´ee 2013–2014
Algorithmique
TD01 : Complexit´e
1/Que vaut x(en fonction de aet n) apr`es ex´ecution de chacun des trois programmes suivants ? Donner
un ´equivalent 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´esente un polynˆome Rde degr´e npar un tableau tR`a n+ 1 valeurs. La case tR[i] repr´esente
le coefficient du terme de degr´e i.
Autrement dit, si
R(X) =
i=n
X
i=0
aiXi
on aura tR[i] = ai. Par exemple, X4−2X3+ 3X2−1 est repr´esent´e par le tableau [-1;0;3;-2;1]
(attention `a l’inversion de l’ordre des coefficients).
2/´
Ecrire un algorithme qui calcule xn. Combien de multiplications sont effectu´ees par l’algorithme ?
3/´
Ecrire un algorithme qui ´etant donn´e un polynˆome P(sous forme de tableau) et une valeur x, calcule
P(x). Combien de multiplications sont effectu´ees pour l’´evaluation d’un polynˆome de degr´e n?
4/Montrer que tout polynˆome Pde degr´e n+ 1 peut s’´ecrire sous la forme
P(X) = Q(X)×X+α
o`u Qest un polynˆome de degr´e n(que valent αet les coefficients de Qen fonction des coefficients de
P?)
En utilisant cette ´egalit´e, ´ecrire un algorithme r´ecursif pour ´evaluer P(x), ´etant donn´e Pet x(algo-
rithme de Horner). Combien de multiplications l’algorithme effectue pour l’´evaluation d’un polynˆome de
degr´e n?
Tris
5/Un tri par s´election fonctionne selon le principe suivant (les ´el´ements d´ej`a tri´es sont rang´es `a la fin du
tableau) :
On s´electionne le plus grand 1´el´ement parmi ceux qui ne sont pas d´ej`a tri´es, on le met au d´ebut de ceux
qui sont tri´es et on recommence jusqu’`a avoir tri´e tous les ´el´ements.
´
Ecrire un algorithme de tri par s´election. Combien de comparaisons effectue-t-il ?
6/Un tri rapide fonctionne selon le principe suivant :
1. On choisit un pivot (g´en´eralement le premier ´el´ement) et on s´epare les autres ´el´ements en deux
paquets : d’un cot´e ceux qui sont plus petits que le pivot et de l’autre ceux qui sont plus grands.
2. On trie r´ecursivement chacun des deux paquets.
3. On recolle les deux paquets, avec le pivot entre eux.
´
Ecrire 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, ¸ca d´epend si on veut trier en ordre croissant ou d´ecroissant.
1