Page 37 - MATINF Nr. 7
P. 37

Complexitatea algoritmului de sortare rapid˘a (quicksort)                                      37



            Cum N med (1) = 0, obt , inem c˘a
                                                                        ‹
                                                         1    1         1
                               N med (n) = 2(n + 1) 1 +    +   + . . . +   − 4n, ∀ n ≥ 1.
                                                         2    3         n

                                                                        1    1         1
            Aplicˆand Teorema Stolz-Ces`aro pentru s , irurile a n = 1 +  +    + . . . +  s , i b n = ln n (strict
                                                                        2    3         n
            cresc˘ator s , i avˆand limita ∞) avem

                                     1   1         1
                                1 +    +   + . . . +
                            lim      2   3         n  = lim  a n  = lim  a n+1 − a n
                           n→∞           ln n           n→∞ b n    n→∞ b n+1 − b n
                                             1
                                           n + 1                n          1           1
                              = lim                   = lim         ·         ‹ =        = 1.
                                                                                 n
                                n→∞ ln(n + 1) − ln n     n→∞ n + 1            1       ln e
                                                                     ln 1 +
                                                                              n
            Deducem c˘a

                              N med (n)        ln 2 · N med (n)
                         lim           = lim
                         n→∞ n log n      n→∞      n ln n
                                   2                …                                        
                                                                      1   1         1
                                                                 1 +    +   + . . . +
                                                       2(n + 1)       2   3         n      4
                                       = ln 2 · lim             ·                      −
                                               n→∞        n               ln n           ln n

                                       = 2 ln 2,                                                         (11)

            deci N med (n) = Θ(n log n),
                                    2

                Urm˘atorul rezultat este o consecint , ˘a direct˘a a teoremei anterioare s , i a Teoremei 1 din [3]
            (care afirm˘a c˘a orice algoritm optim de sortare, bazat pe comparat , ii de chei, are complexitatea
            Θ(n log n)).
                    2
            Corolarul 1 (optimalitatea algoritmului de sortare rapid˘a). Algoritmul de sortare rapid˘a
            este asimptotic-optim (ˆın clasa algoritmilor bazat ,i pe comparat ,ii de chei), ˆın raport cu timpul
            mediu de execut ,ie.

                           ˆ
            Observat ,ia 3. In cazul cel mai favorabil, conform relat , iei (8) rezult˘a c˘a num˘arul de comparat , ii
            de chei efectuate de algoritmul de sortare rapid˘a este asimptotic echivalent cu n log n.
                                                                                                  2
                ˆ
                In cazul timpului mediu de execut , ie, conform relat , iei (11) rezult˘a c˘a num˘arul de comparat , ii
            de chei efectuate de algoritmul de sortare rapid˘a este asimptotic echivalent cu

                                                     2 ln 2 · n log n.
                                                                 2

            Deci conform Teoremei 1 din [3] (care afirm˘a s , i c˘a num˘arul de comparat , ii de chei efectuate
            de un algoritm optim de sortare a unui vector cu n componente este asimptotic echivalent cu
            n log n, atˆat ˆın cazul cel mai defavorabil, cˆat s , i ˆın cazul timpului mediu de execut , ie), rezult˘a c˘a
                 2
            algoritmul de sortare rapid˘a nu este optim ˆın raport cu timpul mediu de execut , ie.

                Pe de alt˘a parte, cum 2 ln 2 ' 1,39, rezult˘a c˘a ˆın cazul mediu num˘arul de comparat , ii efectuate
            este mai mare doar cu aproximativ 39% decˆat ˆın cazul cel mai favorabil (sau decˆat un algoritm
            optim).
   32   33   34   35   36   37   38   39   40   41   42