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

Analyse des Algorithmes

Présentations similaires


Présentation au sujet: "Analyse des Algorithmes"— Transcription de la présentation:

1 Analyse des Algorithmes
Informatique de gestion

2 Introduction : Efficacité des algorithmes (1)
Comment choisir parmi les différentes approches pour résoudre un problème? Exemple: Liste chaînée ou tableau? Deux objectifs à atteindre: Concevoir un algorithme facile à comprendre, coder et déboguer. Concevoir un algorithme qui utilise de façon efficace les ressources de l’ordinateur.

3 Introduction : Efficacité des algorithmes (2)
Objectif (1): concerne le génie logiciel Objectif (2): concerne les algorithmes et structures de données.

4 Introduction : Efficacité des algorithmes (e)
Evaluation de performances d’un algorithme Est-ce que le programme utilise efficacement la mémoire ? Est-ce que son temps d’exécution est acceptable? Complexité des algorithmes Estimations de temps et d’espace Indépendants de la machine

5 Introduction : Définitions
La complexité en espace mémoire d’un algorithme est la quantité de mémoire nécessaire à son exécution complète La complexité en temps d’un algorithme est la quantité de temps nécessaire à son exécution complète Comment peut-on mesurer la complexité en temps?

6 Introduction : Comment mesurer la complexité en temps?
Deux approches : Comparaison empirique: (exécuter le programme) Analyse assymptotique d’algorithmes Facteurs affectant le temps d’exécution: machine, language, programmeur, compilateur, algorithme et structure de données. En général, le temps d’exécution dépend de la longueur de l’entrée. Ce temps est une fonction T(n) où n est la longueur de l’entrée.

7 Analyse d’un algorithme
Exemple d’un algorithme: Algorithme(T[1..N]) 1. dmin <- 0 2. pour i <- 1 à N pour j <- 1 à N si i ≠ j et |T[i] – T[j]| > dmin dmin <- |T[i] – T[j]| 6. retourner dmin 1 fois N+1 fois N(N+1) fois N2 fois entre 0 et N2 fois Que fait cet algorithme? Combien de fois chaque ligne est exécutée?

8 Analyse d’un algorithme
Coût Nombre exact d’exécutions F( T[ 1.. N ] ) pour i  1 à N c1 min  T[i] c2 indexMin  i c3 pour j  i+1 à N c4 si T[j] < min c5 min  T[j] c6 indexMin  j c7 T[indexMin]  T[i] c8 T[i] min c9 Demander ce que fait cet algorithme (tri par sélection : trouve le plus petit nombre, le place en premier; trouve le second plus petit et le place en deuxième; ainsi de suite) Faire l’analyse exacte

9 Le tri par sélection L’algorithme
5 7 8 2 6 3 1. 5 7 8 2 6 3 5. 5 7 8 2 6 3 2. 5 7 8 2 6 3 6. 5 7 8 2 6 3 3. 5 7 8 2 6 3 7. 5 7 8 2 6 3 4.

10 Analyse d’une fonction
Analyse détaillée d’un algorithme: Avantage :Très précise Désavantage : Long à calculer Solution: Analyser asymptotiquement le comportement de l’algorithme lorsque le(s) paramètre(s) de l’algorithme tendent vers l’infini: Avantage: Facile à calculer Désavantage: Moins précis

11 Notation O Détermine une borne supérieure
Définition formelle : f(n) = O(g(n)) s’il existe deux constantes positives n0 et c tel que f(n) <= cg(n) pour tout n>n0

12 Notation-O (Calcul analytique)
Étant donné deux fonctions f(n) et g(n), f(n) = O(g(n)) ssi:  b >= 0,  n, f(n) / g(n) <= b limn®¥ f(n) / g(n) Î Â+ È 0 Exemple: f(n) = 3n2+6n+4 et g(n) = n2+3 limn®¥ f(n) / g(n) = 3 \ 3n2+6n+4 est O(n2+3) On dit « f(g) est d’ordre de g(n) »

