Page 39 - MATINF Nr. 3
P. 39

Grafuri neorientate 2-neconexe echilibrate                                                     39



             VIII Determin˘am un nod i cu v i = 0.
              IX Parcurgem ˆın l˘at , ime sau adˆancime din nodul i graful dat folosind listele de adiacent , ˘a.
               X Calcul˘am ˆın n 2 suma elementelor lui v (adic˘a num˘arul de noduri vizitate dup˘a cele dou˘a
                  parcurgeri).
              XI Dac˘a n 2 = n atunci graful este 2-neconex echilibrat, altfel graful nu este 2-neconex
                  echilibrat.

            Observat ,ia 2. Algoritmul are timpul de execut , ie de ordinul O(m + n).

            Exemplu

                Pentru graful neorientat din Exemplul 1 (Figura 1), variabilele din algoritm, dup˘a fiecare
            etap˘a, au urm˘atoarele valori:


                I n = 6, m = 4.
               II n este par.
              III L 1 = {3, 5}, L 2 = {6}, L 3 = {1}, L 4 = {6}, L 5 = {1}, L 6 = {2, 4}.
              IV v 1 = 0, v 2 = 0, v 3 = 0, v 4 = 0, v 5 = 0, v 6 = 0.
               V v 1 = 1, v 2 = 0, v 3 = 1, v 4 = 0, v 5 = 1, v 6 = 0.
              VI n 1 = 3.
              VII n 1 este egal cu n/2 (n/2 = 6/2 = 3).
             VIII i = 2 (4 sau 5).
              IX v 1 = 1, v 2 = 1, v 3 = 1, v 4 = 1, v 5 = 1, v 6 = 1.
               X n 2 = 6.
              XI n 2 = n este echivalent˘a cu 6 = 6, adev˘arat, deci graful este 2-neconex echilibrat.



            Algoritm pentru conditia de graf aproape 2-neconex echilibrat
                                          ,

            Vom considera din nou un graf neorientat dat prin n - num˘arul noduri, m - num˘arul de muchii
            s , i m perechi de noduri ce reprezint˘a muchiile. Nodurile vor fi etichetate cu numerele 1, 2, . . . , n.

                Algoritmul pe care ˆıl prezent˘am ˆın continuare foloses , te urm˘atoarele structuri de date:

                I Liste de adiacent , ˘a L = (L 1 , L 2 , . . . , L n ), L i este lista cu nodurile adiacente cu i, 1 ≤ i ≤ n.
               II Vector de vizitare a nodurilor v = (v 1 , v 2 , . . . , v n ), v i este 0, dac˘a nodul i nu a fost vizitat,
                  respectiv 1, ˆın caz contrar, 1 ≤ i ≤ n.
              III Vectorul x = (x 1 , x 2 , . . . , x k ), cu k = num˘arul de componente conexe s , i x i = num˘arul de
                  noduri a celei de-a i-a component˘a conex˘a, 1 ≤ i ≤ k.


                Etapele algoritmului sunt urm˘atoarele:

                I Citim n, m.
               II Dac˘a n este impar, graful nu este aproape 2-neconex echilibrat s , i algoritmul se termin˘a.
              III Citim cele m muchii ˆın variabilele i s , i j, dup˘a care introducem j ˆın lista L i , respectiv i ˆın
                  lista L j .
              IV Init , ializ˘am componentele lui v cu 0 s , i k cu 0.
               V Pentru fiecare nod i din mult , imea {1, 2, . . . , n}, dac˘a v i = 0 atunci k = k + 1 s , i parcurgem
                  ˆın l˘at , ime sau adˆancime din nodul i graful dat folosind listele de adiacent , ˘a s , i determin˘am
                  ˆın x k num˘arul de noduri vizitate (num˘arul de noduri din componenta conex˘a ce cont , ine
                  nodul i).
   34   35   36   37   38   39   40   41   42   43   44