Vous êtes sur la page 1sur 36

Complexit des algorithmes

Stphane Grandcolas
stephane.grandcolas@univ-amu.fr

Cours complexit Stphane Grandcolas p. 1/2

Algorithmes
P : un problme M : une mthode pour rsoudre le problme P Algorithme : description de la mthode M dans un langage algorithmique

du nom du mathmaticien perse Al Khuwarizmi (780 - 850)

Cours complexit Stphane Grandcolas p. 2/2

Structures algorithmiques
Structures de contrle

squence embranchement (ou slection) boucle (ou itration)


Structures de donnes

constantes variables tableaux structures rcursives (listes, arbres, graphes)

Cours complexit Stphane Grandcolas p. 3/2

Complexit des algorithmes


On veut Evaluer lefcacit de la mthode M Comparer M avec une autre mthode M indpendamment de lenvironnement (machine, systme, compilateur, . . .)

Cours complexit Stphane Grandcolas p. 4/2

Complexit des algorithmes


Evaluation du nombre doprations lmentaires en fonction de la taille des donnes, de la nature des donnes. Notations : n : taille des donnes, T (n) : nombre doprations lmentaires Congurations caractristiques meilleur cas, pire des cas, cas moyen.

Cours complexit Stphane Grandcolas p. 5/2

Evaluation de T (n) (squence)


Somme des cots.

Traitement1 Traitement2

T1 (n) T2 (n)

T (n) = T1 (n) + T2 (n)

Cours complexit Stphane Grandcolas p. 6/2

Evaluation de T (n) (embranchement)


Max des cots.

si < condition > alors Traitement1 T1 (n) max(T1 (n), T2 (n)) sinon Traitement2 T2 (n)

Cours complexit Stphane Grandcolas p. 7/2

Evaluation de T (n) (boucle)


Somme des cots des passages successifs

tant que < condition > faire Traitement Ti (n) n faire


