0% ont trouvé ce document utile (0 vote)
3 vues41 pages

Rappel sur la complexité algorithmique

Ce document présente un résumé sur la complexité des algorithmes. Il définit ce qu'est un algorithme et ses composantes principales. Il introduit ensuite la notion de complexité, notamment la taille des données, les opérations élémentaires, la complexité temporelle et en espace. Il présente également quelques classes de complexité temporelle.

Transféré par

Hamza Boujemel
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues41 pages

Rappel sur la complexité algorithmique

Ce document présente un résumé sur la complexité des algorithmes. Il définit ce qu'est un algorithme et ses composantes principales. Il introduit ensuite la notion de complexité, notamment la taille des données, les opérations élémentaires, la complexité temporelle et en espace. Il présente également quelques classes de complexité temporelle.

Transféré par

Hamza Boujemel
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohammed VI Polytechnique

Rappel sur la complexité

Module : Structures de Données


M’hammed El Kahoui

October 23, 2020


Plan

1 Un peu de terminologie

2 Notion de complexité
Taille des données
Opérations élémentaires
Complexité temporelle
Complexité en espace
Le big O

3 Quelques classes de complexité temporelle

2 of 23

M’hammed El Kahoui - Rappel sur la complexité


Algorithmes

• Un algorithme est tout simplement une manière de décrire dans ses


moindres détails comment procéder pour trouver une solution à un
problème donné.

3 of 23

M’hammed El Kahoui - Rappel sur la complexité


Algorithmes

• Un algorithme est tout simplement une manière de décrire dans ses


moindres détails comment procéder pour trouver une solution à un
problème donné.

Definition
Un algorithme est une procédure de calcul bien définie qui prend en entrée
un ensemble de valeurs et qui délivre en sortie un autre ensemble de valeurs.

3 of 23

M’hammed El Kahoui - Rappel sur la complexité


Example

Algorithm 1 Moyenne d’un tableau de réels

Input : Un tableau T de N nombres réels.


Output : Moyenne du tableau T .
Déclaration des variables :
Variable M qui représente la moyenne de T
Variable i pour parcourir le tableau T
Initialisation des variables:
M = 0;
Instructions :
for i = 0 to N − 1 do
M = M + T [i]
end for
M
M=
N
return M

4 of 23

M’hammed El Kahoui - Rappel sur la complexité


Un algorithme est composé de plusieurs parties principales.

5 of 23

M’hammed El Kahoui - Rappel sur la complexité


Un algorithme est composé de plusieurs parties principales.
1. Les données qui représentent l’entrée de l’algorithme.
2. Les résultats qui représentent la sortie de l’algorithme.
3. Le corps de l’algorithme qui est composé entre autres des parties
suivantes.

5 of 23

M’hammed El Kahoui - Rappel sur la complexité


Un algorithme est composé de plusieurs parties principales.
1. Les données qui représentent l’entrée de l’algorithme.
2. Les résultats qui représentent la sortie de l’algorithme.
3. Le corps de l’algorithme qui est composé entre autres des parties
suivantes.
◦ Déclaration des variables qui vont être manipulées par l’algorithme.
◦ Initilisation des variables qui vont être manipulées par l’algorithme.
◦ Les instructions qui permettent d’aboutir au résultat.

5 of 23

M’hammed El Kahoui - Rappel sur la complexité


Un algorithme est composé de plusieurs parties principales.
1. Les données qui représentent l’entrée de l’algorithme.
2. Les résultats qui représentent la sortie de l’algorithme.
3. Le corps de l’algorithme qui est composé entre autres des parties
suivantes.
◦ Déclaration des variables qui vont être manipulées par l’algorithme.
◦ Initilisation des variables qui vont être manipulées par l’algorithme.
◦ Les instructions qui permettent d’aboutir au résultat.

Definition
Une valeur particulière de l’ensemble des valeurs données en entrée à un
algorithme est appelée instance du problème que l’algorithme résoud.

