Temps d exécution d un algorithme: pourquoi le mesurer? Temps d exécution d un algorithme: Comment le mesurer? AlgoProg

Documents pareils
IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Programmation C++ (débutant)/instructions for, while et do...while

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Représentation d un entier en base b

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Licence Sciences et Technologies Examen janvier 2010

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Définitions. Numéro à préciser. (Durée : )

Cours 1 : La compilation

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1 Recherche en table par balayage

alg - Classes, instances, objets [oo] Exercices résolus

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

MIS 102 Initiation à l Informatique

Examen Médian - 1 heure 30

Calculateur quantique: factorisation des entiers

Introduction à MATLAB R

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Organigramme / Algorigramme Dossier élève 1 SI

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Initiation à l algorithmique

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation Par Objets

Chapitre VI- La validation de la composition.

1.6- Génération de nombres aléatoires

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

UE C avancé cours 1: introduction et révisions

as Architecture des Systèmes d Information

C f tracée ci- contre est la représentation graphique d une

Architecture des ordinateurs

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

U102 Devoir sur les suites (TST2S)

RÉSOLUTION DE SYSTÈMES À DEUX INCONNUES

Estimation des charges. «Le travail se dilate jusqu à remplir le temps disponible»

Conception des systèmes répartis

Représentation des Nombres

Programme Compte bancaire (code)

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Exercices INF5171 : série #3 (Automne 2012)

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Exercices sur les interfaces

Génie Logiciel avec Ada. 4 février 2013

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chapitre 7. Récurrences

Cours de Systèmes d Exploitation

C++ - Classes, instances, objets [oo] Exercices résolus

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

V- Manipulations de nombres en binaire

Algorithmique et Programmation

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours Informatique Master STEP

Introduction au langage C

TD3: tableaux avancées, première classe et chaînes

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

PROJET 1 : BASE DE DONNÉES REPARTIES

Pourquoi l apprentissage?

Introduction MOSS 2007

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Recherche dans un tableau

TP 1. Prise en main du langage Python

Cours d algorithmique pour la classe de 2nde

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

Application 1- VBA : Test de comportements d'investissements

Algorithmique, Structures de données et langage C

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Pour la quatrième année consécutive, la SICAV Uni-Hoche reçoit une récompense au Morningstar Award.

I. Introduction aux fonctions : les fonctions standards

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Quelques algorithmes simples dont l analyse n est pas si simple

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours d initiation à la programmation en C++ Johann Cuenin

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

BES WEBDEVELOPER ACTIVITÉ RÔLE

Poker. A rendre pour le 25 avril

I- Définitions des signaux.

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours 1 : Qu est-ce que la programmation?

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Plan du cours. Historique du langage Nouveautés de Java 7

Les structures. Chapitre 3

Les suites numériques

Premiers Pas en Programmation Objet : les Classes et les Objets

ACTIVITÉ DE PROGRAMMATION

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Indications pour une progression au CM1 et au CM2

Algorithmique et programmation : les bases (VBA) Corrigé

Transcription:

La notion de complexité fait référence à l efficacité d un algorithme. Il existe formes de complexité pour un algorithme : Complexité spatiale = espace mémoire occupé. Complexité temporelle = temps d exécution AlgoProg 015-16 144

Temps d exécution d un algorithme: pourquoi le mesurer? Temps d exécution d un algorithme: Comment le mesurer? AlgoProg 015-16 145

Pour un problème donné, il y a plusieurs algorithmes. Il est facile d'écrire des algorithmes faux ou inefficaces. Un algorithme inefficaces peut faire la différence entre plusieurs années et quelques minutes de calculs sur une même machine. AlgoProg 015-16 146

Exemple : Construire une ville de 15 maisons en évitant aux livreurs de pizzas qui suivent les rues un trajet trop long depuis la pizzeria. Organisation 1 : Linéaire. Numéros croissants. Pizzeria au numéro 1. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 Organisation : Embranchements. À l'ouest de la maison k, n < k, et à l'est, n > k. La pizzeria est au numéro 8. 8 1 14 1 3 5 7 9 11 13 15 AlgoProg 015-16 147

Dans les deux organisations, le livreur a une méthode simple pour trouver une maison en partant de la pizzeria. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 8 1 14 1 3 5 7 9 11 13 15 AlgoProg 015-16 148

On suppose qu'il faut une unité de temps pour passer d'une maison à une autre (en suivant une rue). Dans le cas le pire, quel est le temps mis par un livreur pour aller jusqu'à une maison depuis la pizzeria? 1 3 4 5 6 7 8 9 10 11 1 13 14 15 8 1 14 1 3 5 7 9 11 13 15 AlgoProg 015-16 149

Nombre de maisons Temps avec organisation 1 Temps avec organisation 15 14 3 103 10 9 1 073 741 83 10737418 9 n n-1 ~log (n) AlgoProg 015-16 150

Différence entre n et log n : Pour notre livreur de pizza : Si n = 10 6, alors log 0 Il fait 50 000 fois moins de déplacements si les maisons sont organisés par «embranchements». Si n = 10 9, alors log n 30, il fait alors 30 000 000 fois moins de déplacements. AlgoProg 015-16 151

ème exemple Problème : déterminer si ensembles E1, E de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E1 avec chaque élément de E. Il faudra environ n² comparaisons. 3763 534 983 83889 9 7363 19 873 111 8731 AlgoProg 015-16 15

