Docstoc

tris2.4on1

Document Sample
tris2.4on1 Powered By Docstoc
					Plan                                   Tri par fusion                        Comparaison    Plan                                  Tri par fusion                               Comparaison




                                                                                                   Tri par fusion
                                                                                                       Principe
                                                                                                       Algorithmes
                                                                                                          u
                                                                                                       Coˆt
                                                                                                   Comparaison
                                Algorithmes de tri (2)

                         Ch. Lasou, N.E. Oussous, E. Wegrzynowski

                                  Licence ST-A, USTL - API1


                                          e
                                      19 f´vrier 2007




Algorithmes de tri (2)                                          Licence ST-A, USTL - API1   Algorithmes de tri (2)                                                Licence ST-A, USTL - API1




Plan                                   Tri par fusion                        Comparaison    Plan                                  Tri par fusion                               Comparaison



Principe                                                                                    Principe



Principe du tri par fusion                                                                  Les besoins

       Pour trier le tableau t                                                                     Il suffit donc de
                          t[1..8]= T I M O L E O N
                                                                                                                                             e
                                                                                                           savoir fusionner deux tranches tri´es t[a..b] et t[b + 1..c] de
               on coupe le tableau en deux parties de mˆme taille
                                                       e                                                     c a                                  e
                                                                                                           fa¸on ` obtenir une tranche t[a..c] tri´e.
                      t[1..4]= T I M O et t[5..8]= L E O N                                                   e                     e
                                                                                                           Sp´cification de la proc´dure de fusion
               on trie chacune des deux moiti´s
                                             e                                                             fusion (t ,a,b,c)
                         t[1..4]= I M O T , t[5..8]= E L N O                                                     e
                                                                                                           Donn´es : un tableau t, trois indices a, b, c
               puis on fusionne ces deux tableaux tri´s
                                                     e                                                                                                      e
                                                                                                           CU : les tranches t[a..b] et t[b + 1..c] sont tri´es
                             t[1..8]= E I L M N O O T                                                                       e
                                                                                                           But : rendre tri´e la tranche t[a..c]




Algorithmes de tri (2)                                          Licence ST-A, USTL - API1   Algorithmes de tri (2)                                                Licence ST-A, USTL - API1
Plan                                   Tri par fusion                                           Comparaison   Plan                                                 Tri par fusion                                  Comparaison



Principe                                                                                                      Algorithmes



            e
Algorithme r´cursif                                                                                           Algorithme de la fusion
                                                                                                                     fusion (t ,a,b,c)
                                                                                                                           e
                                                                                                                     Donn´es : un tableau t, trois indices a, b, c
                                                                                                                                                                      e
                                                                                                                     CU : les tranches t[a..b] et t[b + 1..c] sont tri´es
                                                                                                                                      e
                                                                                                                     But : rendre tri´e la tranche t[a..c]

                                                   e
               l’algorithme de tri par fusion est r´cursif                                                                  copier     t[a..c] d a n s aux[a..c]

                   e         e                     e
               la r´cursion d´pendant des indices d´limitant les tranches                                                   i := a       j := s u c c ( b )
                                                                                                                                               a
                                                                                                                            p o u r k := a ` c f a i r e
                 e                      e
               sp´cification de la proc´dure                                                                                       s i (i ≤ b) et (j ≤ c ) a l o r s
                                                                                                                                      s i aux[i] ≤ aux[j] a l o r s
                tri fusion rec (t ,a,b)                                                                                                   t[k] := aux[i] i n c ( i )
                      e
               Donn´es : un tableau t, deux indices a et b                                                                            sinon
                                                                                                                                          t[k] := aux[j] i n c ( j )
               But : trier la tranche t[a..b]                                                                                     sinon s i i ≤ b alors
                                                                                                                                      t[k] := aux[i] i n c ( i )
                                                                                                                                  sinon
                                                                                                                                      t[k] := aux[j] i n c ( j )
                                                                                                                                  fin si
                                                                                                                             f i n pour


Algorithmes de tri (2)                                                      Licence ST-A, USTL - API1         Algorithmes de tri (2)                                                                  Licence ST-A, USTL - API1




Plan                                   Tri par fusion                                           Comparaison   Plan                                                 Tri par fusion                                  Comparaison



Algorithmes                                                                                                     u
                                                                                                              Coˆt



