Page 41 - MATINF Nr. 1
P. 41

Optimalitatea algoritmului de c˘autare binar˘a                                                 41



            Evident, algoritmul MAX-MIN efectueaz˘a cel put , in n − 1 s , i cel mult 2n − 2 astfel de comparat , ii
            (iar celelalte operat , ii nu dep˘as , esc ordinul de cres , tere al acestora), deci are complexitatea Θ(n).

                Se poate demonstra us , or prin induct , ie c˘a orice algoritm A care calculeaz˘a maximul dintre n
            elemente, bazat pe comparat , ii de chei, necesit˘a cel put , in n − 1 astfel de comparat , ii, deci are
            complexitatea Ω(n). Astfel T A (n) = Ω(T MAX-MIN (n)), sau, echivalent, T MAX-MIN (n) = O (T A (n)),
            deci algoritmul MAX-MIN este asimptotic-optim (ˆın clasa algoritmilor bazat , i pe comparat , ii de
            chei). Pe de alt˘a parte, el nu este optim, din punct de vedere al timpului de execut , ie ˆın cazul
            cel mai defavorabil, deoarece exist˘a algoritmi (bazat , i pe comparat , ii de chei) care ˆın cazul cel
            mai defavorabil efectueaz˘a mai put , in de 2n − 2 comparat , ii de chei, cˆat efectueaz˘a algoritmul
            MAX-MIN. Un astfel de exemplu este urm˘atorul algoritm, ce compar˘a a 1 cu a 2 , a 3 cu a 4 , . . . ,
            s , i calculeaz˘a maximul dintre maximele acestor perechi s , i minimul dintre minimele perechilor.

                MAX-MIN-PER(A, n, M, m) :
                M ← a n ; m ← a n ;
                for i = 1, bn/2c do
                   if a 2i−1 > a 2i then
                       if a 2i−1 > M then
                           M ← a 2i−1 ;
                       if a 2i < m then
                           m ← a 2i ;
                   else
                       if a 2i > M then
                           M ← a 2i ;
                       if a 2i−1 < m then
                           m ← a 2i−1 ;


            (bxc reprezint˘a partea ˆıntreag˘a a num˘arului real x). Evident, algoritmul MAX-MIN-PER
                                  n
                                õ û
            efectueaz˘a exact 3 ·    comparat , ii de chei, indiferent de ordinea dintre elementele vectorului A
                                  2
            (iar celelalte operat , ii nu dep˘as , esc ordinul de cres , tere al acestora), deci are complexitatea Θ(n).


            Teorema Master


            Prezent˘am un rezultat celebru, deosebit de util ˆın determinarea complexit˘at , ii algoritmilor
            specifici metodei de programare Divide et Impera s , i nu numai.

                Consider˘am o relat , ie de recurent , ˘a de forma
                                    T(n) = T(n/b) + . . . + T(n/b) +f(n), ∀ n > n 0 ,
                                            |          {z         }
                                                    a termeni
                                                    ∗
            unde T, f : N → R + , n 0 ∈ N, a ∈ N , b ∈ R, b > 1 s , i, prin convent , ie, fiecare termen n/b
                            n       n
                          õ û      ° §
            reprezint˘a fie     , fie    .
                            b        b
                Ment , ion˘am c˘a dxe = min{k | k ∈ Z, k ≥ x} reprezint˘a aproximarea ˆıntreag˘a prin adaos a
                                                                            ˆ
            num˘arului real x, numit˘a s , i partea ˆıntreag˘a superioar˘a a lui x. In acest context, partea ˆıntreag˘a
            uzual˘a, bxc (notat˘a de obicei cu [x]), se numes , te s , i partea ˆıntreag˘a inferioar˘a a lui x.

                Prin abuz de notat , ia de ˆınmult , ire, aceast˘a relat , ie de recurent , ˘a este convent , ional rescris˘a
            prescurtat sub forma
                                           T(n) = aT(n/b) + f(n), ∀ n > n 0 .                             (1)
   36   37   38   39   40   41   42   43   44   45   46