Page 45 - MATINF Nr. 1
P. 45

Optimalitatea algoritmului de c˘autare binar˘a                                                 45



            Demonstrat¸ie. Fie M = {T | T = arbore binar strict, card(I(T)) = n} s , i S(T) =     P   D T (v),
                                                                                                v∈E(T)
                             ∗
                                       ∗
            ∀ T ∈ M. Fie T ∈ M, T = (V, F), astfel ˆıncˆat
                                                 ∗
                                             S(T ) = min{S(T) | T ∈ M}.
            Consider˘am din nou c˘a nivelul pe care este reprezentat˘a r˘ad˘acina arborelui este numerotat cu 0.
                                                                                       ∗
                                       ∗
            Demonstr˘am c˘a arborele T nu are noduri externe pe nivelele 0,1, . . ., h(T ) − 2 prin reducere la
                                                   ∗
                                                                                                       ∗
            absurd. S˘a presupunem c˘a arborele T ar avea un nod extern x pe un nivel i, cu i ≤ h(T ) − 2.
                                         ∗
                                                                                 ∗
            Fie y un nod intern al lui T situat pe penultimul nivel, nivelul h(T ) − 1, s , i fie y 1 s , i y 2 cei doi
                                                                                                           ∗
            descendent , i ai lui y, deci y 1 s , i y 2 sunt noduri externe situate pe ultimul nivel, nivelul h(T ).
                                                 ∗                                 ∗
            Evident, D T  ∗(x) = i, D T  ∗(y) = h(T ) − 1, D T  ∗(y 1 ) = D T ∗(y 2 ) = h(T ).
                     0
                                             ∗
                Fie T arborele obt , inut din T prin mutarea nodurilor y 1 s , i y 2 de la descendent , i ai nodului y
            la descendent , i ai nodului x, adic˘a
                                       0
                                     T = (V, F \ {[y, y 1 ], [y, y 2 ]} ∪ {[x, y 1 ], [x, y 2 ]}).
                                                                                 0
                                                                                            ∗
            Evident, T   0  r˘amˆane un arbore binar strict, T   0  ∈ M, E(T ) = E(T ) \ {x} ∪ {y},
                                                                                                        ∗
                                                                       0
                                                                                               0
                                                       ∗(v), ∀ v ∈ E(T ) \ {y 1 , y 2 }. Avem S(T ) − S(T ) =
            D T  0(y 1 ) = D T  0(y 2 ) = i + 1, D T  0(v) = D T
              P       0(v) −   P
                   D T              D T  ∗(v) = D T  0(y) + D T  0(y 1 ) + D T  0(y 2 ) − D T  ∗(x) − D T  ∗(y 1 ) − D T ∗(y 2 ) =
                                  ∗
                  0
            v∈E(T )          v∈E(T )
                                             ∗
                                                              ∗
                ∗
                                                                              0
                                                                                       ∗
            h(T ) − 1 + 2(i + 1) − i − 2h(T ) = i + 1 − h(T ) < 0, deci S(T ) < S(T ), ceea ce contrazice
                          ∗
            alegerea lui T . Demonstrat , ia prin reducere la absurd este ˆıncheiat˘a.
                                                                                          ∗
                                      ∗
                Deoarece arborele T nu are noduri externe pe nivelele 0,1, . . ., h(T ) − 2, rezult˘a c˘a
            toate nodurile sale externe sunt situate pe ultimul s , i, eventual, pe penultimul nivel. Aplicˆand
            Propozit , ia 5 rezult˘a c˘a
                                                  ∗
                       min{S(T) | T ∈ M} = s(T ) = (n + 1) dlog (n + 1)e + n + 1 − 2     dlog (n+1)e ,
                                                                                            2
                                                                   2
            de unde rezult˘a inegalitatea din enunt , . Mai mult, dac˘a toate nodurile externe sunt situate pe
            ultimul s , i, eventual, pe penultimul nivel atunci, conform Propozit , iei 5, inegalitatea din enunt ,
            devine egalitate, iar ˆın caz contrar, conform demonstrat , iei prin reducere la absurd de mai sus,
            inegalitatea este strict˘a.
            C˘autarea binar˘a
            Consider˘am problema c˘aut˘arii unei valori date x printre elementele unui vector sortat cresc˘ator
                                                                ∗
            dat A = (a 1 , a 2 , . . . , a n ), a 1 ≤ a 2 ≤ . . . ≤ a n , n ∈ N .
                Algoritmul de c˘autare binar˘a rezolv˘a aceast˘a problem˘a prin urm˘atoarea strategie de tip
            Divide et Impera:

                                                                      ö n+1  ù
                • Se compar˘a x cu elementul median a m , unde m =          ;
                                                                        2
                • Avem trei variante posibile:
                     – Dac˘a x = a m , atunci c˘autarea se ˆıncheie cu succes;

                     – Dac˘a x < a m , atunci algoritmul continu˘a cu c˘autarea lui xˆın subvectorul (a 1 , . . . , a m−1 );
                     – Dac˘a x > a m , atunci algoritmul continu˘a cu c˘autarea lui xˆın subvectorul (a m+1 , . . . , a n ).
   40   41   42   43   44   45   46   47   48   49   50