5 of 23

M’hammed El Kahoui - Rappel sur la complexité


Un algorithme est composé de plusieurs parties principales.
1. Les données qui représentent l’entrée de l’algorithme.
2. Les résultats qui représentent la sortie de l’algorithme.
3. Le corps de l’algorithme qui est composé entre autres des parties
suivantes.
◦ Déclaration des variables qui vont être manipulées par l’algorithme.
◦ Initilisation des variables qui vont être manipulées par l’algorithme.
◦ Les instructions qui permettent d’aboutir au résultat.

Definition
Une valeur particulière de l’ensemble des valeurs données en entrée à un
algorithme est appelée instance du problème que l’algorithme résoud.

Par exemple, T = [1, 3, 2, 4] est une instance du problème de calcul de la


moyenne d’un tableau.

5 of 23

M’hammed El Kahoui - Rappel sur la complexité


Definition
Un algorithme qui résoud un problème donné est dit correct si pour toute
instance du problème l’algorithme se termine et produit une sortie correcte.

Example
• Dans l’algorithme 1, si on enlève l’instruction M = 0 l’algorithme ne
retourne plus la moyenne du tableau.

6 of 23

M’hammed El Kahoui - Rappel sur la complexité


Definition
Un algorithme qui résoud un problème donné est dit correct si pour toute
instance du problème l’algorithme se termine et produit une sortie correcte.

Example
• Dans l’algorithme 1, si on enlève l’instruction M = 0 l’algorithme ne
retourne plus la moyenne du tableau.
• En fait, lorsqu’on déclare la variable M on ne sait pas quelle valeur
initiale elle a.
• Si cette valeur est non nulle alors le résultat final n’est pas la moyenne
des valeurs du tableau donné.

6 of 23

M’hammed El Kahoui - Rappel sur la complexité


Example
Voici un exemple d’algorithme qui ne se termine pas.

Algorithm 2 Algorithme qui ne se termine pas

Input : Pas d’entrée.


Output : Pas de sortie.
a+b
a = 1, b = 2, c =
2
while c 2 6= 2 do

if c 2 > 2 then
b=c
else
a=c
end if
a+b
c=
2
end while
7 of 23

M’hammed El Kahoui - Rappel sur la complexité


Notion de complexité

• Un problème donné a en général plusieurs solutions algorithmiques.


• Il est donc important d’avoir un outil objectif qui permet de comparer
ces différentes solutions et d’en choisir la plus performante.

8 of 23

M’hammed El Kahoui - Rappel sur la complexité


Notion de complexité

• Un problème donné a en général plusieurs solutions algorithmiques.


• Il est donc important d’avoir un outil objectif qui permet de comparer
ces différentes solutions et d’en choisir la plus performante.
• Une manière naturelle de mesurer la performance d’un algorithme est
d’estimer le temps de son exécution.
• Cette estimation va bien sûr dépendre de plusieurs facteurs :

8 of 23

M’hammed El Kahoui - Rappel sur la complexité


Notion de complexité

• Un problème donné a en général plusieurs solutions algorithmiques.


• Il est donc important d’avoir un outil objectif qui permet de comparer
ces différentes solutions et d’en choisir la plus performante.
• Une manière naturelle de mesurer la performance d’un algorithme est
d’estimer le temps de son exécution.
• Cette estimation va bien sûr dépendre de plusieurs facteurs :
◦ La performance de l’algorithme.
◦ La taille des données.
◦ La nature et la rapidité des instructions du langage choisi pour
implémenter l’algorithme.
◦ La qualité de la programmation.

8 of 23

M’hammed El Kahoui - Rappel sur la complexité


• On ne cherche pas à mesurer le temps de calcul par rapport à toutes ces
variables.
• Notre mesure ne doit dépendre ni de l’ordinateur, ni du langage utilisé,
ni du programmeur, ni de l’implémentation.
• Pour ceci on utilise le modèle RAM (Random Access Machine) :

