Page 46 - MATINF Nr. 1
P. 46

46                                                                                     C. B˘alc˘au



                Obt , inem astfel urm˘atoarea variant˘a iterativ˘a a algoritmului:

                CAUT-BIN(A, n, x) :
                p ← 1; u ← n;                          // (a p , . . . , a u ) reprezint˘ a subvectorul curent
                                                                    // la care s-a restrˆ ans c˘ autarea
                while p ≤ u do
                           p + u
                         õ      û
                   m ←           ;
                             2
                   if x = a m then
                       return m;                                   // c˘ autarea se ˆ ıncheie cu succes
                   else
                       if x < a m then
                           u ← m − 1;
                       else
                           p ← m + 1;

                return −1;                                       // c˘ autarea se ˆ ıncheie f˘ ar˘ a succes


            Observat ,ia 4. Pentru evaluarea complexit˘at , ii algoritmilor care rezolv˘a problema considerat˘a,
            vom analiza numai comparat , iile ˆın care intervin valoarea c˘autat˘a x s , i un element al vectorului
            A, numite comparat ,ii de chei. Astfel consider˘am c˘a aceste comparat , ii se efectueaz˘a succesiv
            (comparat , iile simultane pot fi separate).

                Prezent˘am cˆateva not , iuni ajut˘atoare.


            Definit , ia 9. Un arbore binar de c˘autare (BST - Binary Search Tree) este un arbore
            binar cu proprietatea c˘a orice nod intern are valoarea (eticheta) mai mare decˆat orice nod din
            subarborele s˘au stˆang si mai mic˘a decˆat orice nod din subarborele s˘au drept.

            Observat ,ia 5. Fie A un algoritm de c˘autare, bazat pe comparat , ii de chei, ce rezolv˘a problema
            considerat˘a. Presupunem c˘a algoritmul nu cont , ine instruct , iuni redundante s , i este aplicabil
            pentru orice pozit , ionare posibil˘a a valorii x ˆın raport cu componentele vectorului A, deci valoarea
            x este comparat˘a exact cˆate o dat˘a cu fiecare componemt˘a a i , i = 1, n.

                Atunci algoritmului A i se poate asocia un arbore binar de c˘autare T (A) avˆand n noduri,
            etichetate cu numerele 1, 2, . . . , n, construit recursiv astfel: dac˘a prima comparat , ie efectuat˘a de
            algoritm este ˆıntre valoarea c˘autat˘a x s , i un element a i al vectorului, atunci:



                • r˘ad˘acina arborelui este etichetat˘a cu indicele i;


                • subarborele stˆang corespunde continu˘arii algoritmului ˆın cazul x < a i , dac˘a acest caz este
                  posibil dup˘a prima comparat , ie (altfel este vid, adic˘a nu exist˘a descendent stˆang);


                • subarborele drept corespunde continu˘arii algoritmului ˆın cazul x > a i , dac˘a acest caz este
                  posibil dup˘a prima comparat , ie (altfel este vid, adic˘a nu exist˘a descendent drept).



                Reciproc, oric˘arui arbore binar de c˘autare T avˆand n noduri, etichetate cu numerele
            1, 2, . . . , n, ˆıi corespunde un algoritm de c˘autare A(T ) a valorii x ˆın vectorul sortat
   41   42   43   44   45   46   47   48   49   50   51