Algo 4. Complexité
Algo 4. Complexité
Algo 4. Complexité
Complexité
Algorithmique
3
Exemple1 :
{ – 2 affectations,
– N+1 comparaisons,
int acc = 0 , nb = 1 ; – N sommes et affectations,
while ( nb < = N ) – N sommes et affectations,
{ ce qui fait au total 5N+3
acc = acc + nb; opérations élémentaires.
{ • 2 affectations,
• 3 opérations arithmétiques
int acc = 0;
} 6
On distingue :
– la complexité dans le pire des cas, ou
complexité dans le cas le plus défavorable,
mesure la complexité (par exemple en temps
ou en espace) d'un algorithme dans le pire
des cas d'exécution possibles.
– la complexité dans le meilleur des cas
correspond à la complexité (par exemple en
temps) d'un algorithme dans le cas
d'exécution le plus favorable possible.
7
Type de complexité algorithmique :
9
Type de complexité algorithmique :
· T(n) = O(n), temps linéaire : cette complexité est généralement
obtenue lorsqu’un travail en temps constant est effectué sur chaque
donnée en entrée.
Exemple : évaluation de la valeur d'une expression composée de
n symboles.
11
Graphe représentant la différence entre leurs
croissances respectives lorsque n tend vers l'infini.
12
Nomenclature des classes de complexité
L'idée de base est donc qu'un algorithme en O(na) est « meilleur » qu'un
algorithme en O(nb), si a < b.
complexité racinaire :
14
Exemples : (2)
x=n;
while ( x > 0 )
{ O(n)
x=x–1;
}
15
Exemples : (3)
x=n;
while ( x > 0 )
{ O(log2(n))
x=x/2;
}
16
Exemples : (4)
x=n;
while ( x > 0 ) { 2
O(n )
y=n;
while ( y > 0 ) {
y=y–1;
}
x=x–1;
}
17
Exemples : (5)
x=n;
while ( x > 0 ) {
y=n;
while ( y > 0 ) { O(n.log2(n))
y=y/2;
}
x=x–1;
}
18
Exemples : (6)
x=n;
while ( x > 0 ) {
y=n;
while ( y > 0 ) { O(n.log2(n))
y=y–1;
}
x=x/2;
}
19
Exemples : (7)
O(log2(n))
Iterative-Binary-Search(A, v, low, high)
while (low <= high)
mid=[(low + high)/2]
if v = A[mid] return mid
if v > A[mid]
low = mid + l
else high= mid - 1
return -1
20
Exemples : (8)
x=n;
while ( x > 0 ) {
y=x;
while ( y > 0 ) { O(???)
y=y–1;
}
x=x/2;
}
21
Exemples : (8)
x=n;
while ( x > 0 ) {
y=x;
Une série géométrique
while ( y > 0 ) { infinie converge vers 2.
y=y–1;
} T(n)= n⋅2=2n
x=x/2;
} O(n)
22