SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
F.Henni ASD2 2011-2012
Analyse et mesure des performances d’un algorithme
1. Introduction
Il est important de pouvoir juger un algorithme (ou le programme qui en résulte), par exemple
par rapport à un autre algorithme qui résout le même problème. Il existe plusieurs critères sur
lesquels on peut se baser pour pouvoir qualifier un algorithme :
• Est-ce qu’il fait ce que nous lui demandons de faire ?
• Est-ce qu’il est muni d’une documentation qui décrit comment l’utiliser et comment il
fonctionne ?
• Est-ce que le code est facilement lisible ?
Il y a d’autres critères qui ont une relation directe avec les performances d’un programme. Il
s’agit du temps d’exécution et de l’espace mémoire nécessaires pour cette exécution.
2. Notions de complexité temporelle et spatiale
L'efficacité d'un algorithme est directement liée au programme à
implémenter sur un ordinateur. Le programme va s'exécuter en un temps
fini et va mobiliser des ressources mémoires pendant son exécution; ces
deux paramètres se dénomment complexité temporelle et complexité
spatiale.
Définition : complexité d’un programme
• La complexité spatiale d’un programme est la quantité de mémoire nécessaire pour
son exécution.
• La complexité temporelle d’un programme est la quantité de temps nécessaire pour
son exécution du début jusqu’à la fin.
En termes plus concrets :
• Complexité spatiale : le nombre d’instructions et le nombre de données du
programme, avec le nombre de mots mémoire nécessaires pour stocker chacune
d’elles, ainsi que le nombre de mots mémoire supplémentaires pour la manipulation
des données.
• Complexité temporelle : le nombre d’opérations effectuées par le programme et le
temps nécessaire pour chaque opération.
Dès le début de l'informatique les deux paramètres "temps d'exécution" et "place mémoire"
ont eu une importance à peu près égale pour comparer l'efficacité relative des algorithmes. Il
est clair que depuis que l'on peut, à coût très réduit avoir des mémoires centrales d' 1 Giga-
octets (ou plus) dans une petite machine personnelle, les soucis de place en mémoire
centrale qu’on avait lorsque l'on travaillait avec des mémoires centrales de 128 Kilo octets
(pour des gros matériels de recherche des années 70) sont repoussés psychologiquement plus
loin pour un utilisateur normal.
1
F.Henni ASD2 2011-2012
Le facteur temps d'exécution reste l'élément qualitatif le plus perceptible
par l'utilisateur d'un programme ne serait ce que parce qu'il attend derrière
son écran le résultat d'un travail qui représente l'exécution d'un algorithme.
Le calcul du temps d’exécution peut servir de base pour la comparaison
des algorithmes entre eux
On cherche à déterminer une mesure qui rende compte de la complexité temporelle d’un
programme indépendamment des caractéristiques techniques de l’ordinateur sur lequel il
s’exécute, ce qui permettra de comparer entre eux des algorithmes qui résolvent le même
problème.
3. Mesure de la complexité temporelle
Il est clair qu’on ne peut pas utiliser une unité de temps (par exemple la milliseconde) pour
exprimer la complexité temporelle car ce genre d’unité est étroitement lié aux caractéristiques
techniques de l’ordinateur (par exemple la fréquence du processeur). Il est important que
l’unité utilisée reflète la complexité de l’algorithme utilisé indépendamment de la machine sur
laquelle sera exécuté le programme résultant.
Pour certains problèmes, on peut mettre en évidence une ou plusieurs opérations qui sont
fondamentales, au sens où le temps d’exécution d’un algorithme est toujours proportionnel au
nombre de ces opérations. Il est alors possible de comparer des algorithmes qui résolvent le
même problème en se basant sur cette mesure simplifiée.
Par exemple :
Problème Opération fondamentale
Recherche d’une valeur dans un tableau en
mémoire centrale
La comparaison de cette valeur avec les
valeurs des éléments du tableau
Recherche d’un élément sur le disque L’accès à la mémoire secondaire
Tri des éléments d’un tableau en mémoire
centrale
La comparaison entre deux éléments
La permutation de deux éléments
Multiplication de deux matrices La multiplication de deux composantes
L’addition
Il faut remarquer que lorsqu’on choisit plusieurs opérations fondamentales,
il faut les décompter séparément.
4. Calcul de la complexité temporelle
4.1. Notation
Il n'existe pas de méthodologie systématique permettant pour un algorithme quelconque de
compter les opérations élémentaires. Toutefois des règles usuelles sont communément
admises par la communauté des informaticiens qui les utilise pour évaluer la complexité
temporelle.
2
F.Henni ASD2 2011-2012
Soient i1 , i2 , ... , ik des instructions algorithmiques (affectation, itération, condition,...). Soit
une opération élémentaire dénotée OpElem, supposons qu'elle apparaisse n1 fois dans
l'instruction i1, n2 fois dans l'instruction i2, ... nk fois dans l'instruction ik.
Nous noterons Nb(i1) le nombre n1, Nb(i2) le nombre n2 etc.
Nous définissons ainsi la fonction Nb (ik) indiquant le nombre d'opérations élémentaires
dénoté OpElem contenu dans l'instruction algorithmique ik :
Nb( ) : Instruction  Entier .
4.2. Complexité temporelle d’une séquence d’instructions
Règle : Lorsque les opérations sont dans une séquence d’instructions, leurs nombres
s’ajoutent.
Soit S la séquence d'exécution des instructions i1 ; i2 ; ... ; ik :
S :
i1 ;
i2 ;
..
ik ;
4.3. Complexité temporelle d’une instruction conditionnelle
Pour une instruction conditionnelle, il est en général difficile de déterminer systématiquement
quelle branche de l’instruction sera exécutée. Cependant, on peut majorer le nombre
d’opérations fondamentales dans une instruction conditionnelle.
Soit S une instruction conditionnelle qui s’écrit :
S :
if (Expr) E1
else E2
4.4. Complexité temporelle d’une itération finie bornée
Pour les boucles, le nombre d’opérations fondamentales dans la boucle est , où Nb(i) est le
nombre d’opérations fondamentales lors de l’exécution de la ième
itération. Le calcul de dans
le cas où la boucle est contrôlée par un compteur est généralement facile. Dans le cas
contraire, on se contente généralement d’un majorant.
Exemple : recherche séquentielle d’un élément dans une liste
#define N 100
double T [N] ;
int RechercheSequentielle (double val)
{
int i ;
i = 0 ;
while ((i<N) && (T[i] !=val))
i++;
3
F.Henni ASD2 2011-2012
if (i<N) return i;
else return -1;
}
Opération fondamentale: comparaison de « val » avec les éléments du tableau
Calcul de la complexité :
Chaque itération de la boucle « while » comporte « une seule » comparaison. Le
nombre d’itérations n’est pas connu d’avance, il dépend de la position de « val » dans
le tableau T, mais on peut majorer ce nombre par N (qui représente le nombre
maximum d’itérations). Donc la complexité de cette fonction est N comparaisons de
deux valeurs de type « double ».
D’après l’exemple simple ci-dessus, on peut mettre en évidence les points suivants :
• Le choix de (ou des) opération (s) fondamentale (s) doit être établi avant tout calcul et
précisé dans le résultat.
• La complexité dépend de la taille de la donnée (ici N).
• Pour une taille fixée de la donnée, la complexité dépend des différentes données
possibles.
Dans l’exemple plus haut, pour toutes les données de taille N la complexité varie de 1 à N
suivant la position de « val » dans le tableau « T ».
Note : Dans tout ce qui suit nous utiliserons le terme « complexité » pour désigner la
« complexité temporelle ».
5. Complexité en moyenne et au pire
Il est clair que la complexité d’un algorithme dépend de la taille (n) de la donnée sur laquelle
il opère. Notons :
Dn : l’ensemble des données de taille n.
CoutA(d) : la complexité de l’algorithme A sur la donnée d.
Définitions : complexité au pire, au meilleur, et en moyenne
• La complexité dans le meilleur des cas :
• La complexité dans le pire des cas :
• La complexité en moyenne :
où p(d) est la probabilité que l’on ait la donnée d en entrée de l’algorithme A.
4
F.Henni ASD2 2011-2012
Remarque :
a) Les complexités dans le meilleur et dans le pire des cas donnent des indications sur les
bornes extrémales de la complexité de l’algorithme. Leur détermination nécessite en
général la construction de données particulières qui forcent l’algorithme à se
comporter de façon extrémale.
b) Les cas extrémaux ne sont pas les plus fréquents et dans la pratique on aimerait savoir
quel est le comportement « en général » de l’algorithme, d’où l’introduction de la
complexité en moyenne.
Si toutes les données sont équiprobables alors la complexité en moyenne s’exprime
simplement en fonction du nombre de données de taille n, ce qui donne :
mais en général, les données n’ont pas toutes la même probabilité.
c) Il est clair que l’on a la relation :
Mais il faut quand même remarquer que ce n’est pas parce qu’un algorithme A est
meilleur qu’un algorithme B en moyenne, qu’il est meilleur dans le pire des cas.
Exemple : Recherche séquentielle
On cherche à calculer la complexité de la fonction « RechercheSequentielle » (ci-dessus) en
nombre de comparaisons de la valeur recherchée « val » avec les éléments du tableau « T ».
Il est évident que et
Pour calculer on doit se donner des probabilités sur le tableau « T » et la valeur
« val » :
• Soit r la probabilité que val∈T
• On suppose que si val∈T, toutes les places sont équiprobables
Notons :
• : l’ensemble des données de taille n où « val » apparaît à la position i.
• : l’ensemble des données de taille n où val∉T
On a alors :
On sait d’après l’analyse de l’algorithme que :
On a donc :
5
F.Henni ASD2 2011-2012
Si on sait que « val » est dans « T » r=1, alors
Si « val » a une chance sur deux d’être dans la liste, on a
d'où
6. Notion d’ordre de grandeur
Il faut noter que dans le calcul de la complexité d’un algorithme ce qui est important c’est
l’ordre de grandeur du nombre d’opérations fondamentales. Ce qui nous intéresse c’est de
voir comment évolue la complexité en fonction de la taille de donnée (n), et en particulier
quand la donnée (n) devient très grande.
Définition : notations de Landau
a) On dit qu’une fonction f est dominée par une fonction g, et on écrit f=O(g), s’il existe
c et n0 tels que :
b) On dit que deux fonctions f et g sont du même ordre de grandeur, et on écrit f=Θ(g),
s’il existe c1, c2 et n0 tels que :
La première définition signifie que la fonction g évolue au moins aussi vite que f, à partir
d’une certaine valeur n0. Evidemment elle peut évoluer beaucoup plus vite.
La seconde définition est plus précise puisqu’elle signifie que les deux fonctions évoluent de
la même façon au-delà d’une certaine valeur n0.
Pour illustrer l’importance de cette évolution, supposons que nous disposons de 7 algorithmes
pour résoudre le même problème de taille n. Les complexités de ces algorithmes sont :
1 : indépendant de n
n: complexité linéaire
: complexité logarithmique
n. :
n2
: complexité polynomiale
n3
: complexité polynomiale
2n
: complexité exponentielle
Nous faisons exécuter ces algorithmes (ou programmes) sur un ordinateur qui exécute une
opération fondamentale en 10-9
s (1 milliard d’opérations par seconde, ou alors un processeur
qui a une fréquence 1GHz). Si nous faisons varier la valeur de la taille de la donnée n, nous
obtiendrons les temps d’exécution suivants:
6
F.Henni ASD2 2011-2012
102
103
104
105
106
1 1 1 1 1 1
n 10-7
s 10-6
s 10-5
s 10-4
s 10-3
s
≈ 6.64*10-9
s ≈ 10-8
s ≈1.33*10-8
s ≈ 1.66*10-8
s ≈ 2*10-8
s
n. ≈ 6.64*10-7
s ≈ 10-5
s ≈ 1.33*10-4
s ≈ 1.66*10-3
s ≈ 2*10-2
s
n2
10-5
s 10-3
s 10-1
s 10 s 16 mn 40 s
n3
10-3
s 1 s 16 mn 40 s > 11j 13h 46mn > 31 années
2n
> 4*1011
siècles
∞ ∞ ∞ ∞
7

