LA COMPLEXIT ´
E D’UN PROBL`
EME
Calculer la complexit´
e d’un probl`
eme est ardu en g´
en´
eral. On
se contente souvent d’encadrer:
Ipour trouver une borne sup´
erieure, il suffit de trouver UN
algorithme.
Ipour trouver une ”bonne” borne inf´
erieure, les choses sont
souvent plus difficiles; pour montrer par exemple qu’un
probl`
eme est de complexit´
e au moins exponentielle, il faut
montrer que TOUT algorithme le r´
esolvant est
exponentiel.
Quand les deux bornes co¨
ıncident, c’est l’id´
eal mais c’est assez
rare!
L’EXEMPLE DE LA MULTIPLICATION
IOn conjecture que la multiplication de deux entiers de
longueur npeut se faire en O(n log n)
ILe meilleur algorithme connu est en O(n log n log log n).
ILa meilleure borne inf´
erieure trouv´
ee est O(n).
TROIS M ´
ETHODES POUR TROUVER UNE BORNE
INF ´
ERIEURE
1. Les m´
ethodes dites d’oracle ou d’adversaire
2. Les arbres de d´ecision
3. Les R´eductions
LES M ´
ETHODES DITES D’ORACLE OU D’ADVERSAIRE:
Le principe: On suppose qu’il existe un algorithme utilisant
moins d’un certain nombre d’op´
erations d’un certain type; on
construit alors une donn´
ee qui met en d´
efaut l’algorithme.
Exercice
Montrer ainsi que rechercher le maximum dans une liste de n
´el´ements n´ecessite n −1comparaisons.