Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Mesurer l’efficacité des algorithmes
leçon 10 Mesurer l’efficacité des algorithmes
2
Plan du cours Comment comparer ? Comparer pgm vs algorithme
La taille d’un problème Le temps d’exécution Grand O Temps vs espace mémoire L’efficacité des algorithmes de fouille L’efficacité des algorithmes de tri NP complétude
3
Comment comparer ? 2 algorithmes faisant la même tâche
Lequel est plus performant? Temps d’exécution de leur implémentation Quelles données utiliser? On cherche des différences significatives
4
Programme vs algorithme
Mieux vaut analyser l’algo Le pgm fait des choix style La machine Certaines opérations sont + rapides Les données testées L’analyse de la complexité doit faire abstraction des 3 éléments ci-dessus
5
La taille d’un problème
La complexité peut s’exprimer en terme de la taille du problème: Peut référer aux nombres d’éléments à traiter Un algorithme pour trier ou fouiller une liste de N nombres Algorithme de Hanoi pour N tours: N sera la taille Peut référer à la grandeur d’une quantité traitée Un algorithme pour déterminer la primalité d’un nombre: N sera le nombre
6
Temps d’exécution Parler du nombre d’instructions exécutées
Prendre le groupe d’instructions les + exécutées S’exprime souvent en terme de la taille du problème For(i=1; i<=n; i++) for (j=1; j<=i; j++) for (k=1; k<=5; k++) Exécuter tâche T Quelle est la complexité de cet algorithme, s’il faut t unités de temps pour effectuer T ?
7
Grand O (pour ordre de grandeur)
On doit exprimer comment la complexité croit en fonction de la taille du problème C’est une question de proportionnalité Les complexités n et 2n+5 sont du même ordre de grandeur n et n2 sont d’ordres différents Les ordres de grandeur O(log n) O(n) O(n log n) O(nk) O(2n) Une complexité O(f(n)) signifie un temps d’exécution pas plus grand que c*f(n).
8
10 100 1000 10000 100000 1 log2n 3 6 9 13 16 19 N 102 103 104 105 106 N log n 30 664 9965 107 N2 108 1010 1012 N3 109 1015 1018 2n 1030 10301 103010
10
Règles O(f(n)) = O(f(n)+g(n)), si O(f(n))> O(g(n))
O(f(n)) = O(k*f(n)) O(f(n))+O(g(n)) = O(f(n)+g(n))
11
Complexité Analyse des pires cas Analyse en moyenne
12
Les algorithmes de fouille
Séquentielle O(n) Binaire O(log n)
13
Les algorithmes de tri De complexité O(n2) De complexité O(n logn)
Une adresse intéressante:
14
Trier un tableau Le tri rapide: tri récursif comportant 3 étapes
Étape 1: Partition autour du pivot Un élément pivot du tableau T à trier est choisi. Le tableau T est réorganisé afin que: les éléments <= au pivot se retrouvent avant le pivot Les élémenst > pivot se retrouvent après le pivot Étape2 Un appel récursif est demandé pour trier les éléments avant le pivot Étape 3 Un appel récursif est demandé pour trier les éléments après le pivot La conséquence de l’étape 1 est que l’élément pivot se retrouve à sa position finale (Lorsque T est complètement trié).
15
Tri Rapide
16
Fonctionnement de la fonction pivot 1/2
Ce à quoi il faut arriver éléments <= X X éléments > X Premier Pivot Dernier À une certaine étape du processus X <= X > X ??? Premier Dernier p k p pointe sur le dernier élément connu pour lequel T[p] <= Pivot à sa droite, les éléments sont >= Pivot. k pointe sur le premier élément non encore traité if (T[k] <= Pivot) { p++; Échanger(T[k], T[p]); }
17
Fonctionnement de la fonction pivot 2/2
Après avoir parcouru le tableau X <= X > X Premier Dernier p En échangean T[Premier] et T[p] on obtient éléments <= X X éléments > X Premier Pivot Dernier
18
Le code
19
Analyse de complexité Tri bulle ou Tri sélection Tri rapide O(N2)
Si N=106 N2 = 1012 Si 106 op /sec exige 11,5 jours Tri rapide O(N log(N)) Si N=106 Nlog(N) = 6N Si 106 op /sec exige 6 secondes
20
Première passe : 100 17 8 29 58 12 51 66 2 70 95 52 84 5 43 80 44 68 16 7 73 11 39 32 45 26 91 10 32 63 24 10 91 52 3 24 45 26 57 68 89 57 89 80 11 2 73 44 5 16 7 58 39 3 70 51 12 43 84 95 66 17 8 29 63
21
Première passe : résultat
32 63 10 91 52 3 24 45 26 57 68 89 80 11 2 73 44 5 16 7 58 39 70 51 12 43 84 95 66 17 8 29
22
Deuxième passe : 101 70 10 80 11 51 12 91 2 52 32 43 73 3 63 84 44 24 95 5 45 66 16 26 17 7 8 17 57 7 16 58 8 58 5 12 29 45 57 68 89 68 3 11 26 39 44 52 66 73 84 95 29 39 2 10 24 32 43 51 63 70 80 91 89
23
Deuxième passe : résultat
8 17 7 16 58 5 12 29 45 57 68 89 3 11 26 39 44 52 66 73 84 95 2 10 24 32 43 51 63 70 80 91
24
NP complétude Lisez les articles distribués en classe
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.