V. ÉCHELLE DE COMPLEXITÉ
Ce sont principalement les boucles qui font apparaître des temps de calculs importants. Nous avons
donné ici les grandes lignes, mais chaque cas d’étude est différent. On essaye d’évaluer le nombre
d’opérations, puis on donne la complexité.
V Échelle de complexité
En fonction de leur complexité, les algorithmes se regroupent en plusieurs familles, dont nous donnons ici les
principales :
— algorithmes en temps constant, noté Θ(1) : quelque soit l’argument en entrée, le nombre d’opérations
est constant. C’est le cas de l’échange de deux variables par exemple ;
— algorithmes en temps logarithmique, noté Θ(log(n)) : le nombre d’opérations présente une dépendance
logarithmique par rapport à la taille de l’argument. C’est le cas de la recherche dichotomique d’un élément
dans un tableau trié de taille n;
— algorithmes en temps linéaire, noté Θ(n): le nombre d’opérations est proportionnel à la taille de
l’argument. C’est le cas de la recherche du minimum d’un tableau de taille n;
— algorithmes en temps quasi-linéaire, noté Θ(nlog(n)) : le log qui apparaît est en base quelconque
puisque le résultat diffère d’une constante multiplicative près. On peut montrer que le crible d’Ératos-
thène, un algorithme pour déterminer l’ensemble des nombres premiers inférieurs ou égaux à nest en
O(n log(n)) et que le tri fusion, mergesort, trie un tableau de taille nen Θ(n log(n)) ;
— algorithmes en temps quadratique, noté Θ(n2): le nombre d’opérations possède une dépendance
quadratique par rapport à la taille de l’argument. C’est le cas des algorithmes de tri simples, comme le
tri à bulles d’un tableau de taille n;
— algorithmes en temps polynomial, noté Θ(nk)avec k > 1: le nombre d’opérations possède une dé-
pendance polynomiale par rapport à la taille de l’argument. Par exemple l’algorithme élementaire de
multiplication de deux matrices carrées de taille nrequiert de l’ordre de n3opérations ;
— algorithmes en temps exponentiel, noté Θ(cn)où cest une constante >1: la dépendance par rapport
à la taille de l’argument est exponentielle, comme par exemple le calcul d’une table de vérités pour une
formule booléenne de nvariables qui s’effectue en Θ(2n)étapes.
Les algorithmes en temps exponentiel sont très rapidement inutilisables. Les algorithmes en temps
polynomial sont considérés efficaces.
Le tableau suivant donne une équivalence en temps (approximative car cela dépend évidemment de la machine)
en fonction de la taille ndes données.
n5 10 20 50 250 1 000 10 000 1 000 000
110 ns 10 ns 10 ns 10 ns 10 ns 10 ns 10 ns 10 ns
log(n)10 ns 10 ns 10 ns 20 ns 30 ns 30 ns 40 ns 60 ns
n50 ns 100 ns 200 ns 500 ns 2.5 µs 10 µs 100 µs 10 ms
n log(n)50 ns 100 ns 200 ns 501 ns 2.5 µs 10 µs 100,5 µs 10 050 µs
n2250 ns 1µs 4µs 25 µs 625 µs 10 ms 1s2.8 heures
n31.25 µs 10 µs 80 ms 1.25 ms 156 ms 10 s2.7 heures 316 ans
2n320 ns 10 µs 10 ms 130 jours 1059 ans ... ... ...
n!1.2 µs 36 ms 770 ans 1048 ans ... ... ... ...
Table 1 – Ordre de grandeur du temps nécessaire à l’exécution d’un algorithme de complexité donnée (source :
Wikipedia)
12 – Reprendre tous les algorithmes des fiches précédentes et pour chacun d’entre eux, étudier la complexité
dans le pire des cas.
13 – Le crible d’Ératosthène consiste à écrire les nombres entiers de 2 à n. On prend ensuite le premier nombre
non barré (au début il s’agit de 2) puis on barre tous les nombres multiples de celui-ci. On prend alors le nombre
non barré suivant et on recommence. À la fin, seuls les nombres premiers entre 2et nrestent non barrés. Écrire
un algorithme mettant en place le crible d’Ératosthène, prenant en argument un nombre entier net renvoyant
la liste des entiers premiers inférieurs à n. Donner le nombre d’opérations effectuées et évaluer sa complexité.
On notera Hn=Pn
k=1
1
ket on se rappellera que Hn∼ln(n).
4 Le Bras - Lycée Montesquieu - MPSi - 2016/2017