Efficacité des algorithmes

Slides:



Advertisements
Présentations similaires
Introduction: Concepts de la programmation
Advertisements

Algorithmes et structures de données 7ème cours
Structures de données et complexité
Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Calculs de complexité d'algorithmes
la programmation en langage C
Hiérarchie mémoire Contrôle Entrées Mémoire Chemin de données Sorties.
Module 6 : Programmation dynamique
Nous allons vous présenter: - Photoshop - Algorithme et programmation
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Conception et analyse des algorithmes
Références Bibliographiques
ALGORITHMES RECURSIFS
INFOR 101 Chapitre 3 Marianne Morris.
Analyse des algorithmes: une introduction
Les algorithmes: complexité et notation asymptotique
Bibliothèque standard du C++
Methode de Tri efficace
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
Algorithmique et Programmation
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Analyse d’Algorithmes
Analyse d’algorithmes
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-10541
Structures de données IFT-2000
Mesurer l’efficacité des algorithmes
Présentation Structures de Données et TDA
IFT Complexité et NP-complétude
Programmation linéaire et Recherche opérationnelle
Algorithmique (Introduction)
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
Résolution de problèmes Analyse : « Le programme sinscrit, comme celui de la classe de seconde, dans le cadre de la résolution de problèmes. Les situations.
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Standard Template Library
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
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 Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Analyse des Algorithmes
Analyse d’algorithmes
Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
L’essentiel du langage C
Efficacité des algorithmes
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
D.E ZEGOUR Ecole Supérieure d’Informatique
8INF856 Programmation sur architectures parallèles
Algorithmes et Programmation
Caractérisation de l’interaction du champ électromagnétique avec un environnement forestier dans les bandes VHF et P. H. Roussel 1, H. Nguyen 1, Y. Ziadé.
Méthodes de tri.
Cours 4 - Trois algorithmes de recherche dans un tableau
Module I3 algorithmique et programmation
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.
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
UE MAREP Cours 12 : Révisions
Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.
Cours 5 - Trois algorithmes de tri d'un tableau
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Structures de données IFT-2000
CSI2510 Structures de données et algorithmes Analyse des algorithmes
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
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.
Complexité algorithmique
Efficacité des algorithmes
Transcription de la présentation:

Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 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.

Efficacité des algorithmes(suite) Objectif (1): concerne le génie logiciel Objectif (2): Algorithmes et structures de données. Lorsque l’objectif (2) est important, comment peut-on mesurer l’efficacité d’un algorithme?

Comment mesurer l’efficacité? Comparaison empirique: coder et exécuter le programme Analyse théorique (asymptotique) Ressources critiques: temps, espace mémoire,... 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 positive T(n) où n est la longueur de l’entrée. Empirical comparison is difficult to do “fairly” and is time consuming. Critical resources: Time. Space (disk, RAM). Programmers effort. Ease of use (user’s effort). Factors affecting running time: Machine load. OS. Compiler. Problem size. Specific input values for given problem size.

Analyse théorique On compte le nombre d’opérations élémentaires en fonction de la longueur de l’entrée. Exemple: Problème Op. élémentaire Trouver x dans un tableau Comparaison de x avec les éléments du tableau Multiplier 2 matrices Multiplication scalaire Trier un tableau Comparaison entre deux éléments du tableau Parcourir un arbre Visiter un noeud Empirical comparison is difficult to do “fairly” and is time consuming. Critical resources: Time. Space (disk, RAM). Programmers effort. Ease of use (user’s effort). Factors affecting running time: Machine load. OS. Compiler. Problem size. Specific input values for given problem size.

Analyse théorique La longueur de l’entrée dépend du problème. Exemple: Trier un tableau Nombre d’éléments dans le tableau Multiplier deux matrices Dimension des matrices Parcourir un arbre binaire Nombre de noeuds Résoudre un système d’équations linéaires Nombre d’inconnues ou d’équations Résoudre un problème de graphe Nombre de nœuds et/ou nombre d’arêtes Empirical comparison is difficult to do “fairly” and is time consuming. Critical resources: Time. Space (disk, RAM). Programmers effort. Ease of use (user’s effort). Factors affecting running time: Machine load. OS. Compiler. Problem size. Specific input values for given problem size.

Exemples Exemple 1. // Retourne l’indice du plus grand élément int PlusGrand(int T[], int n) { int max = 0; for (int i=1; i<n; i++) if (T[max] < T[i]) max = i; return max; } As n grows, how does T(n) grow? Cost: T(n) = c1n + c2 steps

Exemples (suite) Exemple 2: int médiane(int T[], int n) { return T(n/2); } Exemple 3: sum = 0; for (i=1; i<=n; i++) for (j=1; j<=n; j++) sum++; Example 2: Constant cost. Example 3: Cost: T(n) = c1n2 + c2. Roughly n2 steps, with sum being n2 at the end. Ignore various overhead such as loop counter increments.

Meilleur algorithme ou ordinateur? How much speedup? 10 times. More important: How much increase in problem size for same time expended? That depends on the growth rate. n: Size of input that can be processed in one hour (10,000 steps). n’: Size of input that can be processed in one our on the new machine (100,000 steps). Note: for 2n, if n = 1000, then n’ would be 1003. On suppose que l’ordinateur utilisé peut effectuer 106 opérations à la seconde

Taux de croissance

Pire cas, meilleur cas et cas moyen Toutes les entrées d’une longueur donnée ne nécessitent pas le même temps d’exécution. Exemple: Recherche séquentielle dans un tableau de taille n: On commence au début du tableau et regarde chaque élément jusqu’à ce que l’élément cherché soit trouvé. Meilleur cas: 1 comparaison Pire cas: n comparaisons Cas moyen: n/2 comparaisons Best: Find at first position. Cost is 1 compare. Worst: Find at last position. Cost is n compares. Average: (n+1)/2 compares IF we assume the element with value K is equally likely to be in any position in the array.

Compromis espace-temps Deux situations: Lorsqu'on peut réduire le temps de calcul en utilisant plus d'espace mémoire: Exemple: table de conversion (look-up table). Lorsqu'on peut réduire l'espace mémoire au prix d'un temps d'exécution plus long: Exemple: compression de données Best: Find at first position. Cost is 1 compare. Worst: Find at last position. Cost is n compares. Average: (n+1)/2 compares IF we assume the element with value K is equally likely to be in any position in the array.