Académique Documents
Professionnel Documents
Culture Documents
Algorithmique et Programmation 1
Complexité en temps et en espace
- la deuxième méthode n'utilise que les deux variables dont on veut échanger
les valeurs, mais réalise 3 affectations et 3 opérations
Algorithmique et Programmation 2
Espace-temps informatique
Algorithmique et Programmation 3
Paramètre de complexité (1/3)
Algorithmique et Programmation 4
Paramètre de complexité (2/3)
Exemple : multiplier tous les éléments d'un tableau d'entiers par un entier donné
fonction sans retour multiplie(entier tab[], entier x)
entier i;
début
pour (i allant de 0 à tab.longueur-1 pas de 1)
faire
tab[i] <– tab[i] * x;
finpour
fin
Paramètre de complexité?
Exemple : somme des premiers éléments de chaque ligne d'un tableau à deux
dimensions
fonction avec retour entier sommeTeteLigne(entier tab[][])
entier i,s;
début
s <- 0;
pour (i allant de 0 à tab[0].longueur-1 pas de 1) faire
s <– s + tab[0][i];
finpour
retourne s;
fin
Paramètre de complexité?
Algorithmique et Programmation 5
Paramètre de complexité (3/3)
Pour un même algorithme, différents choix de paramètre de complexité peuvent
être possible. Plusieurs complexités peuvent être calculées, selon les besoins.
Paramètre de complexité?
Algorithmique et Programmation 6
Calcul de complexité (1/2)
Algorithmique et Programmation 7
Calcul de complexité (2/2)
resultat <- 1; ae
Il n’est pas possible de fixer des valeurs numériques aux constantes, qui
dépendent du langage d’implémentation et du contexte d’exécution.
Algorithmique et Programmation 8
Complexité au mieux et au pire (1/4)
Le nombre de tours de boucles varie selon que x est dans le tableau ou pas, et
selon l'endroit où x est présent.
Algorithmique et Programmation 9
Complexité au mieux et au pire (2/4)
fonction avec retour booléen rechercheElement(chaine tab[], chaine x)
entier i;
booléen b;
début
b <- FAUX;
i <- 0;
tantque (i < tab.longueur ET non b) faire
si (tab[i] = x) alors
b <- VRAI;
finsi
fintantque
retourne b;
fin
Algorithmique et Programmation 10
Complexité au mieux et au pire (3/4)
Algorithmique et Programmation 11
Complexité au mieux et au pire (4/4)
fonction avec retour booléen rechercheElement(chaine tab[], chaine x)
entier i;
booléen b;
début
b <- FAUX;
i <- 0;
tantque (i < tab.longueur ET non b) faire
si (tab[i] = x) alors
b <- VRAI;
finsi
fintantque
retourne b;
fin
n = la taille du tableau, ae = affectation d'entier, ce = comparaison d'entier,
oe=opération sur les entiers.
temps de
calcul
0 100000 paramètre de
complexité
Algorithmique et Programmation 13
Notation de Landau (1/2)
f et g étant des fonctions, f = O(g) s'il existe des constantes c>0 et n0 telles que
f(x) < c*g(x) pour tout x > n0
c*g(x)
f(x)
n0 x
Algorithmique et Programmation 14
Notation de Landau (2/2)
Notation Ω : f = Ω(g) s'il existe des constantes c>0 et n0 telles que f(x) ≥ c*g(x)
pour tout x ≥ n0
Algorithmique et Programmation 15
Equivalence asymptotique
f et g étant des fonctions, f = Θ(g) s'il existe des constantes c1, c2, strictement
positives et n0 telles que c1*g(x) ≤ f(x) ≤ c2*g(x) pour tout x ≥ n0
c2*g(x)
f(x)
c1*g(x)
n0 x
Algorithmique et Programmation 16
Classes de complexité (1/2)
Algorithmique et Programmation 17
Classes de complexité (2/2)
Exemple : algorithmes avec deux boucles imbriquées. Tris à bulle, par insertion et
par sélection.
Algorithmique et Programmation 19
Complexité de la recherche séquentielle
fonction avec retour booléen rechercheElement(chaine tab[], chaine x)
entier i; booléen b;
début
b <– FAUX; i <- 0;
tantque (i < tab.longueur ET non b) faire
si (tab[i] = x) alors
b <- VRAI;
finsi
i <- i + 1;
fintantque
retourne b;
fin
Algorithmique et Programmation 21
Complexité du tri à bulle
fonction sans retour triBulle(entier tab[])
entier i,j,temp;
début
pour (i allant de tab.longueur-2 à 1 pas -1) faire
pour (j allant de 0 à i pas 1) faire
si (tab[j] > tab[j+1]) alors
temp <- tab[j]; tab[j] <- tab[j+1]; tab[j+1] <- temp;
finsi
finpour
finpour
fin
Cas au pire : la conditionnelle est toujours vraie, c'est-à-dire que les éléments
sont triés dans l'ordre inverse de celui voulu
Algorithmique et Programmation 22