9 of 23

M’hammed El Kahoui - Rappel sur la complexité


• On ne cherche pas à mesurer le temps de calcul par rapport à toutes ces
variables.
• Notre mesure ne doit dépendre ni de l’ordinateur, ni du langage utilisé,
ni du programmeur, ni de l’implémentation.
• Pour ceci on utilise le modèle RAM (Random Access Machine) :
◦ Ordinateur idéalisé.
◦ Mémoire infinie.
◦ Accès à la mémoire en temps constant.
◦ Processeur unique (pas d’opérations simultanées).

9 of 23

M’hammed El Kahoui - Rappel sur la complexité


Plan

1 Un peu de terminologie

2 Notion de complexité
Taille des données
Opérations élémentaires
Complexité temporelle
Complexité en espace
Le big O

3 Quelques classes de complexité temporelle

10 of 23

M’hammed El Kahoui - Rappel sur la complexité


Taille des données
• Il est clair que le temps de calcul d’un algorithme dépend de l’instance
sur laquelle l’algorithme est exécuté.
◦ Par exemple, multiplier deux entiers à 10 chiffres chacun prend beaucoup
plus de temps que multiplier deux entiers à 3 chiffres.

11 of 23

M’hammed El Kahoui - Rappel sur la complexité


Taille des données
• Il est clair que le temps de calcul d’un algorithme dépend de l’instance
sur laquelle l’algorithme est exécuté.
◦ Par exemple, multiplier deux entiers à 10 chiffres chacun prend beaucoup
plus de temps que multiplier deux entiers à 3 chiffres.
• Pour estimer le temps de calcul d’un algorithme il est donc important de
préciser la taille des données qui est en fait un nombre entier.

11 of 23

M’hammed El Kahoui - Rappel sur la complexité


Taille des données
• Il est clair que le temps de calcul d’un algorithme dépend de l’instance
sur laquelle l’algorithme est exécuté.
◦ Par exemple, multiplier deux entiers à 10 chiffres chacun prend beaucoup
plus de temps que multiplier deux entiers à 3 chiffres.
• Pour estimer le temps de calcul d’un algorithme il est donc important de
préciser la taille des données qui est en fait un nombre entier.

Table: Exemples de taille de données


Type Taille
Entier Taille d’écriture en binaire
Tableau ou liste Nombre d’éléments × taille maximale des éléments
Polynôme Degré × taille maximale des coefficients
Matrice m × n max(m, n)×taille maximale des éléments
Chaines de caractères Nombre de lettres

11 of 23

M’hammed El Kahoui - Rappel sur la complexité


Plan

1 Un peu de terminologie

2 Notion de complexité
Taille des données
Opérations élémentaires
Complexité temporelle
Complexité en espace
Le big O

3 Quelques classes de complexité temporelle

12 of 23

M’hammed El Kahoui - Rappel sur la complexité


Opérations élémentaires

• Par exemple, la multiplication des entiers ne peut pas être considérée


comme élémentaire.
◦ En effet, le temps de son exécution dépend de l’ordre de grandeur des
entiers qu’on multiplie.
• Il est donc important de préciser ce qu’on peut considérer comme
opérations élementaires.
• Les seules opérations qu’on considérera comme élémentaires sont :
◦ Lecture dans une case mémoire.
◦ Écriture dans une case mémoire.

13 of 23

M’hammed El Kahoui - Rappel sur la complexité


Plan

1 Un peu de terminologie

2 Notion de complexité
Taille des données
Opérations élémentaires
Complexité temporelle
Complexité en espace
Le big O

3 Quelques classes de complexité temporelle

14 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité temporelle
La complexité temporelle d’un algorithme est une mesure du temps de
calcul utilisé par cet algorithme, exprimée en fonction de la taille de l’entrée
de l’algorithme.