Contenu connexe

Tendances

Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...ECAM Brussels Engineering School
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de triYassine Anddam
 
Synchronisation sous systeme linux
Synchronisation sous systeme linuxSynchronisation sous systeme linux
Synchronisation sous systeme linuxFadwa Gmiden
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
L’analyse et Expérimentation des séquences du Tri par shell
L’analyse et Expérimentation des séquences du Tri par shellL’analyse et Expérimentation des séquences du Tri par shell
L’analyse et Expérimentation des séquences du Tri par shellyoucefsama
 
L'impact des incriments des séquences de tri Shell. Expérimentation des séque...
L'impact des incriments des séquences de tri Shell. Expérimentation des séque...L'impact des incriments des séquences de tri Shell. Expérimentation des séque...
L'impact des incriments des séquences de tri Shell. Expérimentation des séque...Soumia Elyakote HERMA
 
L’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélectionL’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélectionyoucefsama
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à pythonMariem ZAOUALI
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++cppfrug
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonMohammed TAMALI
 

Tendances (20)

Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Algo tri
Algo triAlgo tri
Algo tri
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
 
Synchronisation sous systeme linux
Synchronisation sous systeme linuxSynchronisation sous systeme linux
Synchronisation sous systeme linux
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Formation python
Formation pythonFormation python
Formation python
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
L’analyse et Expérimentation des séquences du Tri par shell
L’analyse et Expérimentation des séquences du Tri par shellL’analyse et Expérimentation des séquences du Tri par shell
L’analyse et Expérimentation des séquences du Tri par shell
 
