Vous êtes sur la page 1sur 22

COMPLEXITÉ DES ALGORITHMES

SÉRIE D’EXERCICES
EXERCICE 1
Exercice 1 :
Soient A et B deux matrice et x un vecteur.
1. Ecrire l’algorithme de Somme des éléments du vecteur x de taille n et
donner la complexité,
2. Ecrire l’algorithme de produit de la matrice A par le vecteur x et donner
sa complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m)
3. Ecrire l’algorithme de somme des deux matrices A et B et donner sa
complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et
B(n,m)
4. Ecrire l’algorithme de produit des deux matrices A et B et donner sa
complexité.
− Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et
B(m,p)
Exercice 1 :
Soient :

TAB = Tableau [1..1000] d’entiers


MAT = Tableau [1..1000; 1..1000] d’entiers
Exercice 1-1 :
Ecrire l’algorithme de Somme des éléments du vecteur x de taille n et donner
la complexité,

Somme (x : TAB , n : entier) : entier Coût du corps constant (fixe)


VAR S, i : entier ➔ nb_itérations * C_corps
Début ➔ (sub – inf +1 ) * C_corps
S=0
pour i de 1 à n faire
S= S + x[i] ➔ 1 op 1 * (n-1+1) = n = O(n)
fin pour
Somme  S
FIN
Exercice 1-1 :
Ecrire l’algorithme de Somme des éléments du vecteur x de taille n et donner
la complexité,
Amélioration
Somme (x : TAB , n : entier) : entier
VAR S, i : entier
Début
S= x[1]
pour i de 2 à n faire
S= S + x[i] ➔ 1 op 1 * (n-2+1) = n-1 = O(n)
fin pour
Somme  S
FIN
Exercice 1-2 :
Ecrire l’algorithme de produit de la matrice A par le vecteur x et donner sa
complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m)
Matrice carrée
ProduitAx (A : MAT, x : TAB, n : entier, var y: TAB)
VAR S, i : entier
Début

Pour i de 1 à n
y[i]  0
pour j de 1 à n faire 2n * (n-1+1)
y[i]= y[i] + A[i,j] * x[j] ➔ 2 op 2 * (n-1+1)
= 2n = O(n) = 2n*n =2n²
fin pour = O(n²)
Fin pour
FIN
Exercice 1-2 :
Ecrire l’algorithme de produit de la matrice A par le vecteur x et donner sa
complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m)
Matrice carrée
Amélioration
ProduitAx (A : MAT, x : TAB, n : entier, var y: TAB)
VAR S, i : entier
Début

Pour i de 1 à n
y[i]  A[i,1] * x[1] ➔ 1 op (2n-2+1)*(n-1+1)
pour j de 2 à n faire = (2n-1) *n
2 * (n-2+1)
y[i]= y[i] + A[i,j] * x[j] ➔ 2 op = 2n-2
= 2n²-n
fin pour = O(n²)
= O(n)
Fin pour
FIN
Exercice 1-2 :
Ecrire l’algorithme de produit de la matrice A par le vecteur x et donner sa
complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m)
Matrice rectangulaire
Amélioration
ProduitAx (A : MAT, x : TAB, n,m : entier, var y: TAB)
VAR S, i : entier
Début

Pour i de 1 à n
y[i]  A[i,1] * x[1] ➔ 1 op (2m-2+1)*(n-1+1)
pour j de 2 à m faire = (2m-1) *n
2 * (m-2+1)
y[i]= y[i] + A[i,j] * x[j] ➔ 2 op = 2m-2
= 2nm-m
fin pour = O(nm)
= O(m)
Fin pour
FIN
Exercice 1-3 :
Ecrire l’algorithme de somme des deux matrices A et B et donner sa
complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et
B(n,m) Matrice carrée
SommeAB (A,B : MAT, n : entier, var C : MAT)
VAR S, i : entier
Début

