Académique Documents
Professionnel Documents
Culture Documents
1475188723236
1475188723236
2016 − 2017
Outline
1 Algorithmique
2 Temps d’exécution
3 Complexité algorithmique
Algorithmique
3
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 3 / 36
Algorithmique introduction
Methodologie
4
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 4 / 36
Algorithmique introduction
5
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 5 / 36
Algorithmique introduction
5
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 5 / 36
Algorithmique introduction
5
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 5 / 36
Algorithmique objectifs
Objectifs
6
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 6 / 36
Algorithmique objectifs
Efficacité
7
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 7 / 36
Algorithmique objectifs
Efficacité
7
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 7 / 36
Algorithmique objectifs
Théorie de la complexité
8
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 8 / 36
Algorithmique objectifs
Théorie de la complexité
8
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 8 / 36
Temps d’exécution
9
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 9 / 36
Temps d’exécution
9
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 9 / 36
Temps d’exécution
9
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 9 / 36
Temps d’exécution
Règles:
Chaque instruction basique consomme une unité de temps
(affectation d’une variable, comparaison,...)
10
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 10 / 36
Temps d’exécution
Règles:
Chaque instruction basique consomme une unité de temps
(affectation d’une variable, comparaison,...)
Chaque itération d’une boucle rajoute le nombre d’unités de
temps consommées dans le corps de cette boucle
10
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 10 / 36
Temps d’exécution
Règles:
Chaque instruction basique consomme une unité de temps
(affectation d’une variable, comparaison,...)
Chaque itération d’une boucle rajoute le nombre d’unités de
temps consommées dans le corps de cette boucle
Chaque appel de fonction rajoute le nombre d’unités de temps
consommées dans cette fonction
10
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 10 / 36
Temps d’exécution
Règles:
Chaque instruction basique consomme une unité de temps
(affectation d’une variable, comparaison,...)
Chaque itération d’une boucle rajoute le nombre d’unités de
temps consommées dans le corps de cette boucle
Chaque appel de fonction rajoute le nombre d’unités de temps
consommées dans cette fonction
Pour avoir le nombre d’opérations effectuées par l’algorithme, on
additionne le tout
10
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 10 / 36
Temps d’exécution
int factorielle(n)
fact = 1;
i = 2;
while (i <= n)
fact = fact * i;
i = i + 1;
return fact
11
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 11 / 36
Temps d’exécution
int factorielle(n)
fact = 1; initialisation(1)
i = 2; affectation (1)
while (i <= n) comparaison (1)
fact = fact * i; aff. + multip.(2)
i = i + 1; affectation + addition (2)
return fact retour (1)
12
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 12 / 36
Temps d’exécution
int factorielle(n)
fact = 1; initialisation(1)
i = 2; affectation (1)
while (i <= n) comparaison (1)
fact = fact * i; aff. + multip.(2)
i = i + 1; affectation + addition (2)
return fact retour (1)
12
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 12 / 36
Temps d’exécution
int factorielle(n)
long deb=System.nanoTime();
fact = 1;
i = 2;
while (i <= n)
fact = fact * i;
i = i + 1;
long fin=System.nanoTime();
long temps=fin-deb;
System.out.println(temps);
return fact
13
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 13 / 36
Temps d’exécution
Problèmes
Temps exacte
depend de la puissance de la machine
depend de la nature des données(variables): si on change les données, le
temps change
14
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 14 / 36
Complexité algorithmique
Complexité algorithmique
15
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 15 / 36
Complexité algorithmique
16
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 16 / 36
Complexité algorithmique
16
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 16 / 36
Complexité algorithmique
17
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 17 / 36
Complexité algorithmique
Notations asymptotiques
Soit n la taille des données à traiter, on dit qu’une fonction f (n) est en O(g(n)) si :
f (n) est en O(g(n)) s’il existe un seuil à partir duquel la fonction f (.) est
toujours dominée par la fonction g(.), à une constante multiplicative fixée près ;
18
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 18 / 36
Complexité algorithmique
Notations asymptotiques
Soit n la taille des données à traiter, on dit qu’une fonction f (n) est en O(g(n)) si :
f (n) est en O(g(n)) s’il existe un seuil à partir duquel la fonction f (.) est
toujours dominée par la fonction g(.), à une constante multiplicative fixée près ;
Exemples: quelques cas où f (n) = O(g(n))
18
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 18 / 36
Complexité algorithmique
19
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 19 / 36
Complexité algorithmique
19
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 19 / 36
Complexité algorithmique
19
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 19 / 36
Complexité algorithmique
20
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 20 / 36
Complexité algorithmique
20
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 20 / 36
Complexité algorithmique
Règles de calcul
21
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 21 / 36
Complexité algorithmique
22
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 22 / 36
Complexité algorithmique
22
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 22 / 36
Complexité algorithmique
22
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 22 / 36
Complexité algorithmique
combinaison de complexité
23
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 23 / 36
Complexité algorithmique
combinaison de complexité
24
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 24 / 36
Complexité algorithmique
25
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 25 / 36
Complexité algorithmique
int factorielle(n)
fact = 1; O(1)
i = 2; O(1)
while (i <= n) O(n)
fact = fact * i; O(1)
i = i + 1; O(1)
return fact O(1)
26
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 26 / 36
Complexité algorithmique
int factorielle(n)
fact = 1; O(1)
i = 2; O(1)
while (i <= n) O(n)
fact = fact * i; O(1)
i = i + 1; O(1)
return fact O(1)
26
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 26 / 36
Complexité algorithmique
Classes de Complexité
Complexité Classe
O(1) constant
O(logn) logarithmique
O(n) linéaire
O(nlogn) sous-quadratique
O(n2 ) quadratique
O(n3 ) cubique
O(2n ) exponentiel
O(n!) factorielle
27
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 27 / 36
Complexité algorithmique
Pour comparer deux algorithmes, il faut être capable de situer leur complexité
Une première distinction doit être faite entre les deux classes suivantes :
les algorithmes dits polynomiaux, dont la complexité est en O(nk )
pour un certain k
les algorithmes dits exponentiels, dont la complexité ne peut pas
être majorée par une fonction polynomiale
28
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 28 / 36
Complexité algorithmique
29
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 29 / 36
Complexité algorithmique
30
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 30 / 36
Complexité algorithmique
Exemple
si on peut résoudre le problème P 1 en résolvant le problème P 2, alors on a
directement un algorithme pour P 1 grâce à P 2
on a donc complexité(P 1) <= complexité(P 2)
on ne peut donc pas résoudre P 2 plus vite que P 1
30
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 30 / 36
Complexité algorithmique
31
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 31 / 36
Complexité algorithmique
31
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 31 / 36
Complexité algorithmique
Exemple de Problèmes
32
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 32 / 36
Complexité algorithmique
Exemple de Problèmes
32
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 32 / 36
Complexité algorithmique
Exemple de Problèmes
33
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 33 / 36
Complexité algorithmique
Exemple de Problèmes
Problème: partition
Donnèes : un ensemble S de nombres (répétitions autorisées) ;
Question
P peut-on séparer S en deux sous-ensembles A et B tels que
:P
a∈A a = b∈B b
33
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 33 / 36
Complexité algorithmique
Exemple de Problèmes
Problème: partition
Donnèes : un ensemble S de nombres (répétitions autorisées) ;
Question
P peut-on séparer S en deux sous-ensembles A et B tels que
:P
a∈A a = b∈B b
33
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 33 / 36
Complexité algorithmique
Exemple de Problèmes
34
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 34 / 36
Complexité algorithmique
Exemple de Problèmes
35
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 35 / 36
Complexité algorithmique
Exemple de Problèmes
36
Chiheb-Eddine Ben N’Cir (ESEN) Cours Complexité Algorithmique 2016 36 / 36
Complexité algorithmique
Exemple de Problèmes