L'impact des incriments des séquences de tri Shell. Expérimentation des séque...
L'impact des incriments des séquences de tri Shell. Expérimentation des séque...L'impact des incriments des séquences de tri Shell. Expérimentation des séque...
L'impact des incriments des séquences de tri Shell. Expérimentation des séque...
 
L’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélectionL’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélection
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 

En vedette

Article Presse Scala - Coté Santé - Décembre 2014
Article Presse Scala - Coté Santé - Décembre 2014Article Presse Scala - Coté Santé - Décembre 2014
Article Presse Scala - Coté Santé - Décembre 2014pbcom1998
 
Note de presse baleines et déesses pierre edouard
Note de presse baleines et déesses pierre edouardNote de presse baleines et déesses pierre edouard
Note de presse baleines et déesses pierre edouardThe Shopsumer Institute
 
Panorama Commerce Extérieur Algérie 2014
Panorama Commerce Extérieur Algérie 2014Panorama Commerce Extérieur Algérie 2014
Panorama Commerce Extérieur Algérie 2014Réda ALLAL
 
Article Presse EndyMed - Marie France - Juin 2011
Article Presse EndyMed - Marie France - Juin 2011Article Presse EndyMed - Marie France - Juin 2011
Article Presse EndyMed - Marie France - Juin 2011pbcom1998
 
