Analyse des Algorithmes

Slides:



Advertisements
Présentations similaires
Théorie des graphes.
Advertisements

Chapitre annexe. Récursivité
REFERENCES REGLEMENTAIRES Bulletin officiel de lÉducation Nationale du N°29 du 22 juillet 2010.
Algorithmes et structures de données 7ème cours
Algorithmes et structures de données avancés
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Algorithmique et évaluation
REFERENCES REGLEMENTAIRES Bulletin officiel de lÉducation Nationale du N°29 du 22 juillet 2010.
et évaluation des compétences
Séminaire Florin Périer Alain Gély LIMOS
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Chapitre II.Rappels mathématiques et complexité
Utilisation des tableaux
Les bases de l’Algorithmique
Conception et analyse des algorithmes
INFOR 101 Chapitre 3 Marianne Morris.
Introduction à l’algorithmique
Démarche de résolution de problèmes
Analyse des algorithmes: une introduction
Les algorithmes: complexité et notation asymptotique
Methode de Tri efficace
Programmation logique Démonstrateur automatique
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
Projet informatique : optimisation du déplacement d’un robot
LES ARBRES IUP 2 Génie Informatique
Analyse d’Algorithmes
Analyse d’algorithmes
Mesurer l’efficacité des algorithmes
Introduction à l’algorithmique
IFT Complexité et NP-complétude
Somme et intégrale de Riemann
Les systèmes multiplateformes
Le forage de données ou data mining
Analyse des algorithmes: une introduction. La question abord é e dans ce chapitre est la suivante: Comment choisir parmi les diff é rentes approches pour.
Efficacité des algorithmes
Efficacité des algorithmes
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
Ordonnancement de tâches
ASI 3 Méthodes numériques pour l’ingénieur
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Analyse d’algorithmes
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
Présentation de la méthode des Eléments Finis
Efficacité des algorithmes
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
ALGORITHME DE TRI Le tri par insertion.
D.E ZEGOUR Ecole Supérieure d’Informatique
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Amélioration de la simulation stochastique
Algorithmes et Programmation
Programmation linéaire en nombres entiers
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Algorithmique : Introduction
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Les algorithmes recursifs
Recherche de motifs par projections aléatoires
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Cours 5 - Trois algorithmes de tri d'un tableau
CSI2510 Structures de données et algorithmes Analyse des algorithmes
Ordonnancement en présence d’agents individualistes
Algorithmes parallèles
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.
Complexité algorithmique
Transcription de la présentation:

Analyse des Algorithmes Informatique de gestion

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.

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

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

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?

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.

Analyse d’un algorithme Exemple d’un 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 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?

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

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.

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

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

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

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)

TRI PAR INSERTION TRI PAR INSERTION

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.

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)

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

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

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)

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

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

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)

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)

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?

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)

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

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

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 3+3+...+3(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 1+2+...+10 N2 somme de carrés k=1..N k2 N(N+1)(2N+1)/6 1+22+32+..102 N3 somme de puissances k=1..N ka (a entier)   1+23+33+..103 (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 1+2+4+..+128 2N géométrique entière k=0..N ak (a entier) (aN+1-1)/(a-1) 1+3+9+..+81 (a=3) factorielle k=1..N k N!2N (N/e)N 1*2*..*100 NN+0.5

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.

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

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.