15 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité temporelle
La complexité temporelle d’un algorithme est une mesure du temps de
calcul utilisé par cet algorithme, exprimée en fonction de la taille de l’entrée
de l’algorithme.
Soient A un algorithme et n un entier et soit Dn l’ensemble des entrées de
A de taille n. Pour chaque d ∈ Dn on note CA (d) le nombre d’opérations
élémentaires effectuées par l’algorithme A sur l’entrée d.

15 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité temporelle
La complexité temporelle d’un algorithme est une mesure du temps de
calcul utilisé par cet algorithme, exprimée en fonction de la taille de l’entrée
de l’algorithme.
Soient A un algorithme et n un entier et soit Dn l’ensemble des entrées de
A de taille n. Pour chaque d ∈ Dn on note CA (d) le nombre d’opérations
élémentaires effectuées par l’algorithme A sur l’entrée d.

Definition
La complexité temporelle dans le pire des cas, ou simplement complexité
temporelle, de l’algorithme A est la fonction TA : N? −→ R?+ définie pour
tout n ∈ N? par
TA (n) = max CA (d).
d∈Dn

15 of 23

M’hammed El Kahoui - Rappel sur la complexité


Plan

1 Un peu de terminologie

2 Notion de complexité
Taille des données
Opérations élémentaires
Complexité temporelle
Complexité en espace
Le big O

3 Quelques classes de complexité temporelle

16 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité en espace
La complexité en espace est une mesure de l’espace mémoire utilisé par un
algorithme, exprimée comme fonction de la taille de l’entrée.

17 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité en espace
La complexité en espace est une mesure de l’espace mémoire utilisé par un
algorithme, exprimée comme fonction de la taille de l’entrée.
Soient A un algorithme et n un entier et soit Dn l’ensemble des entrées de
A de taille n. Pour chaque d ∈ Dn on note MA (d) la taille de l’espace
mémoire utilisé par l’algorithme A sur l’entrée d.

17 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité en espace
La complexité en espace est une mesure de l’espace mémoire utilisé par un
algorithme, exprimée comme fonction de la taille de l’entrée.
Soient A un algorithme et n un entier et soit Dn l’ensemble des entrées de
A de taille n. Pour chaque d ∈ Dn on note MA (d) la taille de l’espace
mémoire utilisé par l’algorithme A sur l’entrée d.

Definition
La complexité en espace dans le pire des cas, ou simplement complexité en
espace, de l’algorithme A est la fonction SA : N? −→ R?+ définie pour tout
n ∈ N? par
SA (n) = max MA (d).
d∈Dn

17 of 23

M’hammed El Kahoui - Rappel sur la complexité


Plan

1 Un peu de terminologie

2 Notion de complexité
Taille des données
Opérations élémentaires
Complexité temporelle
Complexité en espace
Le big O

3 Quelques classes de complexité temporelle

18 of 23

M’hammed El Kahoui - Rappel sur la complexité


Le big O
• Pour mesurer la performance d’un algorithme A on n’a pas besoin de
calculer précisement les fonction TA et SA .
• On a juste besoin de savoir quel genre de comportement elles ont pour
de très grandes valeurs de n.

19 of 23

M’hammed El Kahoui - Rappel sur la complexité


Le big O
• Pour mesurer la performance d’un algorithme A on n’a pas besoin de
calculer précisement les fonction TA et SA .
• On a juste besoin de savoir quel genre de comportement elles ont pour
de très grandes valeurs de n.

Definition
Soient f , g : N −→ R+ . On dit que f est en grand O de g , et on note
f = O(g ), s’il existe une constante c ∈ R+ et n0 ∈ N telles que

∀ n ≥ n0 f (n) ≤ cg (n).

Lorsque f = O(g ) et g = O(f ) on écrit f = Θ(g ).

19 of 23

M’hammed El Kahoui - Rappel sur la complexité


Example
Si f (n) = 3n + 5 alors on a f (n) = Θ(n). De même, si
f (n) = 2n2 + 3n + 2 alors g (n) = Θ(n2 ).