La rédaction web en contexte d'affaire
La rédaction web en contexte d'affaireLa rédaction web en contexte d'affaire
La rédaction web en contexte d'affaireJean-Philippe Bouchard
 
Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004
Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004
Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004pbcom1998
 
2012 06-01~1874@grazia
2012 06-01~1874@grazia2012 06-01~1874@grazia
2012 06-01~1874@graziapbcom1998
 
Formas de ingresos productos y como generan ingresos los juegos Free to Play
Formas de ingresos productos y como generan ingresos los juegos Free to PlayFormas de ingresos productos y como generan ingresos los juegos Free to Play
Formas de ingresos productos y como generan ingresos los juegos Free to PlayKike Fuentes
 
Audi Cross Cabriolet Concept
Audi Cross Cabriolet ConceptAudi Cross Cabriolet Concept
Audi Cross Cabriolet Conceptpluszowyy
 
Slideshare, scribd, issuu, you tube y flickr
Slideshare, scribd, issuu, you tube y  flickrSlideshare, scribd, issuu, you tube y  flickr
Slideshare, scribd, issuu, you tube y flickrAlexandra Delgado
 
Identité Numérique
Identité NumériqueIdentité Numérique
Identité Numériquepepernet
 
Presentation Articque 2012
Presentation Articque 2012Presentation Articque 2012
Presentation Articque 2012ARTICQUE
 

En vedette (20)

Article Presse Scala - Coté Santé - Décembre 2014
Article Presse Scala - Coté Santé - Décembre 2014Article Presse Scala - Coté Santé - Décembre 2014
Article Presse Scala - Coté Santé - Décembre 2014
 
Note de presse baleines et déesses pierre edouard
Note de presse baleines et déesses pierre edouardNote de presse baleines et déesses pierre edouard
Note de presse baleines et déesses pierre edouard
 
Panorama Commerce Extérieur Algérie 2014
Panorama Commerce Extérieur Algérie 2014Panorama Commerce Extérieur Algérie 2014
Panorama Commerce Extérieur Algérie 2014
 
Article Presse EndyMed - Marie France - Juin 2011
Article Presse EndyMed - Marie France - Juin 2011Article Presse EndyMed - Marie France - Juin 2011
Article Presse EndyMed - Marie France - Juin 2011
 
La rédaction web en contexte d'affaire
La rédaction web en contexte d'affaireLa rédaction web en contexte d'affaire
La rédaction web en contexte d'affaire
 
Drets i deures. Ed. Primària .
Drets i deures. Ed. Primària .Drets i deures. Ed. Primària .
Drets i deures. Ed. Primària .
 
000 Beaute Sauvage
000 Beaute Sauvage000 Beaute Sauvage
000 Beaute Sauvage
 
Abp n3
Abp n3Abp n3
Abp n3
 
150526 fan-wao-d
150526 fan-wao-d150526 fan-wao-d
150526 fan-wao-d
 
Premiers pas
Premiers pasPremiers pas
Premiers pas
 
Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004
Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004
Dossier de Presse Lip Seduction 3D Laboratoires Mediecos - Février 2004
 
2012 06-01~1874@grazia
2012 06-01~1874@grazia2012 06-01~1874@grazia
2012 06-01~1874@grazia
 
Fotomexcabia
FotomexcabiaFotomexcabia
Fotomexcabia
 
Formas de ingresos productos y como generan ingresos los juegos Free to Play
Formas de ingresos productos y como generan ingresos los juegos Free to PlayFormas de ingresos productos y como generan ingresos los juegos Free to Play
Formas de ingresos productos y como generan ingresos los juegos Free to Play
 
Mitos de curanderos y sacerdotisas andinos
Mitos de curanderos y sacerdotisas andinosMitos de curanderos y sacerdotisas andinos
Mitos de curanderos y sacerdotisas andinos
 