13 Notation-O (Analyse d’un algorithme)
Cherche une fonction simple qui décrit le comportement de l’algorithme dans le pire cas. Exemples : O(n), O(n2), O(lg n) L’analyse est simplifiée selon les règles suivantes: Les constantes sont éliminées Seul le monôme avec le degré le plus élevé est conservé Exemple: f(n) = 3n2+5n+4 est en O(n2)

14 TRI PAR INSERTION TRI PAR INSERTION

15 Tri par insertion 5 7 8 2 6 3 4. 5 7 8 2 6 3 1. 5 7 8 2 6 3 2. 5 7 8 2 6 3 5. 5 7 8 2 6 3 3. 5 7 8 2 6 3 6.

16 Notation-O (Analyse d’un algorithme)
Nombre exact d’exécutions (Pire cas) Analyse asymptotique InsertionSort( T[ 1.. N ] ) pour j 2 à N key T[j] i  j -1 tant que i > 0 et T[i]>key T[i+1] T[i] i  i-1 T[i+1] key O(N) O(N) O(N) O(N2) O(N2) Demander si on peut simplifier l’analyse de l’algorithme O(N2) O(N) T(N) = O(3N2+4N) = O(N2)

17 Notation-W Détermine une borne inférieure
Définition formelle : f(n) = W(g(n)) s’il existe deux constantes positives n0 et c tel que cg(n) <= f(n) pour tout n>n0

18 Notation-W (Calcul analytique)
Étant donné deux fonctions f(n) et g(n), f(n) = W(g(n)) ssi:  b > 0,  n, f(n) / g(n) >= b limn®¥ f(n) / g(n) Î Â+ È ¥ Exemple: f(n) = 3n2+6n+4 et g(n) = n+3 limn®¥ f(n) / g(n) = ¥ \ 3n2+6n+4 est W(n+3) 3n2+6n+4 est W(n) On dit « f(g) est en oméga g(n) »

19 Notation-W (Analyse d’un algorithme)
Nombre exact d’exécutions (Meilleur cas) Analyse asymptotique InsertionSort( T[ 1.. N ] ) pour j <- 2 à N key <- T[j] i <- j-1 tant que i > 0 et T[i]>key T[i+1] <- T[i] i <- i-1 T[i+1] <- key W(N) W(N) W(N) W(N) W(1) W(1) W(N) T(N) = W(5N+2) = W(N)

20 Notation-Q Relation d’équivalence
Définition formelle : f(n) = Q(g(n)) s’il existe trois constantes positives n0,c1 et c2 tel que c1g(n) <= f(n) <= c2g(n) pour tout n>n0

21 Notation-Q (Calcul analytique)
Étant donné deux fonctions f(n) et g(n), f(n) = Q(g(n)) ssi:  a,b > 0,  n, a <= f(n) / g(n) <= b limn®¥ f(n) / g(n) Î Â+ Exemple: f(n) = 3n2+6n+4 et g(n) = n2+3 limn®¥ f(n) / g(n) = 3 \ 3n2+6n+4 est Q(n2+3) 3n2+6n+4 est Q(n2) Autre propriété: f(n) = Q(g(n)) ssi f(n) = O(g(n)) et f(n) = W(g(n))

22 Notation-Q (Analyse d’un algorithme)
Analyse du pire cas Analyse meilleur cas SelectionSort( T[ 1.. N ] ) pour i <- 1 à N-1 min <- T[i] indexMin <- i pour j <- i+1 à N si T[j] < min min <- T[j] indexMin <- j T[indexMin] <- T[i] T[i] <- min W(N) O(N) O(N) W(N) O(N) W(N) O(N2) W(N2) O(N2) W(N2) O(N2) W(1) O(N2) W(1) O(N) W(N) O(N) W(N) T(N) = O(N2) et T(N) = W(N2) Þ T(N) = Q(N2)

