Académique Documents
Professionnel Documents
Culture Documents
Complexité
2
Temps d ’exécution d ’un programme
Mettre en évidence les opérations fondamentales: le temps
est proportionnel au nombre de ces opérations
z Recherche d ’un élément E dans une liste L:
z Multiplication de matrices:
nombre de multiplications et d ’additions
3
Temps d ’exécution d ’un programme
4
Décompte du nombre d ’opérations
fondamentales
P: nombre d ’instructions dans un bloc de programme
P(séquence) = ∑ P(E) ; E: élément de la séquence
P(if C then I1 else I2) P(C) + max(P(I1), P(I2))
P(boucle) = ∑ P(Ii) ; Ii = Ième itération de la
boucle
P(F(n)) s ’écrit en fonction de P(F(k)) pour une
procédure ou fonction récursive J résolution
d ’équations de récurrences
5
Temps d ’exécution d ’un programme
Pour certains problèmes, le temps ne dépend pas seulement
de la taille de la donnée mais aussi de la donnée elle-même
Complexité au mieux
Tmin(n) = min(Temps(d)| d donnée de taille n)
Complexité au pire
Tmax(n) = max(Temps(d)| d donnée de taille n)
Complexité en moyenne
Tmoy(n) = d:donnée∑dep(d)*Temps
taille n
(d)
6
Temps d ’exécution d ’un programme
7
Un exemple de calcul: recherche séquentielle d’un
élément X dans un tableau L
L:tableau [1..n] de Element
X: élément
Début
i←1
Tantque i ≤ n et (L[i] ≠X) faire
i ← i+1
Fintantque
Si i>n alors i ← 0
Fin
8
Ordre de grandeur asymptotique:
la notation Ο
Définition:
f= Θ(g) ssi f= Ο(g) et g= Ο(f)
c'est-à-dire
∃ c ∈ R*+, ∃ d ∈ R*+, ∃ n0 tq
∀ n > n0, d g(n) ≤ f(n) ≤ c g(n)
10
Propriétés de le notation Ο
Ο(1): constante
Ο(log(n)): logarithmique
Ο(n): linéaire
Ο(n log n): n log n
Ο(n²) : quadratique
Ο(n3) : cubique
Ο(2n): exponentielle
12
Croissance comparée des fonctions
fréquemment utilisées en complexité
100000 2n n3
n2
10000
nlog2(n)
1000
n
100
Log2(n)
10
1
2 4 8 16 32 64 128 256
13
Comparaisons des fonctions usuelles
log(n) = Ο (n)
n½= Ο (n)
nk = Ο (nk+1) pour tout k ≥ 0
P(n) = Ο (nk) pour tout polynôme P de degré ≤ k
nk = Ο (2n) pour tout k ≥ 0
2n = Ο (nn)
14
( ouvrons une parenthèse
Rappels d’analyse pour classer les fonctions
Etudier de la limite de f /g pour comparer f et g
Règle de L’Hôpital:
Si f et g sont dérivables et si lim f ( x) = lim g ( x)
x →∞ x →∞
f ( x) f ' ( x)
Alors lim = lim si cette limite existe
x →∞ g ( x ) x →∞ g ' ( x )
15
Et aussi la formule de Stirling
fin de la parenthèse )
à propos de n!
n −n
n!~ 2πn n e
16
Rapport Temps / Taille des données
17
Calcul de la complexité
Pour i de A à B faire
Iteri
Finpour
Si T(Iteri) indépendant de i en 2(f(n)),
alors T(n) = Ο((B-A+1) f(n))
Si T(Iteri) dépendant de i: Titer(n,i)
alors
B
T (n) = O( ∑ T (n,i))
i= A iter
19
Calcul de la complexité
21
Exemple
T(n) temps d ’exécution en
fonction de l ’argument n
base
function fact(n:integer) :integer; T(1) = a
begin récurrence
T(n) = b + T(n-1), pour n>1
if n<=1 then fact := 1
else fact := n* fact(n-1) On démontre par récurrence que
end; T(n) = a + (n-1) b pour n ≥ 1
Donc T(n) = Ο (n)
22
Un exemple: Recherche dichotomique
23
Un exemple: Recherche dichotomique
24
Un exemple: Recherche dichotomique
Procedure dicho(X, L, g, d, resultat res: 0..n)
var m: 1..n
Début
Si g<= d alors
m := (g+d) div 2
Si X = L[m] alors res := m
sinon si X < L[m] alors dicho(X,L,g,m-1,res)
sinon dicho(X,L,m+1,d,res)
sinon res :=0
Fin
25
Un exemple: Recherche dichotomique
Tmax(n) = O(log2n)
26