SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
>ommaire
                                                               •   Introduction
                                                               •   Analyse expérimentale
                                                               •   Analyse théorique
                                                               •    Complexité asymptotique
                                 © L. B. Romdhane, Ph.D.            • Big-Oh
                                                                   • Big oméga
            ,-                    D S I / F S M / UM/Tunisie
                                                                   • Big thêta
                                                               • Méthodes récursives
                                                               • Discussion


                                                                                           O L. B. Rumdhtmc; FSM.TN




INTRODUCTION (1)
• Analyser la complexité d'un algorithme revient à             • Espace mémoire, appelé aussi complexité spatiale,
  étudier ses performances                                       dépend de
• Pourquoi ?                                                      • la taille des données
   • savoir les limitations d'un algorithme                          • e.g.; nombre d'éléments d'un tableau, la valeur d'un paramètre
   • choisir les machines adéquates pour l'exécuter                • choix d'une structure/type de données
     convenablement                                                  • e.g.; entier, réel, etc.
   • comparer deux algorithmes pour choisir le plus efficace   • L'avancement technologique fait que l'espace mémoire
• Paramètres mesurables                                          n'est plus un problème fondamental pour les machines
                                                                 actuelles
   • espace méraoire (RAM)
                                                                  • Grosse capacité, vitesse d'accès rapide
   « temps d'exécution


                     « 1,. B. Hunulhiuic; KSM.TN                                             L. B. Rorailhuiiui FSM.TN
AS!)
INTRODUCTION (3)                                             HTTRO D U CTi 0 N (4)                                  "" '"
» Le facteur primordial est le temps d'exécution                      temps = /(paramètres du problème)
« Appelé aussi complexité temporelle
• Un fait réel : certains algorithmes sont encore très
  lents à exécuter même sur les machines les plus             temps
  performantes                                                                                                          Analyse
• Dépend des paramètres du problème à résoudre                            F
  • nombre d'éléments d'un tableau à trier
  • taille (valeur) d'un nombre qu'on veut déterminer être
                                                                              paramètres (input)            Expérimentale         Théorique
    premier ou non ?
  « etc.

                      L. B. KomiiJuuic; l'SM.TN                                        L. B. Romdhanej FSM.TN




                                                              Mesurer le temps d'exécution sur un ensemble de
                                                              données en faisant varier
Analyse Expérimentale                                          • l'ensemble des données; et/ou
                                                               • la taille (le nombre) des données en entrée
                                                              Dégager Za corrélation entre temps et données ( F )
                                                              à l'aide d'une étude statistique


                                                                                           PROGRAMME
                                                                      temps _débuî                                          temps_fm

                                                                              temps ~ temps_début - temp_tin

                      i ],. B. Rumdliane; FSM.TN                                        L. B. Romdhanc; FSM.TN
EMARCHE (1)                                                                      EMARCHE (2)
1.    Fixer les tests à faire ?                                                     3. Génération de l'ensemble des données en entrée
     « variation en fonction de la taille                                              •    choisir les données les plus représentatives
       * Tri d'un tableau: varier la dimension                                             • connaître la distribution des données en entrée
     •  sensibilité par rapport à un paramètre constant                             4. Codage & test de l'algorithme
       • calculer le zéro d'une fonction : mesurer le temps et
          la précision du résultat obtenu en fonction du critère                       • effectuer « assez » de tests !
          d'arrêt (e = 10^ ; £ = icr* ; ,..)                                        5. Analyser les résultats obtenus
2.    Mesurer le temps d'exécution                                                     •    dégager le comportement de l'algorithme en fonction
     • Très difficile à estimer correctement                                                des données en entrée
     •     Varie en fonction de plusieurs paramètres                                   •    mettre ses résultats sous formulation mathématique
               •     taille mémoire; vitesse CPU; OS; langage utilisé; etc.                 (même empirique)

                                          © L. B. RoiiHlIiunc; FSM.TN         L'J                            ) L. ii. Ruuiilliuiiin l'SM.TN




                                             TourdFJWno