23 Notation-Q (Analyse d’un algorithme)
Analyse W Analyse O InsertionSort( T[ 1.. N ] ) pour j <- 2 à N key <- T[j] i <- j-1 tant que i > 0 et T[i]>key T[i+1] <- T[i] i <- i-1 T[i+1] <- key W(N) O(N) W(N) O(N) W(N) O(N) W(N) O(N2) W(1) O(N2) W(1) O(N2) W(N) O(N)

24 Analyse algorithmique
Trois algorithmes de tri Meilleur cas Pire cas Tri à bulle W(N2) O(N2) Tri par sélection Tri par insertion W(N) Dans le pire cas et avec le même nombre de données à trier, est-ce que le temps d’exécution sera identique?

25 Analyse de la mémoire de travail
Même principe que pour le temps d’exécution mais on considère la dimension des variables et tableaux. Analyse W Analyse O CreateAndFillMatrix(N,M ) C[1..N,1..M] : matrice pour i <-1 to N pour j<-1 to M ci,j <- max(C[i,j-1],C[i-1,J]+l) C[i,j] <-ci,j retourner C[1..N,1..M] W(N*M) O(N*M) W(1) O(1) W(1) O(1) W(1) O(1) Mémoire de travail : Q(N*M)

26 Déterminer expérimentalement la relation asymptotique entre deux fonctions
2 fonctions inconnues f(n) et g(n). Fonctions positives non décroissantes. Arguments positifs. On a un échantillon des valeurs de f(n) et de g(n) pour plusieurs points n = {n1, n2.....}. On peut avoir plusieurs valeurs de f(n) et g(n) pour le même n. Tracer un graphe f(n) vs g(n).

27 Déterminer expérimentalement la relation asymptotique entre fonctions ensemblistes
Diagramme X-Y. Abscisses g(n), ordonnées f(n).

28 Simplifier les séries Sommes ou produits avec un nombre variable de termes. Série Formule Résultat Exemple -équivalente constante k=1..N a aN (10 fois) N somme de logs k=1..N log(k) log(N!) log(2)+log(3)+..log(100) N log(N) arithmétique k=1..N k N(N+1)/2 N2 somme de carrés k=1..N k2 N(N+1)(2N+1)/6 N3 somme de puissances k=1..N ka (a entier) (a=3) Na+1  de polynomes de degré a k=1..N Pa(k) k=1..N k(k+1)..(k+a) géométrique binaire k=0..N 2k 2N+1-1 2N géométrique entière k=0..N ak (a entier) (aN+1-1)/(a-1) (a=3) factorielle k=1..N k N!2N (N/e)N 1*2*..*100 NN+0.5

29 Analyse des algorithmes Types de temps de calcul rencontré.
O(1). Constant ou borné parfait. O(log*(n)). Logarithme itératif excellent log*(n)= i t.q log(log..(n)) (i fois) <= 1. O(log(n)). Logarithmique excellent O(log(n)a). Polylog excellent O(n), O(n1/a). Sub-linéaire très bon O(n). Linéaire très bon O(n log(n) ) bon. O(na) polynomial acceptable O(an) exponentiel inacceptable O(n!) factoriel beurk.

30 Fonctions de plusieurs arguments
Le calcul asymptotique s'applique aux fonctions de plusieurs arguments, f(n1,...nk). Arguments entiers ou réels. Tous les arguments peuvent tendre vers +¥. On prend les mêmes définitions, avec une modification. lim n1 -> +¥ lim n2 -> +¥ ... lim nk -> +¥ au lieu de lim n -> +¥ Exemple. f (n, m, r) = (m+1) * n2 * (r+log(r)) f(n, m, r) est en  (m *n2 * r) Contre exemple. f (n, m, r) = m* n2 * (r+log(n)) On ne peut pas dire que f(n, m, r) est en (m *n2 * r) Calcul asymptotique Ex 2 et 3 page 16 manuscrites

31 Conclusion Calculer le temps d’exécution.
Précisement Asymptotiquement (, , O) Même méthode appliquée pour déterminer la mémoire de travail.


Télécharger ppt "Analyse des Algorithmes"

Présentations similaires


Annonces Google