>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

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