Post on 04-Apr-2018
7/30/2019 Complexit des algorithmes
1/36
Complexit des algorithmes
Stphane Grandcolas
stephane.grandcolas@univ-amu.fr
Cours com lexit St hane Grandcolas . 1/28
7/30/2019 Complexit des algorithmes
2/36
Algorithmes
P : un problme
M : une mthode pour rsoudre le problme P
Algorithme : description de la mthode M dans unlangage algorithmique
du nom du mathmaticien perse Al Khuwarizmi(780 - 850)
Cours com lexit St hane Grandcolas . 2/28
7/30/2019 Complexit des algorithmes
3/36
7/30/2019 Complexit des algorithmes
4/36
Complexit des algorithmes
On veut
Evaluer lefficacit de la mthode M
Comparer M avec une autre mthode M
indpendamment de lenvironnement (machine, systme,
compilateur, . . .)
Cours com lexit St hane Grandcolas . 4/28
7/30/2019 Complexit des algorithmes
5/36
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
Configurations caractristiques
meilleur cas,
pire des cas,
cas moyen.
Cours com lexit St hane Grandcolas . 5/28
7/30/2019 Complexit des algorithmes
6/36
Evaluation de T(n) (squence)
Somme des cots.
Traitement1 T1(n)
Traitement2 T2(n)
T(n) = T1(n) + T2(n)
Cours com lexit St hane Grandcolas . 6/28
7/30/2019 Complexit des algorithmes
7/36
Evaluation de T(n) (embranchement)
Max des cots.
si < condition > alors
Traitement1 T1(n)
sinon
Traitement2 T2(n)
max(T1(n), T2(n))
Cours com lexit St hane Grandcolas . 7/28
7/30/2019 Complexit des algorithmes
8/36
7/30/2019 Complexit des algorithmes
9/36
7/30/2019 Complexit des algorithmes
10/36
Notation de Landau O(f(n))
c f(n)x
0nn
T(n) = O(f(n))
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 com lexit St hane Grandcolas . 10/28
7/30/2019 Complexit des algorithmes
11/36
7/30/2019 Complexit des algorithmes
12/36
Exemples
f(n) = n3 + 2 n2 + 4 n + 2 = O(n3)
(si n 1 alors f(n) 8 n3
)
Cours com lexit St hane Grandcolas . 12/28
7/30/2019 Complexit des algorithmes
13/36
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 com lexit St hane Grandcolas . 12/28
7/30/2019 Complexit des algorithmes
14/36
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)
f(n) = 1000 n10 n7 + 12 n4 +2n
1000= O(2n)
Cours com lexit St hane Grandcolas . 12/28
7/30/2019 Complexit des algorithmes
15/36
7/30/2019 Complexit des algorithmes
16/36
7/30/2019 Complexit des algorithmes
17/36
7/30/2019 Complexit des algorithmes
18/36
Exemple : tri bulle
fonction Tri (S, n)
1 pour i := n 2 faire (n 1 fois)
2 pour j := 1 i 1 faire (i 1 fois)
3 si (S[j] > S[j + 1]) alors
4 permuter S[j] et S[j + 1] dans S,
T(n) = Cperm n1
i=1
i =Cperm n (n 1)
2= O(n2)
Cours com lexit St hane Grandcolas . 16/28
E i i
7/30/2019 Complexit des algorithmes
19/36
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 com lexit St hane Grandcolas . 17/28
7/30/2019 Complexit des algorithmes
20/36
7/30/2019 Complexit des algorithmes
21/36
Mthode par s bstit tion
7/30/2019 Complexit des algorithmes
22/36
Mthode par substitution [Equations rcursives]
T(n) = 1 + T(n/2) et T(1) = 1
intuition T(n) = O(log2 n)
Hypothse 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 com lexit St hane Grandcolas . 20/28
Mthode itrative
7/30/2019 Complexit des algorithmes
23/36
Mthode itrative [rappel sommations]
n1i=1 i =
n(n1)2
= O(n2)
ni=0 x
i = xn+1
1x1
ni=0 2i = 2n+1 1
Cours com lexit St hane Grandcolas . 21/28
Mthode itrative [E i i ]
7/30/2019 Complexit des algorithmes
24/36
Mthode itrative [Equations rcursives]
fonction TriParFusion (S, n)
1 si (n 1) alors
2 renvoyer S
3 dcomposer S en S1 et S2, (n)
3 S1 :=TriParFusion(S1), (T(n/2))
4 S2 :=TriParFusion(S2), (T(n/2))5 S :=fusion(S1, S2), (n)
6 renvoyer S
T(n) = 1 + n + 2 T(n/2) + n et T(1) = 1
Cours com lexit St hane Grandcolas . 22/28
7/30/2019 Complexit des algorithmes
25/36
Mthode itrative [Equations rcursives]
7/30/2019 Complexit des algorithmes
26/36
Mthode itrative [Equations rcursives]
T(1) = 1T(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 com lexit St hane Grandcolas . 23/28
7/30/2019 Complexit des algorithmes
27/36
Mthode itrative [Equations rcursives]
7/30/2019 Complexit des algorithmes
28/36
Mthode itrative [Equations rcursives]
T(1) = 1T(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
i=0 (2 n + 2i) + 2log n
Cours com lexit St hane Grandcolas . 23/28
Mthode itrative [Equations rcursives]
7/30/2019 Complexit des algorithmes
29/36
Mthode itrative [Equations rcursives]
T(1) = 1T(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 n1i=0 (2 n + 2
i) + 2log n
T(n) = 2n log n +
log n1i=0 2
i + n
Cours com lexit St hane Grandcolas . 23/28
Mthode itrative [Equations rcursives]
7/30/2019 Complexit des algorithmes
30/36
Mthode itrative [Equations rcursives]
T(1) = 1T(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 n1i=0 (2 n + 2
i) + 2log n
T(n) = 2n log n +
log n1i=0 2
i + n
et commeP
n
i=0 2i = 2n+1 1, on a
Plog n1i=0 2
i = 2log n 1
T(n) = 2n log n + 2n 1 = O(n log n)
Cours com lexit St hane Grandcolas . 23/28
7/30/2019 Complexit des algorithmes
31/36
7/30/2019 Complexit des algorithmes
32/36
Mthode gnrale [Equations rcursives]
7/30/2019 Complexit des algorithmes
33/36
t ode g a e [ quat o s cu s es]
T(n) = a T(n/b) + f(n)
avec a 1, b > 1 et f(n) est positive asymptotiquement.
si > 0, f(n) = O(nlogba
) alors T(n) = (nlogba
),
si f(n) = (nlogb a) alors T(n) = (nlogb a 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 com lexit St hane Grandcolas . 25/28
7/30/2019 Complexit des algorithmes
34/36
7/30/2019 Complexit des algorithmes
35/36
7/30/2019 Complexit des algorithmes
36/36