Pour i de 1 à n faire
pour j de 1 à n faire n * (n-1+1)
C[i,j]= A[i,j] + B[i,j] 1 * (n-1+1)
➔ 1 op = n*n = n²
= n = O(n)
fin pour = O(n²)
Fin pour
FIN
Exercice 1-3 :
Ecrire l’algorithme de somme des deux matrices A et B et donner sa
complexité.
– Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et
B(n,m) Matrice rectangulaire
SommeAB (A,B : MAT, n,m : entier, var C : MAT)
VAR S, i : entier
Début

Pour i de 1 à n faire
pour j de 1 à m faire m * (n-1+1)
C[i,j]= A[i,j] + B[i,j] 1 * (m-1+1)
➔ 1 op = m*n = nm
= m = O(m)
fin pour = O(nm)
Fin pour
FIN
Exercice 1-4 :
Ecrire l’algorithme de produit des deux matrices A et B et donner sa
complexité.
− Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et B(m,p)
Matrice carrée
ProduitAB (A,B : MAT, n : entier, var C : MAT)
VAR S, i : entier
Début

Pour i de 1 à n faire
Pour j de 1 à n faire
C[i,j] = 0 2n²*(n-1+1)
pour k de 1 à n faire 2*(n-1+1) 2n*(n-1+1) = 2n²*n
C[i,j] = C[i,j]+A[i,k]*B[k,j] ➔ 2 op = 2n = 2n² = 2n3
fin pour = O(n) = O(n²) = O(n3)
fin pour
Fin pour
FIN
Exercice 1-4 :
Ecrire l’algorithme de produit des deux matrices A et B et donner sa
complexité.
− Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et B(m,p)
Matrice carrée
Amélioration
ProduitAB (A,B : MAT, n : entier, var C : MAT)
VAR S, i : entier
Début

Pour i de 1 à n faire
Pour j de 1 à n faire
C[i,j] = A[i,1]*B[1,j] ➔ 1 op
(2n-2+1)*n
(2n²-n)*n
pour k de 2 à n faire 2*(n-2+1) =(2n-1)*n
= 2n3-n²
C[i,j] = C[i,j]+A[i,k]*B[k,j] ➔ 2 op = 2n -2 = 2n²-n
= O(n3)
fin pour = O(n) = O(n²)
fin pour
Fin pour
FIN
Exercice 1-4 :
Ecrire l’algorithme de produit des deux matrices A et B et donner sa
complexité.
− Etudier le cas de matrices carrées de taille (n,n) et rectangulaires A(n,m) et B(m,p)
Matrice rectangulaire
Amélioration
ProduitAB (A,B : MAT, n,m,p : entier, var C : MAT)
VAR S, i : entier
Début

Pour i de 1 à n faire
Pour j de 1 à p faire
C[i,j] = A[i,1]*B[1,j] ➔ 1 op
pour k de 2 à m faire (2m-1)*p (2mp-p)*n
2*(m-2+1)
C[i,j] = C[i,j]+A[i,k]*B[k,j] ➔ 2 op = 2m-2 = 2mp-p = 2nmp-np
= O(mp) = O(nmp)
fin pour = O(m)
fin pour
Fin pour
FIN
EXERCICE 2
Exercice 2-1 :
Calculer la complexité des algorithmes suivants :

Si A[i]=0 alors
A[i]= B[i]*2
Sinon
pour j de 1à n faire
A[i]= A[i]+B[j]*2
Fin pour
Fin Si

C1(A1) = 1 test + 1 op arith = 2 = O(1)➔ Meilleur des cas


C(A1) =

C2(A1) = 1 test + n * 2 = 2n+1= O(n) ➔ Pire des cas


Exercice 2-2 :
Calculer la complexité des algorithmes suivants :

Pour i de 1 à n faire
Si A[i]=0 alors
A[i]= B[i]*2
Sinon
pour j de 1à n faire
A[i]= A[i]+B[j]*2
Fin pour
Fin Si
Fin Pour
C(corps) = 1 test + 1 op arith = 2
➔ Meilleur des cas
C1(A2) = n * 2 = 2n = O(n)
C(A2) =
C(corps) = 1 test + n * 2 = 2n +1 ➔ Pire des cas
C2(A2) = n * (2n+1) = 2n²+n = O(n²)
Exercice 2-3 :
Calculer la complexité des algorithmes suivants :