Audi Cross Cabriolet Concept
Audi Cross Cabriolet ConceptAudi Cross Cabriolet Concept
Audi Cross Cabriolet Concept
 
Slideshare, scribd, issuu, you tube y flickr
Slideshare, scribd, issuu, you tube y  flickrSlideshare, scribd, issuu, you tube y  flickr
Slideshare, scribd, issuu, you tube y flickr
 
Magia de nuestro mundo
Magia de nuestro mundoMagia de nuestro mundo
Magia de nuestro mundo
 
Identité Numérique
Identité NumériqueIdentité Numérique
Identité Numérique
 
Presentation Articque 2012
Presentation Articque 2012Presentation Articque 2012
Presentation Articque 2012
 

Similaire à 1 analyse-et-mesure-des-performances

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptxtarekjedidi
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfadeljaouadi
 
Présentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptxPrésentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptxouassityoussef
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéSana REFAI
 
Support systemes multitaches-tempsreel
Support systemes multitaches-tempsreelSupport systemes multitaches-tempsreel
Support systemes multitaches-tempsreelyoussef essakhi
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap IIInes Ouaz
 
ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0Bruno Boucard
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexitéSana Aroussi
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 

Similaire à 1 analyse-et-mesure-des-performances (20)

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptx
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
Présentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptxPrésentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptx
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 
Support systemes multitaches-tempsreel
Support systemes multitaches-tempsreelSupport systemes multitaches-tempsreel
Support systemes multitaches-tempsreel
 
Algo inf102 2007
Algo inf102 2007Algo inf102 2007
Algo inf102 2007
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
C1_AlgoSdd.pdf
C1_AlgoSdd.pdfC1_AlgoSdd.pdf
C1_AlgoSdd.pdf
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Asd
AsdAsd
Asd
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap II
 
Présentation pfe
Présentation pfePrésentation pfe
Présentation pfe
 
Apprentissage du java
Apprentissage du javaApprentissage du java
Apprentissage du java
 
ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
 

Plus de m.a bensaaoud

08 fiche01 modes metre_terrassements v3
08 fiche01 modes metre_terrassements v308 fiche01 modes metre_terrassements v3
08 fiche01 modes metre_terrassements v3m.a bensaaoud
 
02 terrassements-et-fondations
02 terrassements-et-fondations02 terrassements-et-fondations
02 terrassements-et-fondationsm.a bensaaoud
 
02 mesure-terrestre-et-mesure-celeste
02 mesure-terrestre-et-mesure-celeste02 mesure-terrestre-et-mesure-celeste
02 mesure-terrestre-et-mesure-celestem.a bensaaoud
 
Metrologie termilnal
Metrologie termilnalMetrologie termilnal
Metrologie termilnalm.a bensaaoud
 
Exercices sur la méthode de déplacement
Exercices sur la méthode de déplacementExercices sur la méthode de déplacement
Exercices sur la méthode de déplacementm.a bensaaoud
 
Devis descriptif-duplex
Devis descriptif-duplexDevis descriptif-duplex
Devis descriptif-duplexm.a bensaaoud
 
De la-dictaure-a-la-democratie-french
De la-dictaure-a-la-democratie-frenchDe la-dictaure-a-la-democratie-french
De la-dictaure-a-la-democratie-frenchm.a bensaaoud
 
Cours deplacements simplifies
Cours deplacements simplifiesCours deplacements simplifies
Cours deplacements simplifiesm.a bensaaoud
 
Chapitre 1 introduction
Chapitre 1 introductionChapitre 1 introduction
Chapitre 1 introductionm.a bensaaoud
 
10 secret-pour-etre-creatif
10 secret-pour-etre-creatif10 secret-pour-etre-creatif
10 secret-pour-etre-creatifm.a bensaaoud
 
Rattrapage 2000 2001
Rattrapage 2000 2001Rattrapage 2000 2001
Rattrapage 2000 2001m.a bensaaoud
 
Lmd st3 m.r. février2008
Lmd st3 m.r.  février2008Lmd st3 m.r.  février2008
Lmd st3 m.r. février2008m.a bensaaoud
 
Calcul matriciel-systemes-lineaires
Calcul matriciel-systemes-lineairesCalcul matriciel-systemes-lineaires
Calcul matriciel-systemes-lineairesm.a bensaaoud
 

Plus de m.a bensaaoud (20)

Bton précontrainte
Bton précontrainteBton précontrainte
Bton précontrainte
 
Assainissement
AssainissementAssainissement
Assainissement
 
08 fiche01 modes metre_terrassements v3
08 fiche01 modes metre_terrassements v308 fiche01 modes metre_terrassements v3
08 fiche01 modes metre_terrassements v3
 
