Académique Documents
Professionnel Documents
Culture Documents
Séquence
La complexité d’une séquence de n instructions "i" est égale à la somme des complexités
de chaque instruction "i" qui la compose. Coût Séquence(d)=∑i=1...n coût Instruction i(d)
Choix
La complexité d’une instruction conditionnelle:
Si <condition> alors Séquence1 sinon Séquence2 finsi,
Choix
La complexité du choix est égale à la somme de la complexité d’évaluation de la
condition et la plus grande complexité entre la séquence d’instructions exécutée si la condition
est vraie et celle exécutée si la condition est fausse.
Coût Choix(d)= coût évaluation-condition(d) + Max (coûtséquence1(d), coûtséquence2(d))
Répétition
La complexité d’une boucle est égale à la somme de la complexité de la séquence
d’instructions qui constitue le corps de la boucle et celle de l’évaluation de la condition de
sortie. Coût Boucle(d)= coût évaluation-condition-sortie(d) + coût séquence(d)
En detail
Coût Boucle(d)= coût condition (d) * (Nbre-itération + 1) + coût séquence(d) * Nbre-itération
Sous-programme
Pour les appels de procédures/fonctions (sans récursivité), la complexité est égale à
la somme des complexités de chacune de ses instructions. Pour les procédures et fonctions
récursives, l’analyse donne en général lieu à la résolution de relations de récurrences.
Exemple 3:
Soit le code suivant d’un algorithme de Tri (dit: «Tri par Sélection »). Trouvez le nombre
d’actions exécutées et la complexité de cet algorithme?
Coût Tri(m)= = [(m) + 4(m − 1)] θ(1) + [(m-1)(m+2)/2] θ(1) + 3[m(m−1)/2] θ(1)
= [m + 4m − 4 + (m2+m)/2 − 1 + (3m2−3m)/2] θ(1)
= (5m − 5 + 4m2/2 − m) θ(1) Algorithme TRI
1. Pour i←1 jusqu’à m-1 faire
= (2m2 + 4m −5) θ(1) 2. min-pos ← i;
CoûtTRI (m) ~ θ (m2) 3. min ← t[min-pos];
4. pour j← i+1 jusqu’à m faire
5. Si (t[j] < min) alors
(2 boucles imbriquées, pas =1) 6. min-pos ← j
d’où Tri quadratique 7. min ← t[min-pos]
Finsi
Finpour
8. t[min-pos] ← t[i];
9. t[i] ← min
Finpour
Exemple 4:
Algo. A Analysez la complexité des algorithmes suivants en déterminant
… l’ordre du temps de calcul, pour chacun d’eux.
Début
1. i = N Algo. B
2. tant que i >= 0 Faire …
3. i = i – 2 Début Algo. D
fintq 1. i=1 …
Fin 2. tant que i <= N faire Début
3. J=1 1. i = N
Algo. C
4. tant que J <= N faire
… 2. tant que i >= 1 faire
Début 5. J=J+1
ftq 3.i = i / 2
1. i =1
2. tant que i <= N faire 6. i=i+1 ftq
3. i = i*2 Ftq Fin
ftq
Fin
L’ordre de grandeur en temps de ces 4 algorithmes est illustré dans le tableau ci-dessous, avec:
1. Rappel: boucle avec pas =1, Nbre-itération= (V.F–V.I + 1)
2. Maintenant boucle avec pas < >1, nous posons K= Nbre-itération et il faut
raisonner pour trouver K.
Actions Algo.A Algo.B Algo.C Algo.D
1 ϴ(1) ϴ(1) ϴ(1) ϴ(1)
2 (K+1)ϴ(1) (N-1+1+1) ϴ(1)=(N+1)ϴ(1) (K+1)ϴ(1) (K+1)ϴ(1)
3 K ϴ(1) (N-1+1) ϴ(1)= Nϴ (1) Kϴ (1) Kϴ(1)
N (N-
4 - - -
1+1+1)ϴ(1)=N(N+1)ϴ(1)
5 - (N) (N)ϴ(1)= N2ϴ (1) - -
6 - Nϴ(1) - -
CoûtAlgo.A(N)=
(1+K+1+K)ϴ(1) CoûtAlgo.D(N) ≈
total
=(N+4)ϴ(1) CoûtAlgo.B(N) ≈ ϴ (N2) CoûtAlgo.C(N)≈ϴ (logN)
ϴ (logN)
≈ϴ(N)
Calcul du Nbre-itération: K pour L’ Algorithme A
Algo. A Algo. A
…
à l’étape 1 (iteration 1) , I=N Début
à l’étape 2, I=N-2 1. i = N
2. tant que i >= 0 Faire
à l’étape 3, I= (N-2 ) –2= N-4 = N-2*2= N-2*(3-1) 3. i = i – 2
à l’étape 4, I= ((N-4 ) –2)= N - 6 = N-2*3= N-2*(4-1) fintq
Fin
à l’étape K, I= N-2*(K-1)
à la fin I=0 I= N-2*(K-1) = 0 2*(K-1)=N K= N/2 +1
Remplaçons le k (du tableau) par cette valeur:
CoûtAlgo.A(N)= (1+K+1+K)ϴ(1) = (2K +2)ϴ(1)=(2 (N/2 +1) +2) ϴ(1)= (N+4)ϴ(1)
CoûtAlgo.A(N) = (N+4)ϴ(1) ≈ϴ(N) K
Calcul du Nbre-itération: K pour L’ Algorithme C
Algo. C Algo. C
…
A l’étape 1, I=1
Début
A l’étape 2, I=2*1=22-1 1. i =1
2. tant que i <= N faire
A l’étape 3, I= 2*2 *1=22= 23-1
3. i = i*2
A l’étape 4, I= 2*2*2 *1= 23= 24-1 ftq
A l’étape K, I= 2K-1 Fin
…
A la fin I=N I= 2K-1 = N K= logN +1
CoûtAlgo.C(N)=(1+K+1+K)ϴ(1)= (2K +2)ϴ(1)=(2 (logN +1) +2) ϴ(1)= (2logN +4) ϴ(1)
CoûtAlgo.C(N) ≈ ϴ(logN)
Calcul du Nbre-itération: K pour L’ Algorithme D
Algo. D Algo. D
A l’étape 1, I=N …
Début
A l’étape 2, I=N/2 1. i = N
A l’étape 3, I= N/2*2 2. tant que i >= 1 faire
3. i = i / 2
A l’étape 4, I= N/2*2*2= N/ 24-1 - ftq
A l’étape K, I= N/2K-1 Fin
…
A la fin I=1 I= N/2K-1 = 1 alors 2K-1 = N K= logN +1