e Ti (n) : cot de la i`me itration

k i=1

Ti (n)

souvent dni par une quation rcursive

Cours complexit Stphane Grandcolas p. 8/2

Evaluation de T (n) (fonctions rcursives)


fonction

1 2 3 4

FunctionRecursive (n) si (n > 1) alors FunctionRecursive(n/2), Traitement(n), FunctionRecursive(n/2),

cot T (n/2) cot C(n) cot T (n/2)

Equation rcursive

T (n) = 2 T (n/2) + C(n)

si C(n) = 1 alors T (n) = K n si C(n) = n alors T (n) = K n log n

Cours complexit Stphane Grandcolas p. 9/2

Notation de Landau O(f (n))

c x f(n)

T(n) = O(f(n))

n0

Caractrise le comportement asymptotique (i.e. quand n ).

T (n) = O(f (n)) si c n0 tels que n > n0 , T (n) c f (n)

Cours complexit Stphane Grandcolas p. 10/2

Notation (f (n))

c 2 x f(n) T(n)

c 1 x f(n) n0 n

T (n) = (f (n)) si c1 , c2 , n0 tels que n > n0 , c1 f (n) T (n) c2 f (n)

Cours complexit Stphane Grandcolas p. 11/2

Exemples

f (n) = n3 + 2 n2 + 4 n + 2 = O(n3 )
(si n 1 alors f (n) 8 n3 )

Cours complexit Stphane Grandcolas p. 12/2

Exemples

f (n) = n3 + 2 n2 + 4 n + 2 = O(n3 )
(si n 1 alors f (n) 8 n3 )

f (n) = n log n + 12 n + 888 = O(n log n)

Cours complexit Stphane Grandcolas p. 12/2

Exemples

f (n) = n3 + 2 n2 + 4 n + 2 = O(n3 )
(si n 1 alors f (n) 8 n3 )

f (n) = n log n + 12 n + 888 = O(n log n) 2n = O(2n ) f (n) = 1000 n10 n7 + 12 n4 + 1000

Cours complexit Stphane Grandcolas p. 12/2

Les principales classes de complexit

O(1) O(log n) O(n) O(n log n) O(n2 ) O(2n )

temps constant logarithmique linaire tris (par changes) quadratique, polynomial exponentiel (problmes trs difciles)

Cours complexit Stphane Grandcolas p. 13/2

Exemple : permutation
fonction

1 2 3 4

permutation (S, i, j) tmp := S[i], S[i] := S[j], S[j] := tmp, renvoyer S

cot c1 cot c2 cot c3 cot c4

Cot total T (n) = c1 + c2 + c3 + c4 = O(1)

Cours complexit Stphane Grandcolas p. 14/2

Exemple : recherche squentielle


fonction

1 2 3 4

recherche (x, S, n) i := 1, tant que ((i < n) et (S[i] = x)) faire i := i + 1, renvoyer (S[i] = x)

(n fois)

Pire des cas : n fois la boucle T (n) = 1 + n 1 + 1 = O(n) i=1

Cours complexit Stphane Grandcolas p. 15/2

Exemple : tri bulle


fonction

1 2 3 4

Tri (S, n) pour i := n 2 faire (n 1 fois) pour j := 1 i 1 faire (i 1 fois) si (S[j] > S[j + 1]) alors permuter S[j] et S[j + 1] dans S,

n1

T (n) = Cperm
i=1

Cperm n (n 1) = O(n2 ) i= 2

Cours complexit Stphane Grandcolas p. 16/2

Equations rcursives
Boucles itratives, fonctions rcursives (approches de type diviser pour rgner notamment)

Cas gnral T (n) = a T (n/b) + f (n) mthode par substitution, mthode par dveloppement itratif, mthode gnrale.

Cours complexit Stphane Grandcolas p. 17/2

Mthode par substitution [Equations rcursives]


Principe : on vrie une intuition T (n) = a T (n/b) + f (n) et T (1) = c

Hypothse T (n) = g(n) (intuition) Conclusion a g(n/b) + f (n) = g(n) et g(1) = c dmontrer en xant les constantes

Cours complexit Stphane Grandcolas p. 18/2

Mthode par substitution [Equations rcursives]


fonction RechercheDichotomique (x, S1 , . . . , Sn )
1 2 3 4 5 6 7

g := 0, d := n + 1, tant que (g < d 1) faire si (x > S((g+d)/2) ) alors g := (g + d)/2,


sinon

g < position d stoppe quand g = d 1 g < (g + d)/2 < d et donc g < position d et donc g < position d g < position d et g = d 1

d := (g + d)/2, renvoyer d,

Nombre ditrations

T (n) = 1 + T (n/2)

Cours complexit Stphane Grandcolas p. 19/2

Mthode par substitution [Equations rcursives]


T (n) = 1 + T (n/2) et T (1) = 1 intuition Hypothse T (n) = O(log2 n) T (n) = a log2 n + c

donc T (n/2) = a log2 n a + c en substituant on a T (n) = 1 + a log2 n a + c donc 1 a + c = c et a = 1, et puisque T (1) = 1 donc c = 1

Conclusion

T (n) = log2 n + 1

sil y a un lment on fera une itration

Cours complexit Stphane Grandcolas p. 20/2

Mthode itrative [rappel sommations]

n1 i=1

i= x =
i

n(n1) 2

= O(n2 )

n i=0 n i=0

xn+1 1 x1

2i = 2n+1 1

Cours complexit Stphane Grandcolas p. 21/2

Mthode itrative [Equations rcursives]


fonction TriParFusion (S, n)
1 2 3 3 4 5 6
si

(n 1) alors renvoyer S (n) (T (n/2)) (T (n/2)) (n)

dcomposer S en S1 et S2 , S1 :=TriParFusion(S1 ), S2 :=TriParFusion(S2 ), S :=fusion(S1 , S2 ), renvoyer S

T (n) = 1 + n + 2 T (n/2) + n

et

T (1) = 1

Cours complexit Stphane Grandcolas p. 22/2

Mthode itrative [Equations rcursives]


T (1) = 1 T (n) = 2 n + 1 + 2 T (n/2)

Cours complexit Stphane Grandcolas p. 23/2

Mthode itrative [Equations rcursives]


T (1) = 1 T (n) = 2 n + 1 + 2 T (n/2)
donc T (n/2) = n + 1 + 2 T (n/4)

T (n) = (2 n + 1) + (2 n + 2) + 4 T (n/4)

Cours complexit Stphane Grandcolas p. 23/2

Mthode itrative [Equations rcursives]


T (1) = 1 T (n) = 2 n + 1 + 2 T (n/2)
donc T (n/2) = n + 1 + 2 T (n/4)

T (n) = (2 n + 1) + (2 n + 2) + 4 T (n/4)
or T (n/4) = n/2 + 1 + 2 T (n/8)

T (n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T (n/8)

...

Cours complexit Stphane Grandcolas p. 23/2

Mthode itrative [Equations rcursives]


T (1) = 1 T (n) = 2 n + 1 + 2 T (n/2)
donc T (n/2) = n + 1 + 2 T (n/4)

T (n) = (2 n + 1) + (2 n + 2) + 4 T (n/4)
or T (n/4) = n/2 + 1 + 2 T (n/8)

T (n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T (n/8)

...
T (n) =
log n1 (2 i=0

n + 2i ) + 2log n

Cours complexit Stphane Grandcolas p. 23/2

Mthode itrative [Equations rcursives]


T (1) = 1 T (n) = 2 n + 1 + 2 T (n/2)
donc T (n/2) = n + 1 + 2 T (n/4)

T (n) = (2 n + 1) + (2 n + 2) + 4 T (n/4)
or T (n/4) = n/2 + 1 + 2 T (n/8)

T (n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T (n/8)

...
T (n) =
log n1 (2 i=0

n + 2i ) + 2log n
log n1 i=0

T (n) = 2n log n +

2i + n

Cours complexit Stphane Grandcolas p. 23/2

Mthode itrative [Equations rcursives]


T (1) = 1 T (n) = 2 n + 1 + 2 T (n/2)
donc T (n/2) = n + 1 + 2 T (n/4)

T (n) = (2 n + 1) + (2 n + 2) + 4 T (n/4)
or T (n/4) = n/2 + 1 + 2 T (n/8)

T (n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T (n/8)

...
T (n) =
log n1 (2 i=0

n + 2i ) + 2log n
log n1 i=0 Pn

T (n) = 2n log n +

2i + n
Plog n1
i=0

et comme

i n+1 1, on a i=0 2 = 2

2i = 2log n 1

T (n) = 2n log n + 2n 1 = O(n log n)

Cours complexit Stphane Grandcolas p. 23/2

Mthode itrative [Equations rcursives]


n

n/2

n/2

hauteur log2 n

n/4

n/4

n/4

n/4

n/8 1

n/8 ....

n/8

n/8 n/8

n/8 n/8

n/8

1 1

O(k) traitements pour dcomposer et fusionner une suite de longueur k

T (n) = 2 n log2 n

Cours complexit Stphane Grandcolas p. 24/2

Mthode gnrale [Equations rcursives]


T (n) = a T (n/b) + f (n)
avec a 1, b > 1 et f (n) est positive asymptotiquement. si > 0, f (n) = O(nlogb
a

) alors T (n) = (nlogb a ),


a

si f (n) = (nlogb a ) alors T (n) = (nlogb

lg n),

si > 0, f (n) = (nlogb a+ ) et si c < 1, n0 , n > n0 , a f (n/b) c f (n) alors T (n) = (f (n))

Cours complexit Stphane Grandcolas p. 25/2

Mthode gnrale [Equations rcursives]


T (n) = a T (n/b) + f (n)
avec a 1, b > 1 et f (n) est positive asymptotiquement. si > 0, f (n) = O(nlogb
a

) alors T (n) = (nlogb a ),


a

si f (n) = (nlogb a ) alors T (n) = (nlogb

lg n),

si > 0, f (n) = (nlogb a+ ) et si c < 1, n0 , n > n0 , a f (n/b) c f (n) alors T (n) = (f (n)) Le tri par fusion (T (n) = 2n + 1 + 2 T (n/2)) est dans le cas 2 : a = b = 2 et f (n) = 2n + 1 = (n) et T (n) = (n log n)

Cours complexit Stphane Grandcolas p. 25/2

Mthode par substitution [Equations rcursives]

T (n) = 2n + 1 + 2 T (n/2) et T (1) = 1 Hypothse : T (n) = O(n log n) = an log n + bn + c


et donc T (n/2) = a/2 n log n + (b a)n/2 + c T (n) = 2n + 1 + 2T (n/2) = 2n + 1 + an log n + (b a)n + 2c = an log n + (b a + 2)n + 2c + 1 (1) b = b a + 2 et a = 2 (2) c = 2c + 1 et c = 1 (3) T (1) = b a + 2 + 2c + 1 = 1 donc b = 2 et nalement T (n) = 2n log n + 2n 1 = O(n log n)

Cours complexit Stphane Grandcolas p. 26/2

Temps de calcul [simulation]


T aille 10 100 1000 104 105 106 log2 n 0.003 ms 0.006 ms 0.01 ms 0.013 ms 0.016 ms 0.02 ms n 0.01 ms 0.1 ms 1 ms 10 ms 100 ms 1s n log2 n 0.03 ms 0.6 ms 10 ms 0.1 s 1.6 s 20 s n2 0.1 ms 10 ms 1s 100 s 3 heures 10 jours 2n 1 ms 1014 siecles

Cours complexit Stphane Grandcolas p. 27/2

Temps de calcul [simulation]


nT s = nombre dinstructions par seconde nT s 106 107 109 1012 2n 20 23 30 40 n2 1000 3162 31000 106 n log2 n 63000 600000 4.107 3.1010 n 106 107 109 log2 n 10300000 103000000

Cours complexit Stphane Grandcolas p. 28/2