02 terrassements-et-fondations
02 terrassements-et-fondations02 terrassements-et-fondations
02 terrassements-et-fondations
 
02 mesure-terrestre-et-mesure-celeste
02 mesure-terrestre-et-mesure-celeste02 mesure-terrestre-et-mesure-celeste
02 mesure-terrestre-et-mesure-celeste
 
Ciment
CimentCiment
Ciment
 
Metrologie termilnal
Metrologie termilnalMetrologie termilnal
Metrologie termilnal
 
Exercices sur la méthode de déplacement
Exercices sur la méthode de déplacementExercices sur la méthode de déplacement
Exercices sur la méthode de déplacement
 
Devis descriptif-duplex
Devis descriptif-duplexDevis descriptif-duplex
Devis descriptif-duplex
 
De la-dictaure-a-la-democratie-french
De la-dictaure-a-la-democratie-frenchDe la-dictaure-a-la-democratie-french
De la-dictaure-a-la-democratie-french
 
Cours deplacements simplifies
Cours deplacements simplifiesCours deplacements simplifies
Cours deplacements simplifies
 
Chauxgrasse
ChauxgrasseChauxgrasse
Chauxgrasse
 
Chapitre 1 introduction
Chapitre 1 introductionChapitre 1 introduction
Chapitre 1 introduction
 
10 secret-pour-etre-creatif
10 secret-pour-etre-creatif10 secret-pour-etre-creatif
10 secret-pour-etre-creatif
 
Synthèse juin 2000
Synthèse  juin 2000Synthèse  juin 2000
Synthèse juin 2000
 
Rattrapage 2000 2001
Rattrapage 2000 2001Rattrapage 2000 2001
Rattrapage 2000 2001
 
Emd2 mai 2001
Emd2   mai 2001Emd2   mai 2001
Emd2 mai 2001
 
Emd1 2000 2001
Emd1    2000 2001Emd1    2000 2001
Emd1 2000 2001
 
Lmd st3 m.r. février2008
Lmd st3 m.r.  février2008Lmd st3 m.r.  février2008
Lmd st3 m.r. février2008
 
Calcul matriciel-systemes-lineaires
Calcul matriciel-systemes-lineairesCalcul matriciel-systemes-lineaires
Calcul matriciel-systemes-lineaires
 

