PCSI2\2014-2015 Laurent Kaczmarek
Les difficultés sont échelonnées de la manière suivante : aucune, ♪,♪♪ ,♪♪♪ et ♪♪♪♪. Certains énoncés
sont tirés des annales des concours (oral et écrit) ; leur provenance est le plus souvent précisée. Les
exercices notés ♪♪♪ et ♪♪♪♪ sont particulièrement délicats.
1. Complexité
1 . [ L’algorithme d’Hörner ] ( ind )
Soient P un polynôme à coefficients réels et a∈R. On écrit
P(X) =p0+p1X+···+pnXn
Le polynôme P sera représenté par le tableau [p0,...,pn] contenant ses coefficients. On cherche un
algorithme de calcul efficace de P(a).
a) Algorithme naïf d’évaluation.
i) Écrire sous forme d’un pseudo-code un algorithme de calcul de P(a).
ii) Trouver un invariant de boucle et prouver la correction de cet algorithme.
iii) En déduire une fonction evaluationNaive(t,a) calculant P(a).
iv) Sachant que le calcul de aka un coût de l’ordre de ln(k), quel est la complexité de cet algo-
rithme ?
b) Hörner a proposé la méthode suivante :
P(α)=p0+α·¡p1+α·¡p2+α·¡p3+α·(···)¢¢¢
Par exemple, pour calculer P(2) lorsque P =p3X3+p2X2+p1X+p0, on calcule successivement :
p3,p2+2p3,p1+2(p2+2p3)=p1+2p2+22p3,
p0+2¡p1+2p2+22p3¢=p0+p12+p222+p323=P(2)
i) Écrire cet algorithme sous la forme d’un pseudo-code.
ii) Trouver un invariant de boucle et prouver la correction de cet algorithme.
iii) Écrire une procédure evaluationHorner(t,a) d’arguments tet aun nombre réel et ren-
voyant la valeur P(a) par la méthode d’Hörner.
iv) Quelle est la complexité de cette fonction ?
v) Vérifier sur machine l’efficacité de evaluationHorner par rapport à evaluationNaive.
2 . [ Algorithmes de division euclidienne dans N♪] ( ind )
On se propose d’exposer, prouver puis comparer deux algorithmes de division euclidienne dans N.
a) Algorithme naïf.
i) Donner un algorithme naïf de division euclidienne reposant sur des soustractions succes-
sives. Prouver la terminaison et la correction de cet algorithme en déterminant un invariant
de boucle.
ii) Écrire une fonction divisionEuclidienne(a,b) renvoyant le couple (q,r) en suivant l’algo-
rithme naïf.
iii) Quelle est la complexité de cet algorithme ?
b) Algorithme binaire.
On propose l’amélioration suivante :
LLG \PCSI2Info – Exercices 4 \2