13/10/2005 © 2005 P. Dupont. All rights reserved. 1 FSAB 1402: Informatique 2 Complexité Calculatoire Pierre Dupont Département dIngénierie Informatique,

Slides:



Advertisements
Présentations similaires
$1 Million $500,000 $250,000 $125,000 $64,000 $32,000 $16,000 $8,000 $4,000 $2,000 $1,000 $500 $300 $200 $100 Bienvenue.
Advertisements

Premier programme en C :
Tris.
1 Copyright© 2005 Dominique Blondeau. All rights reserved 3 Modèles moléculaires 3 Modèles moléculaires.
Algorithmes et structures de données Cours 10 Patrick Reuter
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Algorithmique.
Optimisation algébrique de requêtes relationnelles
23 ème Rencontres Interprofessionnelles Régionales en Languedoc Roussillon jeudi 21 juin 2012.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
IN302 – Chapitre 1 Notions de base, connexité. Rappels sur la complexité
FLSI602 Génie Informatique et Réseaux
Alexandre Cortier, Eric Morand
Le plan des cours d’analyse ‘Etude des phénomènes variables’
Tableau de bord. Tableau de bord QCM personnalisés.
18/10/2004 P. Van Roy, InfoT4, S5 1 Informatique T4 Solutions au Test du 18 octobre Peter Van Roy Département dIngénierie Informatique, UCL
OCaml - Les listes L3 MI.
PI : Une plate forme multi-métiers pour TIGF
Cours VHDL Chap 3: sémantique VHDL
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
OCaml – Les arbres L3 MI.
CLUB DES UTILISATEURS SAS DE QUÉBEC
Les algorithmes: complexité et notation asymptotique
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
18/05/ Utiliser le cahier de texte en ligne avec lapplication SPIP Adresse du site du lycée :
Le PHP – la base Les commentaires */ ?>. Le PHP – le terminateur dinstruction Le point virgule Le point virgule est utilisé pour terminer une"; echo instruction.
Segments B,D,E,F et G Ic = 100 mA Ic = 400 mA Courant de la diode = 10 mA Facteur 5 (moyenne) Facteur 7 Coefficient de sécurité 2 Segments B,D,E,F.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Sémantique Formelle Peter Van Roy Département dIngénierie Informatique, UCL
Le Système Processeur David Saint-Mellion.
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique, UCL
Analyse d’Algorithmes
Analyse d’algorithmes
Introduction à l’algorithmique
ACTIVITES Les quotients (5).
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Enregistrements et Arbres Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Programmer avec des Types Abstraits Peter Van Roy Département dIngénierie Informatique,
FSAB 1402: Informatique 2 Introduction et Concepts de Base
FSAB 1402: Informatique 2 Complexité Calculatoire
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Programmer avec lEtat Peter Van Roy Département dIngénierie Informatique, UCL
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Enregistrements et Arbres Peter Van Roy Département dIngénierie Informatique, UCL
29/9/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique,
Peter Van Roy Département d’Ingénierie Informatique, UCL
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
STRUCTURES DE DONNÉES Maxime CROCHEMORE
Parallel Programming in C with MPI and OpenMP
Efficacité des algorithmes
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989)
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Mise à jour des Fichiers Redo Log
David Rivreau Table de hachage David Rivreau
Les Contrôles Page 1. Page 2 If … Elseif... Endif If … Endif if (i=5 and j
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Évaluation et application des fonctions Let f = function x -> ( function y -> x+y );; Type :int -> (int ->int) int -> int ->int f int.
LINF 1251: Introduction à l’Algorithmique et la Programmation II
6/10/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département d’Ingénierie Informatique,
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
La pile de crêpes.
CSI2510 Structures de données et algorithmes Analyse des algorithmes
Directives Ocaml Définition
Transcription de la présentation:

13/10/2005 © 2005 P. Dupont. All rights reserved. 1 FSAB 1402: Informatique 2 Complexité Calculatoire Pierre Dupont Département dIngénierie Informatique, UCL

13/10/2005© 2005 P. Dupont. All rights reserved.2 Comment caractériser lefficacité dun programme? Le temps que met le programme à produire un résultat lien avec la complexité temporelle de lalgorithme Lespace utilisé (mémoire, espace disque) par le programme lien avec la complexité spatiale de lalgorithme Quels sont les facteurs influençant le temps (ou lespace)?

13/10/2005© 2005 P. Dupont. All rights reserved.3 Un facteur préponderant: les données du problème La taille du problème (ici, la taille n du tuple) Les valeurs spécifiques définissant une instance particulière du problème (ici, les valeurs mémorisées dans le tuple) La taille du problème est le nombre de valeurs à spécifier pour définir une instance particulière du problème % Input: T un tuple de n entiers (n>0) % Output: la valeur maximale dans T fun {TupleMax T} N={Width T} fun {Loop I CurrentMax} if I>N then CurrentMax else {Loop I+1 if CurrentMax<T.I then T.I else CurrentMax end} end end in {Loop 2 T.1} end

13/10/2005© 2005 P. Dupont. All rights reserved.4 Meilleur cas, pire cas ou cas moyen Il y a souvent un nombre infini dinstances possibles (ici, toutes les valeurs possibles dun tuple de taille n contenant des entiers) Selon linstance particulière considérée, un algorithme peut prendre plus ou moins de temps Les instances possibles peuvent alors être classées en meilleur(s) cas, pire(s) cas ou cas moyens Nous nous intéressons généralement au temps pris dans le pire cas car Nous voulons une borne supérieure du temps dexécution Le meilleur cas donne lieu à une estimation optimiste Un cas représentatif moyen est souvent difficile à définir

13/10/2005© 2005 P. Dupont. All rights reserved.5 Les facteurs influençant le temps dexécution Les données du problème (linstance particulière : taille + valeurs) Lalgorithme utilisé pour résoudre le problème mais aussi … Le matériel (vitesse du processeur, taille et vitesse daccès à la mémoire, temps de transfert disque, etc) Le logiciel (langage de programmation, compilateur/interpréteur, etc) La charge de la machine (nombre de processus qui sexécutent, etc) Le système dexploitation (gestion des différents processus, etc) La charge du réseau (accès aux données, écriture des résultats, etc) Etc

13/10/2005© 2005 P. Dupont. All rights reserved.6 Mesure expérimentale du temps dexécution Écrire un programme implémentant lalgorithme à étudier Exécuter le programme pour différentes instances du problème (taille + valeurs spécifiques) Utiliser une méthode comme System.currentTimeMillis() pour mesurer le temps effectif dexécution (en Unix, ou la fonction OS.time en Oz)

13/10/2005© 2005 P. Dupont. All rights reserved.7 Limitations de lapproche expérimentale Nécessité dimplémenter les différents algorithmes que lon veut comparer Nombre limité (et forcément fini) dinstances testées Ces instances ne sont pas forcément représentatives de tous les cas Outre lalgorithme et les instances testées, tous les autres facteurs (logiciel, matériel, …) influencent la mesure du temps dexécution

13/10/2005© 2005 P. Dupont. All rights reserved.8 Analyse asymptotique Objectif: analyser le temps (ou lespace) en se concentrant sur lalgorithme et linfluence de la taille du problème, généralement dans le pire cas Complexité temporelle = analyse asymptotique du nombre dopérations effectuées Complexité spatiale = analyse asymptotique de lespace utilisé Lanalyse asymptotique sintéresse à lévolution de la complexité lorsque la taille du problème augmente (i.e. tend vers linfini)

13/10/2005© 2005 P. Dupont. All rights reserved.9 La vraie question: comment évolue le temps dexécution en fonction de la taille du problème? Par exemple, si la taille n du problème est multipliée par 10 comment évolue le temps T = f(n) ? Si f(n) = c f(10n) = c Si f(n) = c.n f(10n) = c.(10n) = 10f(n) Si f(n) = c.n 2 f(10n) = c.(10n) 2 = 100f(n) Si f(n) = c.2 n f(10n) = c.2 (10n) = 1024f(n) La vitesse du processeur est un des facteurs qui conditionnent la valeur de la constante c. La vitesse du processeur ne change rien au rapport f(10n)/f(n). Une constante est donc tout ce qui ne dépend pas de la taille du problème Si lon sintéresse à linfluense de la taille du problème, on peut donc négliger les constantes, cest-à-dire ignorer linfluence de tous les facteurs constants (processeur, langage de programmation, compilateur, etc) T est inchangé T x 10 T x 100 T x ~1000

13/10/2005© 2005 P. Dupont. All rights reserved.10 Opérations primitives Une opération primitive est une instruction en langage de haut niveau (par exemple Java ou une description en pseudo-code) représente un nombre constant dopérations élémentaires effectivement exécutées sur le processeur une fois le programme compilé ou interprété dans un environnement donné est par exemple: une affectation dune valeur à une variable la comparaison de deux nombres une opération arithmétique élémentaire (p.ex. Addition de deux entiers petits) un accès à un élément dun tableau ou un tuple la renvoie dune valeur dune fonction une instruction dappel dune fonction ( lexécution de lensemble de la fonction!) Comme les constantes disparaissent dans lanalyse asymptotique, il suffit de compter les opérations primitives plutôt que les opérations élémentaires.

13/10/2005© 2005 P. Dupont. All rights reserved.11 Pourquoi se soucier du temps dexécution en pratique? (1) Hypothèse: on peut traiter une opération primitive en 1 s f(n) désigne le nombre dopérations primitives effectuées en fonction de la taille du problème Combien de temps prend le programme pour terminer son exécution si n=1000 selon f(n)? f(n)Temps n1 ms 400n0.4 s 2n 2 2 s n4n4 ~11.5 jours 2n2n 3.4 x années!!

13/10/2005© 2005 P. Dupont. All rights reserved.12 Pourquoi se soucier du temps dexécution en pratique? (2) Quelle est la taille maximale du problème que lon peut traiter? Si m est la taille maximale qu lon pouvait traiter en un temps donné, que devient m si lon reçoit de notre sponsor favori un processeur 256 fois plus rapide? f(n)En 1 secondeEn 1 minuteEn 1 heure n1 x x x n x n n4n n2n f(n)Nouvelle taille maximale n256m 400n256m 2n 2 16m n4n4 4m 2n2n m+8

13/10/2005© 2005 P. Dupont. All rights reserved.13 Calcul du nombre dopérations primitives Note: if I>N then 2 opérations primitives If CurrentMax<T.I then 3 opérations primitives Dans le pire cas, on exécute 9n+5 opérations primitives Ce calcul introduit de nouvelles constantes (p.ex. 9) que lon peut négliger pour les mêmes raisons que précédemment! % Input: T un tuple de n entiers (n>0) % Output: la valeur maximale dans T fun {TupleMax T} N={Width T} fun {Loop I CurrentMax} if I>N then CurrentMax else {Loop I+1 if CurrentMax<T.I then T.I else CurrentMax end} end end in {Loop 2 T.1} end 1 2 n (entrée) 2n 4n ou 5n n (retour) 1111

13/10/2005© 2005 P. Dupont. All rights reserved.14 Un outil mathématique: la notation O Une mesure de lordre de grandeur dune fonction f(n) : trouver une fonction g(n) qui constitue une borne supérieure de f(n) à une constante multiplicative c près et pour autant que n soit suffisamment grand f(n) O(g(n)) si c > 0, n 0 1 tels que f(n) c.g(n), n n 0 g(n) f(n) c.g(n) n n0n0

13/10/2005© 2005 P. Dupont. All rights reserved.15 Utilisation de la notation O 2n+10 O(n)car 2n+10 4.n pour n 5 2n+10 O(n)car 2n+10 1.n 2 pour n O(1)car pour n 1 3n n log 10 n + 125n O(n 2 ) car 3n n log 10 n + 125n n 2 pour n 148 On sintéresse à la borne la plus stricte possible 2n+10 O(n) Il suffit de garder les termes dominants et supprimer les constantes

13/10/2005© 2005 P. Dupont. All rights reserved.16 Retour à notre exemple La complexité temporelle de lalgorithme est globalement O(n) % Input: T un tuple de n entiers (n>0) % Output: la valeur maximale dans T fun {TupleMax T} N={Width T} fun {Loop I CurrentMax} if I>N then CurrentMax else {Loop I+1 if CurrentMax<T.I then T.I else CurrentMax end} end end in {Loop 2 T.1} end O(1) O(n) O(1)

13/10/2005© 2005 P. Dupont. All rights reserved.17 Notations, désigne une borne inférieure: Par exemple, n 3 (n 2 ) car n 2 O(n 3 ) désigne une fonction asymptotiquement équivalente: Par exemple, 400n-3 (n) f(n) (g(n)) si g(n) O(f(n)) f(n) (g(n)) si f(n) O(g(n)) et f(n) (g(n))

13/10/2005© 2005 P. Dupont. All rights reserved.18 Pourquoi distinguer O et ? La complexité temporelle de TupleFirstNegative est O(n) Sa complexité temporelle dans le meilleur cas est (1) Sa complexité temporelle dans le pire cas est (n) La complexité dans le meilleur cas nest pas toujours inférieure à la complexité en géneral. Par exemple, la complexité dans tous les cas de TupleMax est (n). % Input: T un tuple de n entiers (n>0) % Output: lindice du premier entier négatif dans T (renvoie -1 si aucun entier négatif) fun {TupleFirstNegative T} N={Width T} fun {Loop I} if I>N then ~1 elseif T.I<0 then I else {Loop I+1} end end in {Loop 1} end

13/10/2005© 2005 P. Dupont. All rights reserved.19 Complexité spatiale Raisonnement analogue à celui utilisé pour la complexité temporelle On sintéresse ici à lespace utilisé, cest-à-dire ce quil faut mémoriser On sintéresse aux termes dominants (analyse asymptotique) % Input: T un tuple de n entiers (n>0) (n) % Output: lindice du premier entier négatif dans T (renvoie -1 si aucun entier négatif) fun {TupleFirstNegative T} N={Width T} (1) fun {Loop I} (1) if I>N then ~1 elseif T.I<0 then I else {Loop I+1} end end in {Loop 1} end La complexité spatiale de TupleFirstNegative est (n)

13/10/2005© 2005 P. Dupont. All rights reserved.20 Complexité temporelle dun algorithme récursif Cette définition de factorielle nutilise pas daccumulateur La complexité temporelle est donnée par la fonction f(n) avec f(n) = Ce calcul nécessite en général de résoudre une équation de récurrence Ici, la solution est f(n) = c 1 +n.c 2 f(n) (n) % Input: n un entier positif % Output: n! fun {Factorielle N} if N==0 then 1 else N*{Factorielle N-1} end end c 1, si n=0 f(n-1)+c 2, sinon

13/10/2005© 2005 P. Dupont. All rights reserved.21 Complexité en moyenne Difficulté de définir un cas moyen Nécessité de connaître la distribution de probabilité des cas La complexité en moyenne est souvent équivalente à la complexité dans le pire cas fun {TupleFirstNegative T} N={Width T} fun {Loop I} if I>N then ~1 elseif T.I<0 then I else {Loop I+1} end end in {Loop 1} end Sous lhypothèse que lindice du premier entier négatif suit une distribution uniforme, sa valeur est en moyenne n/2 La complexité en moyenne de TupleFirstNegative est (n/2)= (n)

13/10/2005© 2005 P. Dupont. All rights reserved.22 Estimation expérimentale de la complexité asymptotique Sélection (délicate…) dinstances représentatives du pire cas Répétition de la mesure de temps pour chaque instance (calcul dun temps moyen pour lisser linfluence des autres facteurs) Répétition de la mesure de temps pour plusieurs instances de la même taille Mesure du temps pour des valeurs croissantes de la taille des instances Peu importe la valeur absolue du temps. Pour rappel, la question centrale est: comment évolue le temps lorsque la taille du problème augmente?