1 analyse-et-mesure-des-performances

  • 1. F.Henni ASD2 2011-2012 Analyse et mesure des performances d’un algorithme 1. Introduction Il est important de pouvoir juger un algorithme (ou le programme qui en résulte), par exemple par rapport à un autre algorithme qui résout le même problème. Il existe plusieurs critères sur lesquels on peut se baser pour pouvoir qualifier un algorithme : • Est-ce qu’il fait ce que nous lui demandons de faire ? • Est-ce qu’il est muni d’une documentation qui décrit comment l’utiliser et comment il fonctionne ? • Est-ce que le code est facilement lisible ? Il y a d’autres critères qui ont une relation directe avec les performances d’un programme. Il s’agit du temps d’exécution et de l’espace mémoire nécessaires pour cette exécution. 2. Notions de complexité temporelle et spatiale L'efficacité d'un algorithme est directement liée au programme à implémenter sur un ordinateur. Le programme va s'exécuter en un temps fini et va mobiliser des ressources mémoires pendant son exécution; ces deux paramètres se dénomment complexité temporelle et complexité spatiale. Définition : complexité d’un programme • La complexité spatiale d’un programme est la quantité de mémoire nécessaire pour son exécution. • La complexité temporelle d’un programme est la quantité de temps nécessaire pour son exécution du début jusqu’à la fin. En termes plus concrets : • Complexité spatiale : le nombre d’instructions et le nombre de données du programme, avec le nombre de mots mémoire nécessaires pour stocker chacune d’elles, ainsi que le nombre de mots mémoire supplémentaires pour la manipulation des données. • Complexité temporelle : le nombre d’opérations effectuées par le programme et le temps nécessaire pour chaque opération. Dès le début de l'informatique les deux paramètres "temps d'exécution" et "place mémoire" ont eu une importance à peu près égale pour comparer l'efficacité relative des algorithmes. Il est clair que depuis que l'on peut, à coût très réduit avoir des mémoires centrales d' 1 Giga- octets (ou plus) dans une petite machine personnelle, les soucis de place en mémoire centrale qu’on avait lorsque l'on travaillait avec des mémoires centrales de 128 Kilo octets (pour des gros matériels de recherche des années 70) sont repoussés psychologiquement plus loin pour un utilisateur normal. 1
  • 2. F.Henni ASD2 2011-2012 Le facteur temps d'exécution reste l'élément qualitatif le plus perceptible par l'utilisateur d'un programme ne serait ce que parce qu'il attend derrière son écran le résultat d'un travail qui représente l'exécution d'un algorithme. Le calcul du temps d’exécution peut servir de base pour la comparaison des algorithmes entre eux On cherche à déterminer une mesure qui rende compte de la complexité temporelle d’un programme indépendamment des caractéristiques techniques de l’ordinateur sur lequel il s’exécute, ce qui permettra de comparer entre eux des algorithmes qui résolvent le même problème. 3. Mesure de la complexité temporelle Il est clair qu’on ne peut pas utiliser une unité de temps (par exemple la milliseconde) pour exprimer la complexité temporelle car ce genre d’unité est étroitement lié aux caractéristiques techniques de l’ordinateur (par exemple la fréquence du processeur). Il est important que l’unité utilisée reflète la complexité de l’algorithme utilisé indépendamment de la machine sur laquelle sera exécuté le programme résultant. Pour certains problèmes, on peut mettre en évidence une ou plusieurs opérations qui sont fondamentales, au sens où le temps d’exécution d’un algorithme est toujours proportionnel au nombre de ces opérations. Il est alors possible de comparer des algorithmes qui résolvent le même problème en se basant sur cette mesure simplifiée. Par exemple : Problème Opération fondamentale Recherche d’une valeur dans un tableau en mémoire centrale La comparaison de cette valeur avec les valeurs des éléments du tableau Recherche d’un élément sur le disque L’accès à la mémoire secondaire Tri des éléments d’un tableau en mémoire centrale La comparaison entre deux éléments La permutation de deux éléments Multiplication de deux matrices La multiplication de deux composantes L’addition Il faut remarquer que lorsqu’on choisit plusieurs opérations fondamentales, il faut les décompter séparément. 4. Calcul de la complexité temporelle 4.1. Notation Il n'existe pas de méthodologie systématique permettant pour un algorithme quelconque de compter les opérations élémentaires. Toutefois des règles usuelles sont communément admises par la communauté des informaticiens qui les utilise pour évaluer la complexité temporelle. 2
  • 3. F.Henni ASD2 2011-2012 Soient i1 , i2 , ... , ik des instructions algorithmiques (affectation, itération, condition,...). Soit une opération élémentaire dénotée OpElem, supposons qu'elle apparaisse n1 fois dans l'instruction i1, n2 fois dans l'instruction i2, ... nk fois dans l'instruction ik. Nous noterons Nb(i1) le nombre n1, Nb(i2) le nombre n2 etc. Nous définissons ainsi la fonction Nb (ik) indiquant le nombre d'opérations élémentaires dénoté OpElem contenu dans l'instruction algorithmique ik : Nb( ) : Instruction  Entier . 4.2. Complexité temporelle d’une séquence d’instructions Règle : Lorsque les opérations sont dans une séquence d’instructions, leurs nombres s’ajoutent. Soit S la séquence d'exécution des instructions i1 ; i2 ; ... ; ik : S : i1 ; i2 ; .. ik ; 4.3. Complexité temporelle d’une instruction conditionnelle Pour une instruction conditionnelle, il est en général difficile de déterminer systématiquement quelle branche de l’instruction sera exécutée. Cependant, on peut majorer le nombre d’opérations fondamentales dans une instruction conditionnelle. Soit S une instruction conditionnelle qui s’écrit : S : if (Expr) E1 else E2 4.4. Complexité temporelle d’une itération finie bornée Pour les boucles, le nombre d’opérations fondamentales dans la boucle est , où Nb(i) est le nombre d’opérations fondamentales lors de l’exécution de la ième itération. Le calcul de dans le cas où la boucle est contrôlée par un compteur est généralement facile. Dans le cas contraire, on se contente généralement d’un majorant. Exemple : recherche séquentielle d’un élément dans une liste #define N 100 double T [N] ; int RechercheSequentielle (double val) { int i ; i = 0 ; while ((i<N) && (T[i] !=val)) i++; 3
  • 4. F.Henni ASD2 2011-2012 if (i<N) return i; else return -1; } Opération fondamentale: comparaison de « val » avec les éléments du tableau Calcul de la complexité : Chaque itération de la boucle « while » comporte « une seule » comparaison. Le nombre d’itérations n’est pas connu d’avance, il dépend de la position de « val » dans le tableau T, mais on peut majorer ce nombre par N (qui représente le nombre maximum d’itérations). Donc la complexité de cette fonction est N comparaisons de deux valeurs de type « double ». D’après l’exemple simple ci-dessus, on peut mettre en évidence les points suivants : • Le choix de (ou des) opération (s) fondamentale (s) doit être établi avant tout calcul et précisé dans le résultat. • La complexité dépend de la taille de la donnée (ici N). • Pour une taille fixée de la donnée, la complexité dépend des différentes données possibles. Dans l’exemple plus haut, pour toutes les données de taille N la complexité varie de 1 à N suivant la position de « val » dans le tableau « T ». Note : Dans tout ce qui suit nous utiliserons le terme « complexité » pour désigner la « complexité temporelle ». 5. Complexité en moyenne et au pire Il est clair que la complexité d’un algorithme dépend de la taille (n) de la donnée sur laquelle il opère. Notons : Dn : l’ensemble des données de taille n. CoutA(d) : la complexité de l’algorithme A sur la donnée d. Définitions : complexité au pire, au meilleur, et en moyenne • La complexité dans le meilleur des cas : • La complexité dans le pire des cas : • La complexité en moyenne : où p(d) est la probabilité que l’on ait la donnée d en entrée de l’algorithme A. 4
  • 5. F.Henni ASD2 2011-2012 Remarque : a) Les complexités dans le meilleur et dans le pire des cas donnent des indications sur les bornes extrémales de la complexité de l’algorithme. Leur détermination nécessite en général la construction de données particulières qui forcent l’algorithme à se comporter de façon extrémale. b) Les cas extrémaux ne sont pas les plus fréquents et dans la pratique on aimerait savoir quel est le comportement « en général » de l’algorithme, d’où l’introduction de la complexité en moyenne. Si toutes les données sont équiprobables alors la complexité en moyenne s’exprime simplement en fonction du nombre de données de taille n, ce qui donne : mais en général, les données n’ont pas toutes la même probabilité. c) Il est clair que l’on a la relation : Mais il faut quand même remarquer que ce n’est pas parce qu’un algorithme A est meilleur qu’un algorithme B en moyenne, qu’il est meilleur dans le pire des cas. Exemple : Recherche séquentielle On cherche à calculer la complexité de la fonction « RechercheSequentielle » (ci-dessus) en nombre de comparaisons de la valeur recherchée « val » avec les éléments du tableau « T ». Il est évident que et Pour calculer on doit se donner des probabilités sur le tableau « T » et la valeur « val » : • Soit r la probabilité que val∈T • On suppose que si val∈T, toutes les places sont équiprobables Notons : • : l’ensemble des données de taille n où « val » apparaît à la position i. • : l’ensemble des données de taille n où val∉T On a alors : On sait d’après l’analyse de l’algorithme que : On a donc : 5
  • 6. F.Henni ASD2 2011-2012 Si on sait que « val » est dans « T » r=1, alors Si « val » a une chance sur deux d’être dans la liste, on a d'où 6. Notion d’ordre de grandeur Il faut noter que dans le calcul de la complexité d’un algorithme ce qui est important c’est l’ordre de grandeur du nombre d’opérations fondamentales. Ce qui nous intéresse c’est de voir comment évolue la complexité en fonction de la taille de donnée (n), et en particulier quand la donnée (n) devient très grande. Définition : notations de Landau a) On dit qu’une fonction f est dominée par une fonction g, et on écrit f=O(g), s’il existe c et n0 tels que : b) On dit que deux fonctions f et g sont du même ordre de grandeur, et on écrit f=Θ(g), s’il existe c1, c2 et n0 tels que : La première définition signifie que la fonction g évolue au moins aussi vite que f, à partir d’une certaine valeur n0. Evidemment elle peut évoluer beaucoup plus vite. La seconde définition est plus précise puisqu’elle signifie que les deux fonctions évoluent de la même façon au-delà d’une certaine valeur n0. Pour illustrer l’importance de cette évolution, supposons que nous disposons de 7 algorithmes pour résoudre le même problème de taille n. Les complexités de ces algorithmes sont : 1 : indépendant de n n: complexité linéaire : complexité logarithmique n. : n2 : complexité polynomiale n3 : complexité polynomiale 2n : complexité exponentielle Nous faisons exécuter ces algorithmes (ou programmes) sur un ordinateur qui exécute une opération fondamentale en 10-9 s (1 milliard d’opérations par seconde, ou alors un processeur qui a une fréquence 1GHz). Si nous faisons varier la valeur de la taille de la donnée n, nous obtiendrons les temps d’exécution suivants: 6
  • 7. F.Henni ASD2 2011-2012 102 103 104 105 106 1 1 1 1 1 1 n 10-7 s 10-6 s 10-5 s 10-4 s 10-3 s ≈ 6.64*10-9 s ≈ 10-8 s ≈1.33*10-8 s ≈ 1.66*10-8 s ≈ 2*10-8 s n. ≈ 6.64*10-7 s ≈ 10-5 s ≈ 1.33*10-4 s ≈ 1.66*10-3 s ≈ 2*10-2 s n2 10-5 s 10-3 s 10-1 s 10 s 16 mn 40 s n3 10-3 s 1 s 16 mn 40 s > 11j 13h 46mn > 31 années 2n > 4*1011 siècles ∞ ∞ ∞ ∞ 7