Fusion en action                                                                                                u
                                                                                                              Coˆt de la fusion
                                                                                                                     Pour fusionner t[a..b] de taille n1 avec t[b + 1..c] de taille n2
                                                                                                                     (n = n1 + n2 )
                                                  k     i   j                   t                                            Dans tous les cas le nombre d’affectations est :
                                                        1   5   I   M   O   T       E   L   N     O
                                                                                                                                                             an = 2n
                                                  1     1   6   E   M   O   T       E   L   N     O
           t= I M O T E L N O
                                                  2     2   6   E   I   O   T       E   L   N     O
                    ↓                             3     2   7   E   I   L   T       E   L   N     O
                                                                                                                             Nombre de comparaisons
                                                                                                                                                              ee
                                                                                                                                  Meilleur des cas : tous les ´l´ments de la tranche la plus petite
                  copier                          4     3   7   E   I   L   M       E   L   N     O                                       e          e      a
                                                                                                                                  sont inf´rieurs ou ´gaux ` ceux de l’autre tranche
                    ↓                             5     3   8   E   I   L   M       N   L   N     O                                                        cn = min(n1 , n2 )
       aux= I M O T E L N O                       6     4   8   E   I   L   M       N   O   N     O
                                                  7         9   E   I   L   M       N   O   O     O                                                       ee
                                                                                                                                  Pire des cas : les deux ´l´ments les plus grands de la tranche
                                                                                                                                                                             e
                                                                                                                                  t[a..c] se trouvent dans deux tranches diff´rentes
                                                  8     4       E   I   L   M       N   O   O     T
                                                                                                                                                              cn = n − 1



Algorithmes de tri (2)                                                      Licence ST-A, USTL - API1         Algorithmes de tri (2)                                                                  Licence ST-A, USTL - API1
Plan                                       Tri par fusion                                    Comparaison    Plan                                                                     Tri par fusion                                                                             Comparaison



  u
Coˆt                                                                                                          u
                                                                                                            Coˆt



Algorithme du tri                                                                                           Exemple
        tri fusion rec (t ,a,b)                                                                                                      .                                                                                                                             .

                                                                                                                                                                         T   I       M    O   L    E       O N
              e
       Donn´es : un tableau t, deux indices a et b
       But : trier la tranche t[a..b]




                                                                                                                                                                                                                                                appels récursifs
                                                                                                                                                     T   I   M   O                                               L      E   O N

                    s i a<b a l o r s
                       m := m i l i e u ( a , b )                                                                                            T   I                       M       O                     L    E                       O   N


                       t r i f u s i o n r e c ( t , a ,m)
                       t r i f u s i o n r e c ( t , s u c c (m) , b )                                                                   T           I           M                    O           L                 E           O           N


                       f u s i o n ( t , a ,m, b )




                                                                                                                                                                                                                                                fusions
                                                                                                                                             I   T                       M   O                          E   L                       N   O
                    fin si
                                                                                                                                                     I   M   O       T                                              E   L   N   O




                                                                                                                                                                         E       I    L   M       N O       O   T
                                                                                                                                     .                                                                                                                             .




Algorithmes de tri (2)                                                          Licence ST-A, USTL - API1   Algorithmes de tri (2)                                                                                                                                 Licence ST-A, USTL - API1




Plan                                       Tri par fusion                                    Comparaison    Plan                                                                     Tri par fusion                                                                             Comparaison



  u
Coˆt                                                                                                          u
                                                                                                            Coˆt



  u
Coˆt du tri                                                                                                   u
                                                                                                            Coˆt du tri
       Nombre an d’affectations pour trier un tableau de taille n                                                   Nombre cn de comparaisons pour trier un tableau de taille n
           e            e e
          d´fini de mani`re r´currente par                                                                                               e
                                                                                                                           Relation de r´currence
                                a1 = 0
                                                                                                                                                     c1 = 0
                                an = a      n/2     +a      n/2   + 2n ∀n > 1
                                                                                                                                                     cn = c                           n/2         +c            n/2         + cn ∀n > 1

               lorsque n = 2p est une puissance de deux, on trouve                                                            u
                                                                                                                             o` cn = nbre de comparaisons dans la fusion
                                            an = 2n log2 (n)                                                               Dans le meilleur des cas : cn = n/2
                                                                                                                           Dans le pire des cas : cn = n − 1
               dans le cas g´n´ral
                            e e                                                                                            Dans tous les cas
                                                                                                                                                                                     cn = θ(n log2 (n))
                                           an = θ(n log2 (n))


Algorithmes de tri (2)                                                          Licence ST-A, USTL - API1   Algorithmes de tri (2)                                                                                                                                 Licence ST-A, USTL - API1
Plan                                              Tri par fusion                           Comparaison    Plan                                              Tri par fusion                          Comparaison




       Ordre de grandeur du nombre de comparaisons                                                               Nombre de comparaisons pour trier des tableaux de taille ≤ 200

                              Tri par s´lection
                                       e              Tri par insertion     Tri par fusion                                                       e
                                                                                                                                        Tri par s´lection    Tri par insertion   Tri par fusion
                                                                                                                                               zoom                      zoom         zoom
           Meilleur des cas




                                                                                                                     Meilleur des cas
                                       n2
                                   ∼   2                           ∼n        θ(n log2 n)
           Pire des cas




                                                                                                                                               zoom                      zoom         zoom




                                                                                                                     Pire des cas
                                       n2                              n2
                                   ∼   2                           ∼   2     θ(n log2 n)




Algorithmes de tri (2)                                                        Licence ST-A, USTL - API1   Algorithmes de tri (2)                                                       Licence ST-A, USTL - API1

				
DOCUMENT INFO
Shared By:
Tags:
Stats:
views:5
posted:10/9/2012
language:
pages:4