Académique Documents
Professionnel Documents
Culture Documents
Objectifs de la séance :
• Comprendre la notion de complexité pour étudier l’efficacité des
programmes
“In almost every computation a great variety of arrangements for the succession of the
processes is possible, and various considerations must influence the selection amongst
them for the purposes of a Calculating Engine. One essential object is to choose that
arrangement which shall tend to reduce to a minimum the time necessary for Ada Lovelace, de son nom
complet Augusta Ada King,
completing the calculation.” comtesse de Lovelace, née
Ada Lovelace (1815-1852) - Notes on the Sketch of The Analytical Engine. le 10 décembre 1815 à
Londres et morte le 27
Lors de l’exécution d’un algorithme, l’ordinateur effectue une succession d’opérations très simples novembre 1852 dans la
comme comparer des nombres, des affectations, des opérations arithmétiques par exemple. même ville, c’est une
pionnière de la science
On mesure alors la complexité en temps d’un algorithme comme le nombre de ces opérations informatique. Elle est
élémentaires. principalement connue
Objectifs des calculs de complexité : pour avoir réalisé le
premier véritable
- pouvoir prévoir le temps d'exécution d'un algorithme. programme informatique,
- pouvoir comparer deux algorithmes réalisant le même traitement. lors de son travail sur un
ancêtre de l'ordinateur : la
machine analytique de
Charles Babbage.
PROGRAMMATION 3
EN LANGAGEC
LA COMPLEXITÉ
Types de complexité
PROGRAMMATION 4
EN LANGAGEC
LA COMPLEXITÉ
Types de complexité
PROGRAMMATION 5
EN LANGAGEC
LA COMPLEXITÉ
Paramètre de la complexité Exemples
PROGRAMMATION 7
EN LANGAGEC
LA COMPLEXITÉ
Exemples de calcul Exemple :
PROGRAMMATION 8
EN LANGAGEC
LA COMPLEXITÉ
Exemple de calcul :1
T(n)= 3*n
+1
+2 n fois
3 x n
PROGRAMMATION 9
EN LANGAGEC
Exemple de calcul : 2
Tâche : Paramètre de complexité :
Le calcul de la somme suivante: La valeur de n.
$ ! !
Type d’instructions :
!(2× !(4 + ! 𝑖 + 𝑗 − 𝑘 ))
!"& '"& ("'
Opérations arithmétiques
Programme :
∑/,-.( ∑,0-. 1 + 3 × 𝑖 − 𝑗 + 1 + 3 + 3)=∑/,-1(3∑,0-.(4× 𝑖 − 𝑗 +
3)4 + 3)
∑/,-1 ∑,0-. 4× 𝑖 − 𝑗 + 3 + 3 =∑/,-1 4×𝑖×𝑖 + 3×𝑖 − 4× ∑,0-. 𝑗 + 3
= ∑/,-1 4×𝑖×𝑖 + 3×𝑖 − 2×𝑖× 𝑖 + 1 +3
+1 =∑/,-1 4×𝑖 2 + 3×𝑖 − 2×𝑖 2 − 2×𝑖 + 3 = ∑/,-1 2×𝑖 2 + 2×𝑖 + 3 =
2/ /31 2/31
2× ∑/,-1 𝑖 2 + 2× ∑/,-1 𝑖 + ∑/,-1 3 = + 𝑛 𝑛 + 1 + 3𝑛 =
+1 9 : 9 9
4
(2/ 32/)(2/31) (5/ 32/ 35/ 32/) 2/:
+ 𝑛2 + 𝑛 + 3𝑛 = + 𝑛2 + 4𝑛 = + 𝑛2 +
4 4 6
i+1 fois
n fois
/
+1 + 𝑛2 + 4𝑛
i - j fois
6
+3 𝟐𝒏𝟑 𝟏𝟑𝒏
= + 𝟐𝒏𝟐 +
+2 𝟑 𝟑
+2
PROGRAMMATION 10
EN LANGAGEC
Exemple de calcul : 2
Tâche : Paramètre de complexité :
Le calcul de la somme suivante: La valeur de n.
$ ! !
Type d’instructions :
!(2× !(4 + ! 𝑖 + 𝑗 − 𝑘 ))
!"& '"& ("'
Opérations arithmétiques
Programme :
+1
𝟐𝒏𝟑 𝟏𝟑𝒏
𝑻(𝒏) = + 𝟐𝒏𝟐 +
+1 𝟑 𝟑
i+1 fois
n fois
+1
i - j fois
+3
+2
+2
PROGRAMMATION 11
EN LANGAGEC
Exemple de calcul : 3
Tâche : Paramètre de complexité :
Le calcul du nombre de chiffres d’un entier n: La valeur de n.
Type d’instructions :
Programme :
Opérations arithmétiques
𝑻 𝒏 = 𝑳𝒐𝒈 𝒏 − 𝟏 ∗ 𝟐
+1 𝒍𝒏(𝒏) 𝟐
= 𝟐× − 𝟐=FG 𝟏𝟎 𝒍𝒏(𝒏) − 𝟐
𝒍𝒏(𝟏𝟎)
+1
PROGRAMMATION 12
EN LANGAGEC
Exemple de calcul : 4
Tâche : Paramètre de complexité :
Recherche d’un élément dans un tableau de La taille du tableau n.
taille n:
Type d’instructions :
Programme : Opérations logiques et comparaisons
PROGRAMMATION 13
EN LANGAGEC
LA COMPLEXITÉ
Le complexité au pire, complexité au mieux, complexité moyenne
Le but de cette partie va être de comparer les complexités calculées avec des fonctions de
référence (puissance, logarithme, exponentielle, etc.). Il faudra préalablement introduire quelques
notations classiques des études de fonctions.
Les définitions qui vont suivre permettent de comparer le comportement à l'infini de deux
fonctions définies sur N. Plus précisément, il s'agit de critères pour affirmer qu'une fonction en
domine une autre, ou si elles sont du même ordre de grandeur, voir même équivalente.
Tous cela pour permettre de lier le T(n) avec l’une des fonctions de références.
PROGRAMMATION 15
EN LANGAGEC
LA COMPLEXITÉ
La notion du grand O (the big oh)
cela signifie qu'à partir d'un certain rang la fonction f est majorée par une constante fois la
fonction g. Il s'agit donc d'une situation de domination de la fonction f par la fonction g.
PROGRAMMATION 16
EN LANGAGEC
LA COMPLEXITÉ
Notion de grand Ω (the big omega)
Cette fois-ci, à partir d'un certain rang la fonction f est minorée par une constante fois la fonction
g. Il s'agit donc d'une situation de domination de la fonction g par la fonction f.
PROGRAMMATION 17
EN LANGAGEC
LA COMPLEXITÉ
Notion de grand Θ (the big theta)
Cette situation combine les deux précédentes, à partir d'un certain rang la fonction f est encadrée
par des multiples de la fonction g. Cela signifie que les fonctions f et g sont du même ordre de
grandeur.
PROGRAMMATION 18
EN LANGAGEC
LA COMPLEXITÉ
Classes de complexité Tableau
PROGRAMMATION 19
EN LANGAGEC
LA COMPLEXITÉ
Revenant au exemples
Exemple 1: Pour un programme qui calcul de la
factorielle de n :
La complexité est linéaire
Exemple 2: Multiplication de deux entiers n et m.
La complexité est constante
Exemple 3: Multiplier tous les éléments d'un
tableau d'entiers par un entier donné.
La complexité est linéaire
Exemple 4: Somme de 2 matrices.
La complexité est quadratique
Exemple 5: Puissance 3 d’une matrice carrée.
La complexité est cubique
Exemple 6: Recherche dichotomique dans un
tableau.
La complexité est logarithmique
PROGRAMMATION 20
EN LANGAGEC