Page 29 - MATINF Nr.2
P. 29

Vectori de frecvent , e                                                                        29



            Demonstrat¸ie. Demonstrat , ia este imediat˘a, pentru c˘a ordinea elementelor ˆıntr-un vector nu
            afecteaz˘a vectorul de frecvent , e.

            Propozit , ia 3. Fie x un vector de dimensiune n cu elemente ˆın M. Num˘arul de componente
            distincte din x este egal cu card{i|i ∈ M s , i f x [i] > 0}.


            Demonstrat¸ie. Num˘arul de componente distincte din x este egal cu num˘arul de elemente k din
            M care se g˘asesc ˆın x, lucru echivalent cu f x [k] > 0, astfel rezult˘a afirmat , ia din propozit , ie.

            Observat ,ia 2. Dac˘a pentru un vector x, ˆın loc de frecvent , a de aparit , ie a lui i ˆın x (0 ≤ i ≤ Max),
            ret , inem pentru f x [i] valoarea 1 dac˘a i este ˆın x s , i 0, ˆın caz contrar, atunci f x se va numi vectorul
            caracteristic asociat lui x.

            Exemplul 3. Pentru Max = 6, n = 8, x = (1, 4, 0, 4, 5, 2, 5, 5) vectorul caracteristic asociat lui x
            este f x = (1, 1, 1, 0, 1, 1, 0).

            Observat ,ia 3. Vectorii caracteristici pot fi folosit , i pentru memorarea mult , imilor s , i efectuarea
            operat , iilor specifice, obt , inˆand astfel algoritmi eficient , i.



            Tipuri standard de probleme ce pot fi rezolvate cu vectori de frecvent˘a
                                                                                                       ,

            1. Ordonarea unui vector

                Se d˘a n s , i componentele unui vector x, valori mai mici sau egale cu 1000. Se cere s˘a se
            afis , eze componentele vectorului x ˆın ordine cresc˘atoare.

                Exemplu
                Intrare

                7

                3 12 4 3 9 3 9

                Ies , ire
                3 3 3 4 9 9 12

                Solut , ie

                I. Max = 0

                II. Citim n s , i componentele vectorului ˆın variabila k. Pentru fiecare k actualiz˘am Max (cea
            mai mare component˘a din x) s , i f x [k] = f x [k]+1. Astfel x are elementele ˆın M = {0, 1, . . . , Max}
            s , i f x este vectorul de frecvent , e.

                III. Afis , ˘am componentele lui x ordonate cresc˘ator folosind vectorul de frecvent , e f x , astfel:
            pentru orice k din mult , imea M, afis , ˘am k de f x [k] ori.
                Pentru exemplul considerat: Max = 12, f x [3] = 3, f x [4] = 1, f x [9] = 2, f x [12] = 1, iar
            celelalte componente ale lui f x sunt 0. Se va afis , a 3 de 3 ori, 4 o dat˘a, 9 de dou˘a ori s , i 12 o dat˘a.

                2. Determinarea componentelor distincte dintr-un vector

                Se d˘a n s , i componentele unui vector x, valori mai mici sau egale cu 1000. Se cere s˘a se
            afis , eze componentele distincte din x ˆın ordine cresc˘atoare.
   24   25   26   27   28   29   30   31   32   33   34