Pour i de 1à n faire
Si A[i]=0 alors
Pour j de 1à n faire
A[i,j]= B[i,j]*2
Fin Pour
Fin Si
Fin Pour

C(corps) = 1 test + n*1 = n+1 ➔ Pire des cas


C1(A2) = n * (n+1) = n²+n = O(n²)
C(A2) =
C(corps) = 1 test ➔ Meilleur des cas
C2(A2) = n * (1) = n = O(n)
EXERCICE 3
Exercice 3 :
Déterminer les complexités du nid suivant dans le meilleur et le pire des cas :
Pour 𝑖 𝑑𝑒 1 à 𝑛 faire
Pour 𝑗 𝑑𝑒 1 à 𝑛 faire
Si 𝐴 𝑖, 𝑗 ≠ 0 Alors
Pour 𝑘 𝑑𝑒 1 à 𝑛 faire
Si 𝐵 𝑘, 𝑗 ≠ 0 Alors
C(𝑗, 𝑘) = 𝐴(𝑘, 𝑗) ∗ 𝐵(𝑖, 𝑘)
Fin Si
Fin Pour
Fin Si
Fin Pour
Fin Pour

A et B sont deux tableaux de booléens, 'un test est une opération logique de coût 1,
l'opération booléenne * est de coût 1.
Exercice 3 :
Meilleur des cas :
Pour 𝑖 𝑑𝑒 1 à 𝑛 faire
Pour 𝑗 𝑑𝑒 1 à 𝑛 faire
Si 𝐴 𝑖, 𝑗 ≠ 0 Alors
Pour 𝑘 𝑑𝑒 1 à 𝑛 faire
Si 𝐵 𝑘, 𝑗 ≠ 0 Alors
C(𝑗, 𝑘) = 𝐴(𝑘, 𝑗) ∗ 𝐵(𝑖, 𝑘)
Fin Si
Fin Pour
Fin Si
Fin Pour
Fin Pour
A(i,j) est toujours = 0
Si 𝐴 𝑖, 𝑗 ≠ 0 Alors ➔ 1 test
Pour 𝑗 𝑑𝑒 1 à 𝑛 ➔ 1*n
Pour i 𝑑𝑒 1 à 𝑛 ➔ n * n = n² = O(n²)
Exercice 3 :
Pire des cas :
Pour 𝑖 𝑑𝑒 1 à 𝑛 faire
Pour 𝑗 𝑑𝑒 1 à 𝑛 faire
Si 𝐴 𝑖, 𝑗 ≠ 0 Alors
Pour 𝑘 𝑑𝑒 1 à 𝑛 faire
Si 𝐵 𝑘, 𝑗 ≠ 0 Alors
C(𝑗, 𝑘) = 𝐴(𝑘, 𝑗) ∗ 𝐵(𝑖, 𝑘)
Fin Si
Fin Pour
Fin Si
Fin Pour
Fin Pour
A(i,j) et B(k,j) sont toujours ≠ 0
Si 𝐵 𝑘, 𝑗 ≠ 0 Alors ➔ 1 test 2 op
C(𝑗, 𝑘) = 𝐴(𝑘, 𝑗) ∗ 𝐵(𝑖, 𝑘) ➔ 1 op
Pour 𝑘 𝑑𝑒 1 à 𝑛 ➔ 2*n
Si 𝐴 𝑖, 𝑗 ≠ 0 Alors ➔ 1 test
Pour 𝑗 𝑑𝑒 1 à 𝑛 ➔ (1+2n) * n = 2n² + n
Pour i 𝑑𝑒 1 à 𝑛 ➔ (2n² + n)*n = 2n3 + n² = O(n3)

Vous aimerez peut-être aussi