Académique Documents
Professionnel Documents
Culture Documents
Introduction
Comment valuer les performances d'un algorithme ? La complexit d'un algorithme est une mesure du temps (nombre d'oprations effectues par l'algorithme ) requis par l'algorithme pour accomplir sa tche, en fonction de la taille (taille ncessaire pour stocker les diffrentes structures de donnes pour l'excution) de l'chantillon traiter. On dira d'un problme qu'il est aussi complexe que le meilleur algorithme connu pour le rsoudre. Ces deux concepts sont appels la complexit en temps et en espace de l'algorithme.
2 21/11/2012
Introduction
La complexit algorithmique permet de mesurer les performances d'un algorithme et de le comparer avec d'autres algorithmes ralisant les mme fonctionnalits. La complexit algorithmique est un concept fondamental pour tout informaticien, elle permet de dterminer si un algorithme et meilleur qu'un algorithme et s'il est optimal ou s'il ne doit pas tre utilis. .
Algorithme
21/11/2012
Temps d'excution
Le temps d'excution d'un programme dpend : 1. du nombre de donnes, 2. de la taille du code, 3. du type d'ordinateur utilis (processeur, mmoire), 4. de la complexit en temps de l'algorithme abstrait
21/11/2012
21/11/2012
21/11/2012
Complexit en temps
T(algo,d) = temps dexcution de lalgorithme algo appliqu aux donnes d Complexit au pire : T max (algo,n) = max {T(algo,d), d de taille n} Complexit au mieux : T min (algo,n) = min {T(algo,d), d de taille n} Complexit en moyenne : T MOY (algo,n) =
p(d)T(algo, d)
21/11/2012
d taille n
double volume_sphere (const double rayon) { const double PI = 3.14159; // (0) double volume; volume = 4.0 / 3.0 * PI * rayon * rayon * rayon; // (1) return volume; // (2) }
21/11/2012
12
21/11/2012
L'important ici n'est pas la valeur exacte entre les parenthses suivant le O, mais le fait que cette valeur soit constante.
13 21/11/2012
Recherche squentielle :
int trouver_indice (const int tab[], const int TAILLE, const int val); int main () { const int MAX = 9; int Tableau [MAX] = // le contenu est tri en ordre croissant { 3, 4, 6, 8, 17, 22, 199, 201, 202 }; cout << "L'lment de valeur " << 4 << " se trouve l'indice " << trouver_indice (Tableau, MAX, 4) << endl; } 16
21/11/2012
17
Un certain nombre d'oprations incontournables qui devront toujours tre considres quoiqu'il arrive.
21/11/2012
18
21/11/2012
19
21/11/2012
20
21/11/2012
21
21/11/2012
// Traitement while (!trouve && plancher <= plafond) { const int MILIEU = (plancher + plafond) / 2; // risqu! if (val == tab[MILIEU]) { trouve = true; indice = MILIEU; } else if (val < tab[MILIEU]) plafond = MILIEU - 1; else // val > tab[MILIEU] plancher = MILIEU + 1; } return indice;
21/11/2012
23
21/11/2012
24
21/11/2012
En augmentant les chantillons, la courbe logarithmique serait plus pratique et plus optimale.
25
21/11/2012
26
21/11/2012
21/11/2012
29
21/11/2012
30
21/11/2012
31
21/11/2012
32
21/11/2012
33
21/11/2012
34
21/11/2012