ème exemple Problème : déterminer si ensembles E1, E de n entiers ont une valeur commune. Algorithme : Avec une structure de données adaptée, on peut résoudre le problème avec environ n*log(n) comparaisons. E1 = E Algorithme 1 Algorithme n n n*log(n) 10 100 10 1000 1000000 3000 100000 10000000000 500000 AlgoProg 015-16 153

Différence entre n² et n*log(n) Sur un ordinateur exécutant une instruction élémentaire en 10-9 s. Si les ensembles E1 et E ont n = 1 000 000 = 10 6 éléments Exécuter n * log n instructions élémentaires nécessite 0,006s. Exécuter n instructions élémentaires nécessite 10 3 s soit environ 16mn40s. Si les ensembles E1 et E ont n = 10 000 000 = 10 7 éléments Exécuter n * log n instructions élémentaires nécessite 0,07s. Exécuter n instructions élémentaires nécessite 10 5 s soit plus d une journée. En informatique, on manipule parfois des ensembles énormes Google indexe plusieurs milliards de pages web, Google reçoit près de 8 milliards 640 millions de requêtes/jour. AlgoProg 015-16 154

1 ère idée : Faire une étude expérimentale. Implémenter le ou les algorithmes. Exécuter le programme pour différentes valeurs de n. Mesurer précisément le temps d exécution. En déduire une approximation du temps d exécution. Exemple: déterminer si ensembles E1, E de n entiers ont une valeur commune. E1 = E Algorithme 1 Algorithme 10 100 10 1000 1000000 3000 100000 10000000000 500000 n n n*log(n) AlgoProg 015-16 155

1 ère idée : Faire une étude expérimentale. Inconvénients : Il faut programmer les algorithmes. Conséquences? On ne pourra tester qu un sous-ensemble des cas possibles. Conséquences? Pour comparer algorithmes on devra utiliser les mêmes environnements matériel et logiciel. Conséquences? AlgoProg 015-16 156

ème idée : Utiliser une méthode théorique qui : Utilise l algorithme et est indépendante de l implémentation et du langage de programmation. Définit le temps d exécution comme une fonction dépendante de la taille des données d entrée. Prends en compte toutes les entrées possibles. Est indépendante des environnements matériel et logiciel. AlgoProg 015-16 157

Le temps de calcul (ou complexité) d'un algorithme est la fonction qui à un entier n associe le nombre maximal d'instructions élémentaires que l'algorithme effectue, lorsqu on travaille sur des objets de taille n. La fonction compte les instructions élémentaires au lieu de mesurer le temps. On s intéresse en particulier à la complexité dans le pire des cas. Exemples d'opérations élémentaires : additionner, soustraire, multiplier ou diviser deux nombres, tester si une valeur est égale à une autre valeur, affecter une valeur à une variable. AlgoProg 015-16 158

Le décompte des instructions peut être fastidieux si on compte aussi les accès aux structures de données, les E/S, appels de fonctions, etc Même en se limitant à une seule opération on peut obtenir une expression qu il faudra approximer pour obtenir une solution Même si les opérations élémentaires ont des temps d exécution constants sur une machine donnée, ils varient d une machine à l autre. Donc pour simplifier le calcul sans perdre sa pertinence on négligera les constantes. En pratique, on se contente d'un ordre de grandeur asymptotique. AlgoProg 015-16 159

c*g(n) f(n) n 0 n AlgoProg 015-16 160

Limite asymptotique supérieure O (Grand O) AlgoProg 015-16 161

Limite asymptotique supérieure O (Grand O) AlgoProg 015-16 16

Limite asymptotique supérieure O (Grand O) AlgoProg 015-16 163

f(n) c*g(n) n 0 n AlgoProg 015-16 164

AlgoProg 015-16 165

Intuitivement : Grand O : f(n) est O(g(n)) si f(n) est plus petite ou égale à g(n) quand n est grand. Grand Oméga : f(n) est Ω (g(n)) si f(n) est plus grande ou égale à g(n) quand n est grand. Grand thêta : f(n) est (g(n)) si f(n) est à peu près égale g(n) quand n est grand. AlgoProg 015-16 166

int multiplication (int x, int y){ int p=0; for(int i=1; i<=y; i++ ){ p=p+x; return (p); # op élémentaires 1+1+1 y fois 1 4 + 4*y AlgoProg 015-16 167

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); x=7 y=9 p=0 x=7 y=9 p=7 * / x=14 y=4 p=7 x=8 y= p=7 x=56 y=1 p=63 x=11 y=0 p=63 return 63 AlgoProg 015-16 168

x=7 y=9 p=0 x=7 y=9 p=7 * / x=14 y=4 p=7 x=8 y= p=7 x=56 y=1 p=63 x=11 y=0 p=63 return 63 x=111 y=1001 p=0 x=111 y=1001 p=7 * / x=1110 y=100 p=7 x=11100 y=10 p=7 x=111000 y=1 p=63 x=1110000 y=0 p=63 return 63 AlgoProg 015-16 169

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 170

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 171

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 17

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 173

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 174

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 175

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 176

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 177

int multiplication (int x, int y){ p=0 while (y>0){ if (y% ==1) { p=p+x; x = *x; /*decalages*/ y = y//; /*decalages*/ return (p); # op élémentaires 1 1 (+1 sortie) 0 ou k fois 1 [3+7*k,3+9*k] AlgoProg 015-16 178

AlgoProg 015-16 179

AlgoProg 015-16 180

AlgoProg 015-16 181