Theorem
Soient f , g , h, k : N −→ R+ des fonctions. Alors on a les propriétés
suivantes.
f (n)
1. Si g ne s’annule pas et lim = c ∈ R? alors f (n) = Θ(g (n)).
n→∞ g (n)

2. Si f (n) = O(g (n)) et g (n) = O(h(n)) alors f (n) = O(h(n)).


3. Si f (n) = O(g (n)) et h(n) = O(k(n)) alors f (n)h(n) = O(g (n)k(n)).
4. Si f (n) = O(h(n)) et g (n) = O(h(n)) alors f (n) + g (n) = O(h(n)).

20 of 23

M’hammed El Kahoui - Rappel sur la complexité


Example
Si f (n) = 3n + 5 alors on a f (n) = Θ(n). De même, si
f (n) = 2n2 + 3n + 2 alors g (n) = Θ(n2 ).

Theorem
Soient f , g , h, k : N −→ R+ des fonctions. Alors on a les propriétés
suivantes.
f (n)
1. Si g ne s’annule pas et lim = c ∈ R? alors f (n) = Θ(g (n)).
n→∞ g (n)

2. Si f (n) = O(g (n)) et g (n) = O(h(n)) alors f (n) = O(h(n)).


3. Si f (n) = O(g (n)) et h(n) = O(k(n)) alors f (n)h(n) = O(g (n)k(n)).
4. Si f (n) = O(h(n)) et g (n) = O(h(n)) alors f (n) + g (n) = O(h(n)).

On a des propriétés analogues si on remplace O par Θ.

20 of 23

M’hammed El Kahoui - Rappel sur la complexité


Quelques classes de complexité temporelle

Table: Quelques classes de complexité temporelle


Complexité Nom courant Description
O(1) Constante Le temps d’exécution ne dépend
pas de la taille des données.
O(ln(n)) Logarithmique Augmentation très faible du temps
d’exécution en fonction de la
taille des données.
O(n) Linéaire Augmentation linéraire du temps
d’exécution en fonction de la
taille des données.
O(n ln(n)) Quasi-linéaire Augmentation presque en O(n)
O(n2 ) Quadratique Quand la taille des données
double le temps est mutliplié par 4.
O(nk ), k fixe Polynomiale Par exemple O(n3 ), O(n4 ).
O(k n ), k > 1 fixe Exponentielle Le temps d’exécution augmente
trop vite en fonction de la
taille des données. 21 of 23

M’hammed El Kahoui - Rappel sur la complexité


Table: Temps d’exécution en fonction de la complexité temporelle
O(ln(n)) O(n) O(n ln(n)) O(n2 ) O(n3 ) O(2n )
102 7 ns 100 ns 0.7 µs 10 µs 1 ms 4.1013 années
103 10 ns 1 µs 10 µs 1s 1s
104 13 ns 10 µs 133 µs 100 ms 17 s
105 17 ns 100 µs 2 µs 10 s 11, 6 jours

Les temps de calcul dans le tableau ci-dessus sont donnés à titre


d’illustration.

22 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité de quelques opérations de base

On donne dans cette table la complexité de certaines opérations de base sur


deux entiers x et y de tailles respectives τ1 et τ2 . On prend τ = max(τ1 , τ2 )
comme taille de la donnée (x, y ).

23 of 23

M’hammed El Kahoui - Rappel sur la complexité


Complexité de quelques opérations de base

On donne dans cette table la complexité de certaines opérations de base sur


deux entiers x et y de tailles respectives τ1 et τ2 . On prend τ = max(τ1 , τ2 )
comme taille de la donnée (x, y ).

Table: Complexité de quelques opérations de base sur les entiers

Opération +, − ∗ = ==, <, >


Temps O(τ ) O(τ 2 ) O(τ ) O(τ )
Espace ≤τ +1 ≤ 2τ τ O(1)

23 of 23

M’hammed El Kahoui - Rappel sur la complexité

Vous aimerez peut-être aussi