La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les algorithmes: complexité et notation asymptotique

Présentations similaires


Présentation au sujet: "Les algorithmes: complexité et notation asymptotique"— Transcription de la présentation:

1 Les algorithmes: complexité et notation asymptotique

2 Comparer deux algorithmes
Analyse d'algorithmes Notation O( ) Comparer deux algorithmes Soient deux algorithmes A1 et A2 Base de comparaison Mesure indépendante de l'implémentation : TAILLE D'UN PROBLÈME (n) Temps d'exécution d'un algorithme = fonction(taille du problème) i.e. f(n) Exemples : Taille d'une liste (recherche d'un élément dans une liste) Nombre de nœuds d'un arbre (impression d'un arbre) Taille d'un tableau (tri)

3 Analyse d'algorithmes Notation O( )

4 Analyse d'algorithmes Notation O( )

5 Analyse d'algorithmes Notation O( )
Exemple: évaluer le temps d’ exécution d’algorithme suivant: Boucle externe void TriSelection(int tab[MAXTAB], int n) { int PositionMin, temp,i,j; for (i = n-1; i > 0; i--) { PositionMin = i; for (j = 0; j < i; j++) if (tab[j] < tab[PositionMin]) PositionMin = j; } temp = tab[i]; tab[i] = tab[PositionMin]; tab[PositionMin] = temp; Boucle interne

6 Analyse d'algorithmes Notation O( ) Exemple (suite) Boucle externe
for (i = n-1; i>0; i--) { Coût b1 /* PositionMin = i */ Coût i*a; /* pour exécuter la boucle interne*/ Coût b2; /* pour l'échange de tab[i] et tab[PositionMin] */ }

7 Analyse d'algorithmes Notation O( ) Exemple (suite)
b=b1 +b2 n-1 S = ∑ (ai + b) i=1 (n-1)n S = a (n-1)b 2 a a S = n2 + (b )n - b Le programme est O(n2)

8 Analyse d'algorithmes Notation O( ) Définition du O( )
Nous dirons que f(n) est O(g(n)) s'il existe deux constantes positives K et n0 tel que |f(n)| <= K |g(n)| pour tout n>n0 Conclusion : Évaluer le coût d'un algorithme = Rechercher la fonction g(n) qui est la plus proche au dessus ou égale a f(n)

9 La recherche séquentielle
Analyse d'algorithmes La recherche séquentielle Données pas triées recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences = O(n)

10 La recherche séquentielle
Analyse d'algorithmes La recherche séquentielle Données triées recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences = O(n/2)

11

12

13 Analyse d'algorithmes La recherche binaire
implantation en tableau = accès direct à n’importe quel élément en regardant tout de suite au milieu, on peut éliminer la moitié des données

14 Analyse d'algorithmes La recherche binaire: 10? 11 n 5 n/2 2 n/4 1 n/8
n n/2 n/4 n/8 10

15 Analyse d'algorithmes Algorithme récursif récursion ?
conditions d’arrêt ? convergence ?

16 Algorithme récursif - récursion
Analyse d'algorithmes Algorithme récursif - récursion X Є tab[debut..fin] si x = tab[milieu] (condition d’arrêt) si x < tab[milieu] et x Є tab[debut..milieu-1] si x > tab[milieu] et x Є tab[milieu+1..fin]

17 Algorithme récursif - conditions d’arrêt
Analyse d'algorithmes Algorithme récursif - conditions d’arrêt X € tab[debut..fin] si debut > fin X Є tab[debut..fin] si x = tab[milieu]

18 Algorithme récursif - convergence
Analyse d'algorithmes Algorithme récursif - convergence 10

19 Analyse d'algorithmes Algorithme récursif 1 2 3 4 6 8 9 10 11 12 14
int rechercheBinRec(int tab[ ], int val, int debut, int fin) { int milieu; if (debut > fin) return -1; else { milieu= (debut + fin)/2; if( val == tab[milieu]) return milieu; { if( val < tab[milieu]) return(rechercheBinRec(tab,val,debut, milieu-1)); return(rechercheBinRec(tab,val,milieu+1,fin)); }

20 Analyse d'algorithmes Algorithme récursif
Recherche séquentielle (données triées) Données présentes: O(n/2) Données absentes: O(n/2) Recherche binaire (données triées) Données présentes: O(log n) Données absentes: O(log n)

21 Analyse d'algorithmes Algorithme récursif
Il vaut bien mieux implanter cet algorithme de manière itérative, car la fonction se rappelle jusqu'à trouver la position désirée, puis seulement on effectue les dépilages, alors que l'on n'a plus besoin des états intermédiaires qui ont été mémorisés par la récursivité puisque le problème est résolu.


Télécharger ppt "Les algorithmes: complexité et notation asymptotique"

Présentations similaires


Annonces Google