Top Banner

of 36

Complexité des algorithmes

Apr 04, 2018

Download

Documents

b385319
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/30/2019 Complexit des algorithmes

    1/36

    Complexit des algorithmes

    Stphane Grandcolas

    [email protected]

    Cours com lexit St hane Grandcolas . 1/28

  • 7/30/2019 Complexit des algorithmes

    2/36

    Algorithmes

    P : un problme

    M : une mthode pour rsoudre le problme P

    Algorithme : description de la mthode M dans unlangage algorithmique

    du nom du mathmaticien perse Al Khuwarizmi(780 - 850)

    Cours com lexit St hane Grandcolas . 2/28

  • 7/30/2019 Complexit des algorithmes

    3/36

  • 7/30/2019 Complexit des algorithmes

    4/36

    Complexit des algorithmes

    On veut

    Evaluer lefficacit de la mthode M

    Comparer M avec une autre mthode M

    indpendamment de lenvironnement (machine, systme,

    compilateur, . . .)

    Cours com lexit St hane Grandcolas . 4/28

  • 7/30/2019 Complexit des algorithmes

    5/36

    Complexit des algorithmes

    Evaluation du nombre doprations lmentaires en fonction

    de la taille des donnes,

    de la nature des donnes.

    Notations :

    n : taille des donnes,

    T(n) : nombre doprations lmentaires

    Configurations caractristiques

    meilleur cas,

    pire des cas,

    cas moyen.

    Cours com lexit St hane Grandcolas . 5/28

  • 7/30/2019 Complexit des algorithmes

    6/36

    Evaluation de T(n) (squence)

    Somme des cots.

    Traitement1 T1(n)

    Traitement2 T2(n)

    T(n) = T1(n) + T2(n)

    Cours com lexit St hane Grandcolas . 6/28

  • 7/30/2019 Complexit des algorithmes

    7/36

    Evaluation de T(n) (embranchement)

    Max des cots.

    si < condition > alors

    Traitement1 T1(n)

    sinon

    Traitement2 T2(n)

    max(T1(n), T2(n))

    Cours com lexit St hane Grandcolas . 7/28

  • 7/30/2019 Complexit des algorithmes

    8/36

  • 7/30/2019 Complexit des algorithmes

    9/36

  • 7/30/2019 Complexit des algorithmes

    10/36

    Notation de Landau O(f(n))

    c f(n)x

    0nn

    T(n) = O(f(n))

    Caractrise le comportement asymptotique (i.e. quand n ).

    T(n) = O(f(n)) si c n0 tels que n > n0, T(n) c f(n)

    Cours com lexit St hane Grandcolas . 10/28

  • 7/30/2019 Complexit des algorithmes

    11/36

  • 7/30/2019 Complexit des algorithmes

    12/36

    Exemples

    f(n) = n3 + 2 n2 + 4 n + 2 = O(n3)

    (si n 1 alors f(n) 8 n3

    )

    Cours com lexit St hane Grandcolas . 12/28

  • 7/30/2019 Complexit des algorithmes

    13/36

    Exemples

    f(n) = n3 + 2 n2 + 4 n + 2 = O(n3)

    (si n 1 alors f(n) 8 n3

    )

    f(n) = n log n + 12 n + 888 = O(n log n)

    Cours com lexit St hane Grandcolas . 12/28

  • 7/30/2019 Complexit des algorithmes

    14/36

    Exemples

    f(n) = n3 + 2 n2 + 4 n + 2 = O(n3)

    (si n 1 alors f(n) 8 n3

    )

    f(n) = n log n + 12 n + 888 = O(n log n)

    f(n) = 1000 n10 n7 + 12 n4 +2n

    1000= O(2n)

    Cours com lexit St hane Grandcolas . 12/28

  • 7/30/2019 Complexit des algorithmes

    15/36

  • 7/30/2019 Complexit des algorithmes

    16/36

  • 7/30/2019 Complexit des algorithmes

    17/36

  • 7/30/2019 Complexit des algorithmes

    18/36

    Exemple : tri bulle

    fonction Tri (S, n)

    1 pour i := n 2 faire (n 1 fois)

    2 pour j := 1 i 1 faire (i 1 fois)

    3 si (S[j] > S[j + 1]) alors

    4 permuter S[j] et S[j + 1] dans S,

    T(n) = Cperm n1

    i=1

    i =Cperm n (n 1)

    2= O(n2)

    Cours com lexit St hane Grandcolas . 16/28

    E i i

  • 7/30/2019 Complexit des algorithmes

    19/36

    Equations rcursives

    Boucles itratives, fonctions rcursives (approches de type diviser pour

    rgner notamment)

    Cas gnral

    T(n) = a T(n/b) + f(n)

    mthode par substitution,mthode par dveloppement itratif,

    mthode gnrale.

    Cours com lexit St hane Grandcolas . 17/28

  • 7/30/2019 Complexit des algorithmes

    20/36

  • 7/30/2019 Complexit des algorithmes

    21/36

    Mthode par s bstit tion

  • 7/30/2019 Complexit des algorithmes

    22/36

    Mthode par substitution [Equations rcursives]

    T(n) = 1 + T(n/2) et T(1) = 1

    intuition T(n) = O(log2 n)

    Hypothse T(n) = a log2 n + c

    donc T(n/2) = a log2 n a + c

    en substituant on a T(n) = 1 + a log2 n a + c

    donc 1 a + c = c et a = 1, et puisque T(1) = 1 donc c = 1

    Conclusion T(n) = log2 n + 1

    sil y a un lment on fera une itration

    Cours com lexit St hane Grandcolas . 20/28

    Mthode itrative

  • 7/30/2019 Complexit des algorithmes

    23/36

    Mthode itrative [rappel sommations]

    n1i=1 i =

    n(n1)2

    = O(n2)

    ni=0 x

    i = xn+1

    1x1

    ni=0 2i = 2n+1 1

    Cours com lexit St hane Grandcolas . 21/28

    Mthode itrative [E i i ]

  • 7/30/2019 Complexit des algorithmes

    24/36

    Mthode itrative [Equations rcursives]

    fonction TriParFusion (S, n)

    1 si (n 1) alors

    2 renvoyer S

    3 dcomposer S en S1 et S2, (n)

    3 S1 :=TriParFusion(S1), (T(n/2))

    4 S2 :=TriParFusion(S2), (T(n/2))5 S :=fusion(S1, S2), (n)

    6 renvoyer S

    T(n) = 1 + n + 2 T(n/2) + n et T(1) = 1

    Cours com lexit St hane Grandcolas . 22/28

  • 7/30/2019 Complexit des algorithmes

    25/36

    Mthode itrative [Equations rcursives]

  • 7/30/2019 Complexit des algorithmes

    26/36

    Mthode itrative [Equations rcursives]

    T(1) = 1T(n) = 2 n + 1 + 2 T(n/2)

    donc T(n/2) = n + 1 + 2 T(n/4)

    T(n) = (2 n + 1) + (2 n + 2) + 4 T(n/4)

    Cours com lexit St hane Grandcolas . 23/28

  • 7/30/2019 Complexit des algorithmes

    27/36

    Mthode itrative [Equations rcursives]

  • 7/30/2019 Complexit des algorithmes

    28/36

    Mthode itrative [Equations rcursives]

    T(1) = 1T(n) = 2 n + 1 + 2 T(n/2)

    donc T(n/2) = n + 1 + 2 T(n/4)

    T(n) = (2 n + 1) + (2 n + 2) + 4 T(n/4)or T(n/4) = n/2 + 1 + 2 T(n/8)

    T(n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T(n/8)

    ...T(n) =log n1

    i=0 (2 n + 2i) + 2log n

    Cours com lexit St hane Grandcolas . 23/28

    Mthode itrative [Equations rcursives]

  • 7/30/2019 Complexit des algorithmes

    29/36

    Mthode itrative [Equations rcursives]

    T(1) = 1T(n) = 2 n + 1 + 2 T(n/2)

    donc T(n/2) = n + 1 + 2 T(n/4)

    T(n) = (2 n + 1) + (2 n + 2) + 4 T(n/4)or T(n/4) = n/2 + 1 + 2 T(n/8)

    T(n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T(n/8)

    ...T(n) =

    log n1i=0 (2 n + 2

    i) + 2log n

    T(n) = 2n log n +

    log n1i=0 2

    i + n

    Cours com lexit St hane Grandcolas . 23/28

    Mthode itrative [Equations rcursives]

  • 7/30/2019 Complexit des algorithmes

    30/36

    Mthode itrative [Equations rcursives]

    T(1) = 1T(n) = 2 n + 1 + 2 T(n/2)

    donc T(n/2) = n + 1 + 2 T(n/4)

    T(n) = (2 n + 1) + (2 n + 2) + 4 T(n/4)or T(n/4) = n/2 + 1 + 2 T(n/8)

    T(n) = (2 n + 1) + (2 n + 2) + (2 n + 4) + 8 T(n/8)

    ...T(n) =

    log n1i=0 (2 n + 2

    i) + 2log n

    T(n) = 2n log n +

    log n1i=0 2

    i + n

    et commeP

    n

    i=0 2i = 2n+1 1, on a

    Plog n1i=0 2

    i = 2log n 1

    T(n) = 2n log n + 2n 1 = O(n log n)

    Cours com lexit St hane Grandcolas . 23/28

  • 7/30/2019 Complexit des algorithmes

    31/36

  • 7/30/2019 Complexit des algorithmes

    32/36

    Mthode gnrale [Equations rcursives]

  • 7/30/2019 Complexit des algorithmes

    33/36

    t ode g a e [ quat o s cu s es]

    T(n) = a T(n/b) + f(n)

    avec a 1, b > 1 et f(n) est positive asymptotiquement.

    si > 0, f(n) = O(nlogba

    ) alors T(n) = (nlogba

    ),

    si f(n) = (nlogb a) alors T(n) = (nlogb a lg n),

    si > 0, f(n) = (nlogb a+) et

    si c < 1, n0, n > n0, a f(n/b) c f(n) alors T(n) = (f(n))

    Le tri par fusion (T(n) = 2n + 1 + 2 T(n/2)) est dans le cas 2 :

    a = b = 2 et f(n) = 2n + 1 = (n) et T(n) = (n log n)

    Cours com lexit St hane Grandcolas . 25/28

  • 7/30/2019 Complexit des algorithmes

    34/36

  • 7/30/2019 Complexit des algorithmes

    35/36

  • 7/30/2019 Complexit des algorithmes

    36/36