Académique Documents
Professionnel Documents
Culture Documents
STPI - 2A
2021-2022
1 / 18
Position du problème
• Souvent, un problème et plusieurs solutions
• Laquelle choisir ?
• Quel(s) critère(s) d’optimalité ?
Ressources
• temps de calcul
• mémoire
• bande passante
• énergie
• ...
2 / 18
Taille des instances
Lien entre taille et temps de calcul
• Le temps de calcul d’un algorithme dépend, généralement, de la taille
des instances : plus la taille est grande plus le temps de calcul est
important.
• Exemple : le temps de calcul nécessaire à un algorithme de tri
particulier augmentera avec la taille de la séquence à trier.
• Dans certains cas très particuliers, le temps de calcul est indépendant
de la taille des instances (par exemple l’accès aux éléments d’un
tableau).
Mesurer la taille
• Première idée : nombre de bits associés aux instances
Type Nombre de bits • Multiplication de 2 entiers :
Caractères 8 (ou 16) 2 × 32 = 64 bits
Entiers 32 (ou 64) • Tri d’un tableau de 100 réels :
Réels 64 100 × 64 = 6400 bits
3 / 18
• Deuxième idée : compter le nombre d’éléments (sans distinguer les
types).
• Multiplication de 2 entiers : 2 éléments
• Tri d’un tableau de 100 réels : 100 éléments
Approche théorique
• Se baser sur un modèle
• Modèle : abstraction qui permet de prendre en compte les principales
caractéristiques des plates-formes (matériel et logiciel) qu’on considère
C1 (n) = a C2 (n).
Principe d’invariance
Deux mises en œuvre d’un même algorithme ne diffèrent que d’une
constante multiplicative.
Conséquence
Pour effectuer une analyse indépendante du matériel, on ne comptera à
présent que le nombre d’opérations élémentaires.
5 / 18
F (n) ≤ a G (n), ∀n ≥ n0 .
c2 g.n/ cg.n/
f .n/
f .n/
c1 g.n/
n n
n0 n0 n
f .n/ D ‚.g.n// f .n/ D O.g.n//
(a) (b)
is the minimum possible value; any greater value would also work. (a) ‚-
Ordres de grandeur (3/3)
• Pour une suite donnée F , on notera
• O(F ) l’ensemble des suites (asymptotiquement) dominées par F .
• Θ(F ) l’ensemble des suites (asymptotiquement) équivalentes à F .
• Pour décrire la classe Θ(F ), il suffit de garder le terme le plus élevé de
F , sans la constante.
Exemples
• 3n2 + 7n + 10 ∈ Θ(n2 )
• 3n2 + 7n + 9 log(n) + 10 ∈ Θ(n2 )
• 3n2 + 7n + 9 n log(n) + 10 ∈ Θ(n2 )
• 5n3 + 9 n log(n) + 7n + 10 ∈ Θ(n3 )
• 9 n log(n) + 7n + 10 ∈ Θ(n log(n))
• 7 × 2n + 5n10 + 9 n log(n) + 7n + 10 ∈ Θ(2n )
• n! + 7 × 2n + 5n10 + 9 n log(n) + 7n + 10 ∈ Θ(n!)
13 / 18
Notion de complexité
Complexité
Soit A un algorithme dont le nombre d’opérations dans le pire des cas est
donné par la suite F . On appelle la classe Θ(F ) la complexité de A.
Complexités remarquables
• Θ(1) : complexité constante, c.a.d. indépendante de la taille des
instances
• Θ(log n) : complexité logarithmique (ou sous-linéaire)
• Θ(n) : complexité linéaire
• Θ(n log n) : complexité quasi-linéaire
• Θ(n2 ) : complexité quadratique
• Θ(np ) : complexité polynomiale
• Θ(2n ) : complexité exponentielle
• Θ(n!) : complexité factorielle
Tri insertion 14 / 18
Complexité quadratique
1200
log(n)
n
n log(n)
1000 n2
2n
800
600
400
200
0
1 2 3 4 5 6 7 8 9 10
15 / 18
Recherche séquentielle
Fonction rechSeq(In Variable tab : Tableau d’entiers,
In Variable clé : Entier) : Booléen
Variable trouvé : Booléen ← faux
Variable i : Entier ← 1
Tant Que (i ≤ taille(tab)) Et (Non trouvé)
Si tab[i] = clé Alors
trouvé ← vrai
FinSi
i ← i + 1
FinTantQue
Retourne trouvé
FinFonction
Complexité
• Nombre d’opérations dans le pire des cas : l’élément n’existe pas.
Donc, Θ(n).
• Ceci est vrai même si le tableau est trié !
• Complexité = Θ(n).
18 / 18