Académique Documents
Professionnel Documents
Culture Documents
LA COMPLEXITÉ
ALGORITHMIQUE
Comment peut-on comparer les algorithmes ?
Imaginez qu’on a deux algorithmes A1 et A2, les deux peuvent
résoudre le même problème P.
Les deux nous donnent des résultats corrects.
f(n) = 2+ 8 n +1 = 8 n+ 3.
D’après notre analyse on a pu approximativement compter le
nombre d’instruction que fait notre algorithme, cette
approximation reste encore dépendante du contenu de
tableau T, en fait, la façon avec laquelle ce dernier est
remplis peut affecter le nombre d’instructions exécutées par
notre algorithme.
Imaginez les cas suivants :
1. L’élément X qu’on cherche figure dans la première cellule
du tableau Tab,
2. L’élément X se trouve au milieu du tableau.
3. L’élément X figure dans la dernière cellule ou bien n’existe
pas dans le tableau.
En analysant ensemble ces trois cas,
dire que la fonction n’est pas nulle mais elle est constante.
• f(n) = n2+3n + 100 , ce qui donnera f(n) = n2, ici n2 croit
plus vite que 3n , donc on ignore 3n et aussi la constante
100.
• f(n) = n + √𝑛, ici f(n) = n, vu que elle croît plus vite que
la racine carrée de n, donc c’est ce terme qui domine.
L’algorithme décrit dans la figure 1, suit une stratégie nommée recherche
qui approxime son nombre d’instructions est aussi une fonction linéaire.
La notation thêta
5n + 12 ∈ Θ( 5n )
6n + 10n ∈ Θ(10n)
Complexité :
l’autre indépendante?
• De même si on a un algorithme avec trois boucles
consécutives, laquelle sera elle considérée pour estimer
son comportement asymptotique ?
• Le cas d’un algorithme qui dans une boucle appel une
fonction et cette dernière est implémentée à l’aide d’une
boucle, que faire dans ce cas ?
La notation Big O (appelée aussi la notation de
Landau) :
La notation thêta permet d’exprimer la complexité actuelle
d’un algorithme, il existe une autre notation qui permet de
décrire la limite maximale de la complexité d’un
algorithme, ceci veut dire qu’en modifiant l’algorithme pour
le rendre plus pire on ne peut obtenir au maximum O.
exemple l’algorithme de la figure 1 est Θ(n) et aussi O(n).
• Exemple de complexités couramment trouvées, dans la figure 3
on peut voir comment ces complexités évoluent :
La complexité constante O(1) :
for i = 1 to n do
for j = 1 to 2n + 1 do
end for
end for
for i = 1 to 10 do
for j = 1 to n do
end for
end for
for i = 1 to n do
for j = i to n do
end for
end for
for i = 1 to n do
for j = 1 to 2 ∗ i + 1 do
end for
end for
for i = 1 to n ∗ n do
for j = 1 to i do
end for
end for
• for (i = 0 to m) do
• t ← 1
• while (t < m) do
• print (« Hello world »)
• t ← t ∗ 2
• end while
• end for
Exercice 2
Soit deux tableaux T1 et T2 , de différentes tailles, contenants
des entiers:
• Ecrire un algorithme qui calcule la somme des éléments
d’un tableau. Compter son nombre d’instructions et
déterminer sa complexité.
• Ecrire un algorithme qui mit dans un troisième tableau T3
d’instructions et sa complexité.
complexité.
FIN