Complexité
Complexité
Complexité
Complexit
Luc Brun
luc.brun@greyc.ensicaen.fr
A partir de travaux de
Habib Abdulrab(Insa de Rouen)
Complexite p.1/25
Plan...
Notion de complexit
Comment valuer la complexit dun algorithme
Exemple de calculs de complexit
Complexite p.2/25
Complexite p.3/25
Complexite p.4/25
Complexite p.5/25
r
X
pi Tsi (n)
i=1
Temps dexcution
Rgles gnrales :
1. le temps dexcution (t.e.) dune affectation ou dun test est considr
comme constant c,
2. Le temps dune squence dinstructions est la somme des t.e. des
instructions qui la composent,
3. le temps dun branchement conditionnel est gal au t.e. du test plus le max
des deux t.e. correspondant aux deux alternatives (dans le cas dun temps
max).
4. Le temps dune boucle est gal la somme du cot du test + du corps de la
boucle + test de sortie de boucle.
Complexite p.7/25
1. Faux,
2. Inutilisable.
Notion de complexit : comportement asymptotique du t.e.:
Tmax (n) = Tmoy (n) nC
Complexite p.9/25
Estimation asymptotique
Dfinition 1 Une fonction f est de lordre de g , crit avec la notation Grand-O
comme: f = O(g) , sil existe une constante c et un entier n0 tels que:
f (n) cg(n), pour tout n n0
selon la dfinition ci-dessus, on aura:
f1 (n) = 2n + 3 = O(n3 ), 2n + 3 = O(n2 ), 2n + 3 = O(n)au plus juste
f2 (n) = 7n2
= O(2n ), 7n2
= O(n2 ) au plus juste
Complexite p.10/25
galit de complexit
Dfinition 2 2 fonctions f et g sont dgale complexit, ce qui scrit comme:
O( f )= O( g ) (ou f = (g)), ssi f = O(g) et g = O(f )
exemples:
n, 2n , et 0, 1n sont dgale complexit: O(n) = O(2n) = O(0, 1n)
O(n2 ) et O(0, 1n2 + n) sont dgale complexit: O(n2 ) = O(0, 1n2 + n)
par contre: 0, 1n2 nest PAS de plus petite complexit que 10n2 : O(0, 1n2 )
= O(10n2 )
Complexite p.11/25
Proprits
Rflexivit:
g = O(g)
Transitivit :
si f = O(g) et g = O(h) alors f = O(h)
Produit par un scalaire :O(f ) = O(f ), > 0.
Somme et produit de fonctions :
O(f )+O(g)=O(max{f, g})
O(f ).O(g)=O(f.g)
Complexite p.12/25
Complexite p.13/25
Boucles imbriques
Thorme 1 La complexit de p boucles imbriques de 1 n ne contenant que
des instructions lmentaires est en O(np ).
Preuve:
vrai pour p = 1,
supposons la ppt vrai lordre p. Soit :
pour i 1 n faire
instruction
finpour
o instruction contient p boucles imbriques.
Soit Tinst (n) le temps dexcution de instruction et T (n) le temps total.
T (n) = nTinst (n) avec Tinst (n) Cnp pour n n0 (par hypothse).
T (n) Cnp+1 T (n) = O(np+1 )
Complexite p.14/25
Complexite p.15/25
Complexite p.16/25
T(0)=c1
T(n)=c1 +c2 +T(n-1)
T (n) = nc2 + (n + 1)c1
Soit C = 2max{c1 , c2 }
T (n) Cn + c1 = O(n)
Complexit en O(n).
Les calculs de complexit dalgorithmes rcursifs induisent naturellement des
suites.
Complexite p.17/25
Complexite p.19/25
= n + 2T ( n2 )
= n + 4T ( n4 )
..
= .
Complexite p.21/25
Principales complexits
O(1) : temps constant,
O(log(n)) : complexit logarithmique (Classe L),
O(n) : complexit linaire (Classe P),
O(n log(n))
O(n2 ),O(n3 ),O(np ) : quadratique, cubique,polynomiale (Classe P),
O(pn ) complexit exponentielle (Classe EXPTIME).
O(n!) complexit factorielle.
Complexite p.22/25
Influence de la complexit
n 2n.
O(1) O(log2 (n)) O(n) O(n log2 (n)) O(n2 ) O(n3 ) O(2n )
t
t+1
2t
2t + 2n
4t
8t
t2
n = 102
n = 103
n = 104
n = 105
n = 106
1
1s
1s
1s
1s
1s
log2 (n)
6s
10s
13s
17s
20s
n
0.1ms
1ms
10ms
0.1s
1s
n log2 (n)
0.6ms
10ms
0.1s
1.6s
19.9s
n2
10ms
1s
100s
2.7h
11, 5j
n3
1s
16.6min
11, 5j
32a
32 103 a
2n
4 1016 a
Complexite p.23/25
Limites de la complexit
La complexit est un rsultat asymptotique : un algorithme en O(Cn2 ) peut
tre plus efficace quun algorithme en O(C n) pour de petites valeurs de n
si C C ,
Les traitements ne sont pas toujours linaires Il ne faut pas supposer
dordres de grandeur entre les diffrentes constantes.
Complexite p.24/25
Conseils
Qualits dun algorithme :
1. Maintenable (facile comprendre, coder, dboguer),
2. Rapide
Conseils :
1. Privilgier le point 2 sur le point 1 uniquement si on gagne en complexit.
2. ce que fait lalgorithme doit se lire lors dune lecture rapide : Une ide
par ligne. Indenter le programme.
3. Faire galement attention la prcision, la stabilit et la scurit.
La rapidit dun algorithme est un lment dun tout dfinissant les qualits de
celui-ci.
Complexite p.25/25