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

Informatique de gestion. Introduction : Efficacité des algorithmes (1) Comment choisir parmi les différentes approches pour résoudre un problème? Exemple:

Présentations similaires


Présentation au sujet: "Informatique de gestion. Introduction : Efficacité des algorithmes (1) Comment choisir parmi les différentes approches pour résoudre un problème? Exemple:"— Transcription de la présentation:

1 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 lordinateur.

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 dun algorithme Est-ce que le programme utilise efficacement la mémoire ? Est-ce que son temps dexécution est acceptable? Complexité des algorithmes Estimations de temps et despace Indépendants de la machine 4

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

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

7 Analyse dun algorithme Exemple dun algorithme: Algorithme(T[1..N]) 1. dmin 0 2. pour i 1 à N 3. pour j 1 à N 4. si i j et |T[i] – T[j]| > dmin 5. dmin |T[i] – T[j]| 6. retourner dmin Que fait cet algorithme? Combien de fois chaque ligne est exécutée?

8 Analyse dun algorithme CoûtNombre exact dexécutions F( T[ 1.. N ] ) pour i 1 à Nc1c1 min T[i]c2c2 indexMin ic3c3 pour j i+1 à Nc4c4 si T[j] < minc5c5 min T[j]c6c6 indexMin jc7c7 T[indexMin] T[i]c8c8 T[i] minc9c9

9 Le tri par sélection Lalgorithme

10 Analyse dune fonction Analyse détaillée dun algorithme: Avantage :Très précise Désavantage : Long à calculer Solution: Analyser asymptotiquement le comportement de lalgorithme lorsque le(s) paramètre(s) de lalgorithme tendent vers linfini: 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)) sil existe deux constantes positives n 0 et c tel que f(n) n 0

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 lim n f(n) / g(n) 0 Exemple: f(n) = 3n 2 +6n+4 et g(n) = n 2 +3 lim n f(n) / g(n) = 3 3n 2 +6n+4 est O(n 2 +3) n dit « f(g) est dordre de g(n) »

13 Notation-O (Analyse dun algorithme) Cherche une fonction simple qui décrit le comportement de lalgorithme dans le pire cas. Exemples : O(n), O(n 2 ), O(lg n) Lanalyse 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) = 3n 2 +5n+4 est en O(n 2 )

14 TRI PAR INSERTION

15 Tri par insertion

16 Notation-O (Analyse dun algorithme) Nombre exact dexé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] [i] i i 1 T[i+1] key T(N) = O(3N 2 +4N) = O(N 2 ) O(N) O(N 2 ) O(N)

17 Notation- Détermine une borne inférieure Définition formelle : f(n) = (g(n)) sil existe deux constantes positives n 0 et c tel que cg(n) n 0

18 Notation- Calcul analytique Étant donné deux fonctions f(n) et g(n), f(n) = (g(n)) ssi: b > 0, n, f(n) / g(n) >= b lim n f(n) / g(n) + Exemple: f(n) = 3n 2 +6n+4 et g(n) = n+3 lim n f(n) / g(n) = 3n 2 +6n+4 est (n+3) 3n 2 +6n+4 est (n) On dit « f(g) est en oméga g(n) »

19 Notation- (Analyse dun algorithme) Nombre exact dexé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] [i] i i 1 T[i+1] key T(N) = (5N+2) = (N) (N) (1) (N) 0 0

20 Notation- Relation déquivalence Définition formelle : f(n) = (g(n)) sil existe trois constantes positives n 0,c 1 et c 2 tel que c 1 g(n) n 0

21 Notation- (Calcul analytique) Étant donné deux fonctions f(n) et g(n), f(n) = (g(n)) ssi: a,b > 0, n, a <= f(n) / g(n) <= b lim n f(n) / g(n) Exemple: f(n) = 3n 2 +6n+4 et g(n) = n 2 +3 lim n f(n) / g(n) = 3n 2 +6n+4 est (n 2 +3) 3n 2 +6n+4 est (n 2 ) Autre propriété: f(n) = (g(n)) ssi f(n) = O(g(n)) et f(n) = (g(n))

22 Notation- Analyse dun algorithme) Analyse du pire casAnalyse 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 O(N) O(N 2 ) O(N) (N) (N 2 ) (1) (N) T(N) = O(N 2 ) et T(N) = N N 2

23 Notation- Analyse dun algorithme) Analyse 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] [i] i i 1 T[i+1] key O(N) O(N 2 ) O(N) (N) ) (1) (N)

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

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

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érieFormuleRésultatExemple - équivale nte 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)/ N2N2 somme de carrés k=1..N k 2 N(N+1)(2N+1)/ N3N3 somme de puissances k=1..N k a (a entier) (a=3)N a+1 de polynomes de degré a k=1..N Pa(k) k=1..N k(k+1)..(k+a) N a+1 géométrique binaire k=0..N 2 k 2 N N2N géométrique entière k=0..N a k (a entier) (a N+1 -1)/(a-1) (a=3)aNaN factorielle k=1..N kN! 2 N (N/e) N 1*2*..*100N N+0.5

29 Analyse des algorithmes Types de temps de calcul rencontré. O(1). Constant ou borné parfait. O(log*(n)). Logarithme itératifexcellent 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(n 1/a ).Sub-linéaire très bon O(n). Linéairetrès bon O(n log(n) ) bon. O(n a ) polynomialacceptable O(a n )exponentielinacceptable O(n!)factorielbeurk.

30 Fonctions de plusieurs arguments Le calcul asymptotique s'applique aux fonctions de plusieurs arguments, f(n 1,...n k ). 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) * n 2 * (r+log(r)) f(n, m, r) est en (m *n 2 * r) Contre exemple. f (n, m, r) = m* n 2 * (r+log(n)) On ne peut pas dire que f(n, m, r) est en (m *n 2 * r)

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


Télécharger ppt "Informatique de gestion. Introduction : Efficacité des algorithmes (1) Comment choisir parmi les différentes approches pour résoudre un problème? Exemple:"

Présentations similaires


Annonces Google