Exécuté sur 128 R.4M; et CPU = 866 Mliz; Windows XP; langage C
                                                                                    « Les expérimentations sont possibles uniquement sur
                   2500                                                               un ensemble limité des données
                                                 = 34: 2168 sec
                   2000 -
                                  = 36,13 mn
                                                                                       • Les données doivent être bien choisies
         i/r
                                                                                    * Temps d'exécution dépend de l'environnement
         ï 1500 -
         w
         g
         u
                   1000                                                               d'exécution :

                    500 -
                                                                                       • hardware (CPU, Mémoire, etc.)
                                                                                       • software (OS, compilateur, langage, etc.)
                            •v— -j-—^r-— J---W   |   v—


                            1      4       7 10 13 16 19 22 25 28 31 34
                                           7 10
                                                          N (# disks)

                                            ï L. B, KomdUane; ÏSM.TN                                         O L. B. Romdlianr, FSM.TN
l"    Une comparaison équitable de 2 algorithmes exige




         • implémentation/exécution sur le même environnement
         • développement par des compétences égales                                                                Analyse Théorique
   • Le développement de l'algorithme est nécessaire
     • perte temps
     • gaspillage argent
   • Démarche coûteuse et parfois non praticable pour
        certains algorithmes
         « Le temps d'exécution peut durer des années !

                           © L. B. Ronullianc; FSM.TN                                                                                ) L. B. Romdiiaue; FSM.TN




-^vîODELE                                                                                                         -IvTODELE-RAM (2)
  * A ne pas confondre avec la Random Access Memory                                                                 Une primitive dans le modèle RAM correspond à une
  « On considère un ensemble de primitives utilisées en                                                             instruction dans un
    algorithmique qui sont indépendantes du langage de                                                                 La durée d'exécution d'une instruction dépend de
    programmation :                                                                                                    l'environnement utilisé
     • affectation (<— )                                                                                              Dans le modèle RAM, on suppose que le temps
                                                                                                                      d'exécution de toutes les primitives est le même;
     • appel d'une méthode (fonction ou procédure)
                                                                                                                      c'est-à-dire « une unité de temps »
     » comparaison (<, >=, < > , > , > -)
                                                                                                                    Calc'ulefla compïëxïlé~iemporelie d'un
     » accès à une case d'un tableau (T[ i ] )                                                                      algorithme revient à comptabiliser le nombre de
     » retourner (résulat) (d'une méthode )                                                                         primitives qu'il contient
     « opérations mathématiques (+, * , - , / )
     « etc.
                                                                                                                                       L. U. Itoimlhane; FSM.TN
 ASI)                      © L. B. Homdhant; FSM.TN                                 M
I XEMPLE (1)                                                                                                           -"EXEMPLE (2)
 / i u i r / i o f i arrayMax(A :                                               Inst.             #opérations               Un algorithme peut s'exécuter plus rapidement sur un
         Uil>lrau[N] d'entiers) : entier                                             1.   2                                 ensemble de données que sur un autre        ^
         VAR i, currentMax : entier                                              2.       1 affect; N compa. ; 1               • A= [5,2,1,0]; T= Tmi'n = 20 ops                     ff là
 Début                                                                                    incré. et 1 affection (N-l)          • A = [0,1,2,5]; T = Tmax = 26 ops            /;'; ' jt^S
 1. currenMax <— A[i]                                                                     fois ; 1 + N + 2(N-1)                • A = [5,4,6,0]; Tmin <= T <= Tmax            _
 2. Pour i de 2 à N faire                                                        3.       1 comparaison, 1 accès :
                                                                                                                            On peut dégager trois mesures de complexité
 3. Si ( currentMax < A[iJ )                                                              N-l fois;2(N-l)
                                                                                 4.       1 alïectation, 1 accès : N-
                                                                                                                            « maximale ou au pire des cas ( worst case )
 4. alors currentMax <—A[i]
                                                                                          1 fois; 2 (N-l)                    • minimale ou au meilleur des cas ( best case )
    Fin Si
    Fin Pour                                                                         5    1                                  • moyenne ( average case )
 5. retourner (currentMax)                                                      Tmin      5N
 FIN.                                                                           Tmax      7N-2
                                              i L. I). Komdlimii]; KSM.ÏN                                                                          L. B. Ronuthane; FSM.TN




