Page 50 - MATINF Nr. 1
P. 50

50                                                                                     C. B˘alc˘au



                Conform Propozit , iei 5 s , i Observat , iei 3 rezult˘a c˘a h = dlog (n + 1)e = blog nc + 1. Conform
                                                                                           2
                                                                          2
            Observat , iei 7 rezult˘a c˘a o c˘autare cu succes necesit˘a cel mult h comparat , ii de chei, iar o c˘autare
            f˘ar˘a succes necesit˘a h − 1 sau h comparat , ii de chei.

            Observat ,ia 8. Conform propozit , iei anterioare, algoritmul de c˘autare binar˘a are timpul de execut , ie
            ˆın cazul cel mai defavorabil de ordinul Θ(log n) (celelalte operat , ii nu dep˘as , esc ordinul de cres , tere
                                                        2
            al comparat , iilor de chei), deci timpul (mediu) de execut , ie are ordinul O (log n). Teorema
                                                                                              2
            urm˘atoare ˆımbun˘at˘at , es , te acest rezultat.

            Teorema 3. Fie T(n) timpul mediu de execut ,ie al algoritmului de c˘autare binar˘a ˆıntr-un vector
            sortat cu n componente. Avem T(n) = Θ(log n).
                                                          2

            Demonstrat¸ie. Consider˘am c˘a timpul mediu de execut , ie T(n) al algoritmului de c˘autare binar˘a
            este dat de num˘arul de comparat , ii de chei efectuate (celelalte operat , ii nu dep˘as , esc ordinul de
            cres , tere al acestora). Vom demonstra c˘a T(n) = Θ(log n) prin dou˘a metode.
                                                                    2
                Metoda 1) Vom aplica Teorema Master. Conform descrierii recursive a algoritmului de
            c˘autare binar˘a, timpul de execut , ie T(n) verific˘a relat , ia de recurent , ˘a

                                            T(n) = T(n/2) + O (1), ∀ n > 0,

            cu convent , iile de notat , ie din Teorema Master. Conform Cazului 2 al acelei teoreme, pentru
            a = 1, b = 2, c = 0 = log a s , i k = 0, rezult˘a c˘a T(n) = Θ(log n).
                                      b
                                                                           2
            Observat ,ia 9. Ca o consecint , ˘a imediat˘a a Metodei 1, Propozit , iei 7 s , i Teoremei 2 rezult˘a c˘a
            algoritmul de c˘autare binar˘a este asimptotic optim (ˆın clasa algoritmilor bazat , i pe comparat , ii
            de chei, atˆat ˆın raport cu timpul de execut , ie ˆın cazul cel mai defavorabil, cˆat s , i ˆın raport cu
            timpul mediu de execut , ie). Pentru a justifica faptul c˘a algoritmul este chiar optim, nu este
            suficient˘a evaluarea complexit˘at , ii cu Teorema Master. Aici intervine metoda urm˘atoare, prin
            care se num˘ar˘a comparat , iile efectuate de algoritm.

                Metoda 2) Vom calcula efectiv timpul mediu de execut , ie T(n). Conform demonstrat , iei
            Propozit , iei 7, arborele binar extins de c˘autare asociat algoritmului c˘aut˘arii binare este un arbore
            binar strict cu n noduri interne s , i n + 1 noduri externe, iar toate nodurile externe sunt situate
            pe ultimul s , i, eventual, pe penultimul nivel. Not˘am cu I mult , imea nodurilor interne, cu E
            mult , imea nodurilor externe, iar pentru fiecare nod k not˘am cu D(k) distant , a de la r˘ad˘acina
            arborelui la nodul k. Conform Observat , iei 7, timpul mediu de execut , ie are valoarea

                                        (1 + D(k)) +      D(k)     n +    D(k) +      D(k)
                                      P                P               P           P
                                     k∈I              k∈E              k∈I        k∈E
                             T(n) =                             =                          .
                                               2n + 1                       2n + 1
            Conform Propozit , iilor 3 s , i 5 rezult˘a c˘a

                                2  P  D(k) − n                                          dlog (n+1)e
                                 k∈E              2n + 2                   n + 2 − 2 · 2   2
                       T(n) =                  =          · dlog (n + 1)e +                      .        (6)
                                                               2
                                    2n + 1        2n + 1                           2n + 1
            Dar, conform Observat , iei 3, dlog (n + 1)e = 1 + blog nc , deci
                                              2
                                                                  2
                                             2n + 2             3n + 4 − 4 · 2 blog nc
                                                                                 2
                                    T(n) =          · blog nc +                     .
                                                         2
                                             2n + 1                    2n + 1
   45   46   47   48   49   50   51   52   53   54   55