leçon 10 mesurer lefficacité des algorithmes. plan du cours comment comparer ? comparer pgm vs...

24
leçon 10 Mesurer l’efficacité des algorithmes

Upload: vivienne-ferrari

Post on 04-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

leçon 10

Mesurer l’efficacité des algorithmes

Page 2: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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

Page 3: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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

Page 4: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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

Page 5: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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

Page 6: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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 ?

Page 7: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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).

Page 8: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

10 100 1000 10000 100000 1000000

1 1 1 1 1 1 1

log2n 3 6 9 13 16 19

N 10 102 103 104 105 106

N log n 30 664 9965 105 106 107

N2 102 104 106 108 1010 1012

N3 103 106 109 1012 1015 1018

2n 103 1030 10301 103010 1030103 10301030

Page 9: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

0

25

50

75

100

0 5 10 15 20 25

Page 10: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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))

Page 11: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Complexité

• Analyse des pires cas

• Analyse en moyenne

Page 12: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Les algorithmes de fouille

• Séquentielle– O(n)

• Binaire– O(log n)

Page 13: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Les algorithmes de tri

• De complexité O(n2)

• De complexité O(n logn)

• De complexité O(n)

• Une adresse intéressante:– http://lwh.free.fr/pages/algo/tri/tri.htm

Page 14: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

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é).

Page 15: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Tri Rapide

Page 16: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Fonctionnement de la fonction pivot 1/2

éléments <= X X éléments > XCe à quoi il faut arriver

X > X

À une certaine étape du processus

<= X ???

Premier Pivot Dernier

Premier Dernierp 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]);

}

Page 17: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Fonctionnement de la fonction pivot 2/2

Après avoir parcouru le tableau

X > X<= XPremier Dernier

p

éléments <= X X éléments > XPremier Pivot

En échangean T[Premier] et T[p] on obtient

Dernier

Page 18: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Le code

Page 19: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

Analyse de complexité• Tri bulle ou Tri sélection

– 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

Page 20: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

17 29858665170 122 9552

84 54380 44 6816 77311 3932 45 269110 24 57 89363

17298581266517029552845438044681677311393245269110245789363

Première passe : 100

Page 21: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

17 298

58

665170 12

2

95

52

84

5

43

80 44

68

16 77311 39

32

45 269110 24 57 893

63

Première passe : résultat

Page 22: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

70 8010 5111 9112

2 5232 43 733 63 844424 955 45 6616

26177 57

8 58 6829 39 89

70801051119112252324373363844424955456616261775785868293989

Deuxième passe : 101

Page 23: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

70 8010 51

11

91

12

2

52

32 43

733

63

8444

24

95

5 45

66

16

26

17

7

57

8

58

6829

39

89

Deuxième passe : résultat

Page 24: Leçon 10 Mesurer lefficacité des algorithmes. Plan du cours Comment comparer ? Comparer pgm vs algorithme La taille dun problème Le temps dexécution Grand

NP complétude

• Lisez les articles distribués en classe