-TfPÉS DE CÔMPLËXÏÏF                                                                                                    --COMP LEX lî
                                                                                                                          • Pour déterminer la complexité moyenne, il faut
                                                                                                  maximal                    • mesurer la complexité de chaque cas possible (T,.)"-^ ' v
             5ms •     "i™ «
                           I
     a
                                                                                                  moyenne                    • déterminer la fréquence de chaque cas (/))
                                                                                              }
                                                                 i^
                                                                  i .

             4 rns "                     U




                                   -•~                           .:'. i                                                   • La complexité moyenne est donnée par
                                         "1


     8       3ms -                            ]f                                                  minimal
                                                                        E

     B       2ms '
     Cl
                                                                  :'
             1 ms "        i
                                                                        |
                           1   -              J           .1 E                  7"                                        • Nécessite une idée précise sur les données du problème
                       A           B           D      Ë          F
                                                                            3
                                                                                                                          « Difficile à utiliser en pratique
                                                                                                                             • e.g.; problème du Tri



                                              C ]., B, Knindhnne; KSM.TN                                                                         G L. B. Roindhant; FSM.TN
COMPLEXITE MINIMALE                                     COMPLEXITE MAXIMALE
       N'a aucune utilité pratique                       • Assez informative
       II se peut que cette                              a Constat - un algorithme
       complexité ne soit atteinte                         qui a de bonnes
       que pour un ensemble très                           performances dans le
       réduit des données; donc                            pire des cas, aura
       non représentatif du                                toujours de bonnes
       problème !                                          performances quelque
                                                           soit les données en entrée




                           I L. B. Konidhane; KSM.TN                           © L. B. Romdhane; FSM.TN




^COMPLEXITE ASYMPTOTYQUE                                 «Big-Oh » (1) - Définition
  • L'analyse de la complexité selon le modèle RAM est   • Exprime le fait qu'une fonction est « inférieur ou égal »
    difficile à appliquer sur des algorithmes (projets     à une autre au sens asymptotique
    informatique) de grande taille                       • Définition
  • Besoin d'une analyse                                   f, g : N+ —> R ;f(n) est dite O(g(n)) ssi 3 c, une constante,
        • plus simple à calculer                              et un entier constant n0 >= 11 f(n) <= c g(n); Vn >= n0
       • aboutir à la même conclusion concernant le
         comportement de l'algorithme
  8    Les mesures les plus communes
       « Big-Oh                                                                                       f(n)
       « Big-Oméga
       « Big-Théta
                           <0 L. B. Konulhane; KSM.TN    ASD                    | L. B. Rumdhane; KSM.TN
 ASD
« Big-Oh » (2)- Exemples                                                                      « Big-Oh » (3) -Théorème
• yn - 2 est O(n)                                                                             Soit d(n), e(n), f(n) et g(n) trois fonctions : N+ —>• R
   • c = 7; n0 = i
                                                                                              1.     d(n) est 0(f(n)) => a *d(n) est O(f(n)) Va > o
• n3+ zn- 5 est O( n 3 )
   • c = 2; n0 = i                                                                            2. d(n) est O(f(n)); et e(n) est O(g(n)) :
• n + 3 log(n) est O( n )                                                                           a. d(n) + e(n) est 0(f(n)    +   g(n))
   • c = 3; n0 = i                                                                                  b. d(n) x e(n) est O (f(n) x g(n))
