Page 40 - MATINF Nr. 1
P. 40

40                                                                                     C. B˘alc˘au



            Propozit , ia 1. Fie f, g : N \ A → R + dou˘a funct ,ii, unde A este o mult ,ime finit˘a, A ⊂ N.
                                        f(n)
            Presupunem c˘a exist˘a lim        = L. Atunci:
                                   n→∞  g(n)

                a) f(n) = O (g(n)) dac˘a s , i numai dac˘a L ∈ [0, +∞);
                b) f(n) = Ω(g(n)) dac˘a s , i numai dac˘a L ∈ (0, +∞];

                c) f(n) = Θ(g(n)) dac˘a s , i numai dac˘a L ∈ (0, +∞).

            Corolarul 1. Fie f, g : N \ A → R + dou˘a funct ,ii, unde A este o mult ,ime finit˘a, A ⊂ N. Dac˘a
            f(n) ∼ g(n), atunci f(n) = Θ(g(n)).

            Definit , ia 4. Fie A un algoritm s , i f : N\A → R + o funct ,ie, unde A este o mult ,ime finit˘a, A ⊂ N.
            Spunem c˘a algoritmul A are ordinul de complexitate (complexitatea) O (f(n)), Ω(f(n)),
            respectiv Θ(f(n)) dac˘a T A (n) = O (f(n)), T A (n) = Ω(f(n)), respectiv T A (n) = Θ(f(n)).

            Observat ,ia 1. Notat , ia O se utilizeaz˘a pentru a exprima complexitatea unui algoritm cores-
            punz˘atoare timpului de execut ,ie ˆın cazul cel mai defavorabil, fiind astfel cea mai adecvat˘a analizei
            algoritmilor. Notat , ia Ω este corespunz˘atoare timpului de execut ,ie ˆın cazul cel mai favorabil, caz
            practic irelevant, fiind astfel mai put , in utilizat˘a. Notat , iile ∼ s , i Θ se utilizeaz˘a atunci cˆand se
            constat˘a c˘a timpii de execut , ie corespunz˘atori cazurilor cel mai defavorabil s , i cel mai favorabil
            fie sunt chiar asimptotic echivalent , i (notat , ia ∼, deci s , i notat , ia Θ), cazul cel mai simplu fiind
            acela al algoritmilor a c˘aror executare depinde doar de dimensiunea setului de date de intrare,
            nu s , i de valorile acestor date, fie au m˘acar acelas , i ordin de cres , tere (notat , ia Θ). Tot aceste
            notat , ii se utilizeaz˘a s , i atunci cˆand se poate determina timpul mediu de execut ,ie al algoritmului,
            calculat ca medie aritmetic˘a ponderat˘a a timpilor de execut , ie pentru toate seturile de date de
            intrare posibile, ponderile fiind frecvent , ele de aparit , ie ale acestor seturi.

            Definit , ia 5. Un algoritm A este considerat asimptotic-optim dac˘a (se demonstreaz˘a c˘a) nu
            exist˘a un algoritm avˆand un ordin de complexitate mai bun pentru rezolvarea problemei date,
                                           0
            adic˘a pentru orice algoritm A care rezolv˘a problema dat˘a avem T A (n) = O (T A 0(n)).


                Evident, orice algoritm optim este asimptotic-optim. Reciproca acestei afirmat , ii nu este
            adev˘arat˘a, ˆın continuare fiind prezentat un exemplu ˆın acest sens.
            Exemplul 1. Consider˘am problema determin˘arii maximului s , i minimului dintre elementele unui
            vector dat A = (a 1 , a 2 , . . . , a n ), n ≥ 1, adic˘a se cere s˘a se determine perechea (M, m), unde
            M = max{a i | 1 ≤ i ≤ n}, m = min{a i | 1 ≤ i ≤ n}.
                Un algoritm uzual de rezolvare este urm˘atorul.

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


            Pentru evaluarea complexit˘at , ii algoritmilor care rezolv˘a problema dat˘a, vom analiza numai com-
            parat , iile ˆın care intervin elemente ale vectorului sau valorile M s , i m, numite comparat ,ii de chei.
   35   36   37   38   39   40   41   42   43   44   45