
4CHAPITRE 3. QUELQUES ALGORITHMES S ´
EQUENTIELS
until out!=undef
write out
Ici let var ←expr instruction consiste `a remplacer syntaxiquement dans
instruction chaque occurrence de var par expr.
3.1.5 Le probl`eme du sac `a dos r´eel
On se donne des poids d’objets en kg, et l’on veut savoir si l’on peut remplir
exactement un sac qui supporte un total de 1 kg.
Formellement, on se donne des r´eels x1, x2,· · · , xn∈Ret on souhaite d´ecider
s’il existe un sous ensemble S⊂ {1,2,· · · , n}tel que Pi∈Sxi= 1
read < n, x >
j←1
repeat
[ sous−r o u t i n e d ’ ´e num´er ati on : av ec l ’ e n t r ´e e (n, j) ,
produire bjl a j`eme s u i t e de {0,1}n]
b←bj
i f Pi∈bxi=1 then out ←vrai
e l s e i f j = 2nthen out ←f aux
e l s e j←j +1
until out!=undef
write out
Ici la notation [ · · · description · · · ] d´esigne une sous-proc´edure : du code
laiss´e au lecteur qui a pour effet d’effectuer l’op´eration indiqu´ee par description.
Cet algorithme n´ecessite dans le pire cas O(2n) op´erations, et utilise des
op´erations qui consistent en des additions, et des tests d’´egalit´e : il s’agit d’un
algorithme sur la structure (R,0,1,+,−,=).
En fait, on peut prouver que sur cette structure, on ne peut pas faire mieux :
Th´eor`eme 3.3 Il n’existe pas d’algorithme sur la structure (R,0,1,+,−,=)
qui r´esout le probl`eme en temps polynomial.
3.1.6 ´
Equations polynomiales `a une inconnue
Si l’on se donne un polynˆome Pde degr´e 2 de R[X], il est de la forme
P(X) = aX2+bX +c. On enseigne au lyc´ee, comment d´eterminer si un tel
polynˆome poss`ede ou non une racine r´eelle, et mˆeme `a calculer explicitement les
solutions dans ce cas, en utilisant des formules qui font intervenir des radicaux.
Cela se g´en´eralise tr`es mal `a des degr´es sup´erieurs, si l’on veut explicitement
les solutions : il est connu (voir un cours sur la th´eorie de Galois) que les solutions
ne sont pas repr´esentables par radicaux dans le cas g´en´eral pour des polynˆomes
de degr´e 5.
Mais si seulement l’existence de racines r´eelles nous int´eresse, la situation
est plus simple. L’algorithme suivant fonctionne pour les polynˆomes de degr´e 2.