• 3n + n3 + nlog(n) est 0(3" )
                                                                                              3. d(n) est O(f(n)) etf(n) est O(g(n)) =i> d(n) est
      • c = i;n 0 = i
 • Big Oh permet de se concentrer sur les facteurs                                                   0(g(n))
   dominants dans l'expression de la complexité                                               4. f(n) - ao + ... + aknk est O(nk)

ASD                                © L. B. Rumdlianc; FSM.TN                                                            i L. B. Romdhane; FSM.TN




« Big-Oh » (4) - Fonctions usuelles                                                                            &Big-
  logarithmique         linéaire        quadratique            polynomiale    exponentielle
                                                                                              Big Oméga (£1)                            Big Thêta (9)
      O(log(n))          O(n)              O(n i               (nk) (k >=l    O(a n )
                                                                                              • une fonction f(n) est fi(g(n))           « une fonction f(n) est 0(g(n))
                           exponentielle
                                                                                                ssi g(n) est O(f(n)); Le., 3c et            ssi :
                                                quadratique/polynomiale                         n0>= i /g(n) <= cf(n); Vn                     •     fîn)estO(g(n)) «*
                                                                        linéaire                   >= nn                                      • f(n) esL Oi

Weitere ähnliche Inhalte

Andere mochten auch

Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursiveslotfibenromdhane
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8Talha Ocakçı
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete  Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete Adnan abid
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsNewCircle Training
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJava 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJosé Paumard
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Trilotfibenromdhane
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivitélotfibenromdhane
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJosé Paumard
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJosé Paumard
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8LivePerson
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm
 
Alphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certificationAlphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certificationAlphorm
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm
 

Andere mochten auch (17)

Functional programming in java
Functional programming in javaFunctional programming in java
Functional programming in java
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete  Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
 
Notifications
NotificationsNotifications
Notifications
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJava 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava Comparison
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server Faces
 
Alphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certificationAlphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certification
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 

Ähnlich wie Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes

Cour simulation ns2
Cour simulation ns2Cour simulation ns2
Cour simulation ns2Gilles Samba
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitairesPHPPRO
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptxtarekjedidi
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfFootballLovers9
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Ch6 Introduction à la Science de Données.pdf
Ch6 Introduction à la Science de Données.pdfCh6 Introduction à la Science de Données.pdf
Ch6 Introduction à la Science de Données.pdfnesrinetaamallah
 
Comment utiliser le plan execution le plan execution
Comment utiliser le plan execution le plan executionComment utiliser le plan execution le plan execution
Comment utiliser le plan execution le plan executionPollus Brodeur
 

Ähnlich wie Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes (9)

Cour simulation ns2
Cour simulation ns2Cour simulation ns2
Cour simulation ns2
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptx
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdf
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Ch6 Introduction à la Science de Données.pdf
Ch6 Introduction à la Science de Données.pdfCh6 Introduction à la Science de Données.pdf
Ch6 Introduction à la Science de Données.pdf
 
Comment utiliser le plan execution le plan execution
Comment utiliser le plan execution le plan executionComment utiliser le plan execution le plan execution
Comment utiliser le plan execution le plan execution
 

Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes

  • 1. >ommaire • Introduction • Analyse expérimentale • Analyse théorique • Complexité asymptotique © L. B. Romdhane, Ph.D. • Big-Oh • Big oméga ,- D S I / F S M / UM/Tunisie • Big thêta • Méthodes récursives • Discussion O L. B. Rumdhtmc; FSM.TN INTRODUCTION (1) • Analyser la complexité d'un algorithme revient à • Espace mémoire, appelé aussi complexité spatiale, étudier ses performances dépend de • Pourquoi ? • la taille des données • savoir les limitations d'un algorithme • e.g.; nombre d'éléments d'un tableau, la valeur d'un paramètre • choisir les machines adéquates pour l'exécuter • choix d'une structure/type de données convenablement • e.g.; entier, réel, etc. • comparer deux algorithmes pour choisir le plus efficace • L'avancement technologique fait que l'espace mémoire • Paramètres mesurables n'est plus un problème fondamental pour les machines actuelles • espace méraoire (RAM) • Grosse capacité, vitesse d'accès rapide « temps d'exécution « 1,. B. Hunulhiuic; KSM.TN L. B. Rorailhuiiui FSM.TN AS!)
  • 2. INTRODUCTION (3) HTTRO D U CTi 0 N (4) "" '" » Le facteur primordial est le temps d'exécution temps = /(paramètres du problème) « Appelé aussi complexité temporelle • Un fait réel : certains algorithmes sont encore très lents à exécuter même sur les machines les plus temps performantes Analyse • Dépend des paramètres du problème à résoudre F • nombre d'éléments d'un tableau à trier • taille (valeur) d'un nombre qu'on veut déterminer être paramètres (input) Expérimentale Théorique premier ou non ? « etc. L. B. KomiiJuuic; l'SM.TN L. B. Romdhanej FSM.TN Mesurer le temps d'exécution sur un ensemble de données en faisant varier Analyse Expérimentale • l'ensemble des données; et/ou • la taille (le nombre) des données en entrée Dégager Za corrélation entre temps et données ( F ) à l'aide d'une étude statistique PROGRAMME temps _débuî temps_fm temps ~ temps_début - temp_tin i ],. B. Rumdliane; FSM.TN L. B. Romdhanc; FSM.TN
  • 3. EMARCHE (1) EMARCHE (2) 1. Fixer les tests à faire ? 3. Génération de l'ensemble des données en entrée « variation en fonction de la taille • choisir les données les plus représentatives * Tri d'un tableau: varier la dimension • connaître la distribution des données en entrée • sensibilité par rapport à un paramètre constant 4. Codage & test de l'algorithme • calculer le zéro d'une fonction : mesurer le temps et la précision du résultat obtenu en fonction du critère • effectuer « assez » de tests ! d'arrêt (e = 10^ ; £ = icr* ; ,..) 5. Analyser les résultats obtenus 2. Mesurer le temps d'exécution • dégager le comportement de l'algorithme en fonction • Très difficile à estimer correctement des données en entrée • Varie en fonction de plusieurs paramètres • mettre ses résultats sous formulation mathématique • taille mémoire; vitesse CPU; OS; langage utilisé; etc. (même empirique) © L. B. RoiiHlIiunc; FSM.TN L'J ) L. ii. Ruuiilliuiiin l'SM.TN TourdFJWno Exécuté sur 128 R.4M; et CPU = 866 Mliz; Windows XP; langage C « Les expérimentations sont possibles uniquement sur 2500 un ensemble limité des données = 34: 2168 sec 2000 - = 36,13 mn • Les données doivent être bien choisies i/r * Temps d'exécution dépend de l'environnement ï 1500 - w g u 1000 d'exécution : 500 - • hardware (CPU, Mémoire, etc.) • software (OS, compilateur, langage, etc.) •v— -j-—^r-— J---W | v— 1 4 7 10 13 16 19 22 25 28 31 34 7 10 N (# disks) ï L. B, KomdUane; ÏSM.TN O L. B. Romdlianr, FSM.TN
  • 4. l" Une comparaison équitable de 2 algorithmes exige • implémentation/exécution sur le même environnement • développement par des compétences égales Analyse Théorique • Le développement de l'algorithme est nécessaire • perte temps • gaspillage argent • Démarche coûteuse et parfois non praticable pour certains algorithmes « Le temps d'exécution peut durer des années ! © L. B. Ronullianc; FSM.TN ) L. B. Romdiiaue; FSM.TN -^vîODELE -IvTODELE-RAM (2) * A ne pas confondre avec la Random Access Memory Une primitive dans le modèle RAM correspond à une « On considère un ensemble de primitives utilisées en instruction dans un algorithmique qui sont indépendantes du langage de La durée d'exécution d'une instruction dépend de programmation : l'environnement utilisé • affectation (<— ) Dans le modèle RAM, on suppose que le temps d'exécution de toutes les primitives est le même; • appel d'une méthode (fonction ou procédure) c'est-à-dire « une unité de temps » » comparaison (<, >=, < > , > , > -) Calc'ulefla compïëxïlé~iemporelie d'un » accès à une case d'un tableau (T[ i ] ) algorithme revient à comptabiliser le nombre de » retourner (résulat) (d'une méthode ) primitives qu'il contient « opérations mathématiques (+, * , - , / ) « etc. L. U. Itoimlhane; FSM.TN ASI) © L. B. Homdhant; FSM.TN M
  • 5. I XEMPLE (1) -"EXEMPLE (2) / i u i r / i o f i arrayMax(A : Inst. #opérations Un algorithme peut s'exécuter plus rapidement sur un Uil>lrau[N] d'entiers) : entier 1. 2 ensemble de données que sur un autre ^ VAR i, currentMax : entier 2. 1 affect; N compa. ; 1 • A= [5,2,1,0]; T= Tmi'n = 20 ops ff là Début incré. et 1 affection (N-l) • A = [0,1,2,5]; T = Tmax = 26 ops /;'; ' jt^S 1. currenMax <— A[i] fois ; 1 + N + 2(N-1) • A = [5,4,6,0]; Tmin <= T <= Tmax _ 2. Pour i de 2 à N faire 3. 1 comparaison, 1 accès : On peut dégager trois mesures de complexité 3. Si ( currentMax < A[iJ ) N-l fois;2(N-l) 4. 1 alïectation, 1 accès : N- « maximale ou au pire des cas ( worst case ) 4. alors currentMax <—A[i] 1 fois; 2 (N-l) • minimale ou au meilleur des cas ( best case ) Fin Si Fin Pour 5 1 • moyenne ( average case ) 5. retourner (currentMax) Tmin 5N FIN. Tmax 7N-2 i L. I). Komdlimii]; KSM.ÏN L. B. Ronuthane; FSM.TN -TfPÉS DE CÔMPLËXÏÏF --COMP LEX lî • Pour déterminer la complexité moyenne, il faut maximal • mesurer la complexité de chaque cas possible (T,.)"-^ ' v 5ms • "i™ « I a moyenne • déterminer la fréquence de chaque cas (/)) } i^ i . 4 rns " U -•~ .:'. i • La complexité moyenne est donnée par "1 8 3ms - ]f minimal E B 2ms ' Cl :' 1 ms " i | 1 - J .1 E 7" • Nécessite une idée précise sur les données du problème A B D Ë F 3 « Difficile à utiliser en pratique • e.g.; problème du Tri C ]., B, Knindhnne; KSM.TN G L. B. Roindhant; FSM.TN
  • 6. COMPLEXITE MINIMALE COMPLEXITE MAXIMALE N'a aucune utilité pratique • Assez informative II se peut que cette a Constat - un algorithme complexité ne soit atteinte qui a de bonnes que pour un ensemble très performances dans le réduit des données; donc pire des cas, aura non représentatif du toujours de bonnes problème ! performances quelque soit les données en entrée I L. B. Konidhane; KSM.TN © L. B. Romdhane; FSM.TN ^COMPLEXITE ASYMPTOTYQUE «Big-Oh » (1) - Définition • L'analyse de la complexité selon le modèle RAM est • Exprime le fait qu'une fonction est « inférieur ou égal » difficile à appliquer sur des algorithmes (projets à une autre au sens asymptotique informatique) de grande taille • Définition • Besoin d'une analyse f, g : N+ —> R ;f(n) est dite O(g(n)) ssi 3 c, une constante, • plus simple à calculer et un entier constant n0 >= 11 f(n) <= c g(n); Vn >= n0 • aboutir à la même conclusion concernant le comportement de l'algorithme 8 Les mesures les plus communes « Big-Oh f(n) « Big-Oméga « Big-Théta <0 L. B. Konulhane; KSM.TN ASD | L. B. Rumdhane; KSM.TN ASD
  • 7. « Big-Oh » (2)- Exemples « Big-Oh » (3) -Théorème • yn - 2 est O(n) Soit d(n), e(n), f(n) et g(n) trois fonctions : N+ —>• R • c = 7; n0 = i 1. d(n) est 0(f(n)) => a *d(n) est O(f(n)) Va > o • n3+ zn- 5 est O( n 3 ) • c = 2; n0 = i 2. d(n) est O(f(n)); et e(n) est O(g(n)) : • n + 3 log(n) est O( n ) a. d(n) + e(n) est 0(f(n) + g(n)) • c = 3; n0 = i b. d(n) x e(n) est O (f(n) x g(n)) • 3n + n3 + nlog(n) est 0(3" ) 3. d(n) est O(f(n)) etf(n) est O(g(n)) =i> d(n) est • c = i;n 0 = i • Big Oh permet de se concentrer sur les facteurs 0(g(n)) dominants dans l'expression de la complexité 4. f(n) - ao + ... + aknk est O(nk) ASD © L. B. Rumdlianc; FSM.TN i L. B. Romdhane; FSM.TN « Big-Oh » (4) - Fonctions usuelles &Big- logarithmique linéaire quadratique polynomiale exponentielle Big Oméga (£1) Big Thêta (9) O(log(n)) O(n) O(n i (nk) (k >=l O(a n ) • une fonction f(n) est fi(g(n)) « une fonction f(n) est 0(g(n)) exponentielle ssi g(n) est O(f(n)); Le., 3c et ssi : quadratique/polynomiale n0>= i /g(n) <= cf(n); Vn • fîn)estO(g(n)) «* linéaire >= nn • f(n) esL Oi