ALGORITMICA GRAFURILOR

Embed Size (px)

DESCRIPTION

ALGORITMICA GRAFURILOR

Citation preview

  • 1

    ALGORITMICA GRAFURILOR Conf. Univ. Dr. Silviu Brz

    I. INTRODUCERE N TEORIA GRAFURILOR

    1.1. Grafuri neorientate

    Definiie. Fie X o mulime finit i nevid i { }{ }, ,U x y x y X . Numim graf (sau graf neorientat) perechea ( ),G X U= . Eelemente din mulimea X se numesc noduri sau vrfuri, iar elementele din mulimea U poart numele de muchii ale grafului. Un graf se reprezint grafic printr-o mulime de puncte corespunztoare vrfurilor grafului i o mulime de segmente corespunztoare muchiilor. Dac pentru un graf exist o reprezentare n care s nu existe dou segmente care s se intersecteze, atunci spunem c graful reprezentat este un graf planar. Pornind de la definiie observm c dac X are n elemente, atunci U are cel mult 2nC elemente.

    Dac A este o mulime, vom nota prin A numrul de elemente ale

    mulimii.

    Definiie. Fie ( ),G X U= un graf i x X un nod fixat. Prin gradul nodului x nelegem numrul muchiilor incidente lui x i notm acest numr cu

    ( )d x . Dac ( ) 1d x = spunem c x este nod terminal. Dac ( ) 0d x = spunem c x este nod izolat. Propoziia 1. Fie ( ),G X U= un graf n care U m= . Atunci

    ( ) 2x X

    d x m

    = .

    Propoziia 2. Pentru orice graf ( ),G X U= , numrul vrfurilor de grad impar este par.

    Definiie. Fie ( ),G X U= un graf.. Numim graf parial al lui G, graful ( ),G X V = , unde V U .

    Definiie. Fie ( ),G X U= un graf. Numim subgraf n G, graful

    ( ),G Y V = , n care Y X , iar { }{ }, ,V x y U x y Y= .

  • 2

    Definiie. Fie ( ),G X U= un graf cu n vrfuri ( X n= ). Spunem c G este un graf complet , dac oricare ar fi ,x y X , avem { },x y U (orice dou vrfuri din G sunt conectate sau adiacente).

    Graful complet cu n vrfuri se noteaz prin nK

    Propoziia 3. Numrul muchiilor lui nK este 2nC .

    Definiie. Fie ( ),G X U= un graf. Dac exist 1X i 2X astfel nct 1 2X X = i 1 2X X X= ( X admite o partiie din dou blocuri 1X i 2X )

    i orice muchie din G unete un nod din 1X cu unul din 2X (oricare ar fi

    { },e x y U= , dac 1x X , atunci 2y X ) spunem c G este graf bipartit. Definiie. Fie ( ),G X U= un graf bipartit cu partiiile 1X i 2X . Dac

    1X p= i 2X q= i dac fiecare vrf din 1X este adiacent cu toate vrfurile

    din 2X (pentru orice 1x X i orice 2y X avem { },x y U ) spunem c G este un graf bipartit complet, notat ,p qK .

    Propoziia 4. Graful bipartit complet ,p qK are pq muchii.

    Definiie. Fie ( ),G X U= un graf. Numim lan n G o succesiune de vrfuri ( )0 1 0 1, ,..., ...r rL x x x x x x= = , astfel nct pentru orice 0,1,..., 1i r= ,

    1i ix x U+ (adic o succesiune n care oricare dou vrfuri vecine din lan sunt adiacente).

    Fie ( ),G X U= este un graf i 0 1... rL x x x= un lan n G . Vrfurile 0x i rx se numesc extremitile lanului L iar r se numete lungimea lanului L ,

    notat ( )l L r= (lungimea unui lan este dat de numrul muchiilor sale sau de numrul vrfurilor mai puin unul).

    Definiie. Fie ( ),G X U= un graf. Lanul L din G se numete lan elementar dac pentru orice 0 ,i j r , i j , avem i jx x (lanul trece prin noduri distincte).

    Definiie. Fie ( ),G X U= un graf. Lanul L din G se numete lan simplu dac pentru orice 0 , 1i j r , i j , avem { } { }1 1, ,i i j jx x x x+ + (toate muchiile sale sunt distincte).

    Propoziia 5. Fie ( ),G X U= un graf i L un lan n G . Dac L este lan elementar, atunci L este lan simplu.

  • 3

    1.2. Grafuri orientate

    Definiie. Fie X o mulime finit i nevid. Numim graf orientat (digraf) orice pereche ( ),G X U= n care U X X este o mulime finit de perechi ordonate cu componente din X (U este o relaie binar pe X ).

    Elementele mulimii X vor fi numite vrfuri sau noduri. Elementele mulimii U se numesc arce. Orice arc are forma ( ),a b , n care a se numete extremitate iniial, iar b se numete extremitate final a arcului ( ),a b .

    Un graf orientat se reprezint grafic printr-o mulime de puncte corespunztoare vrfurilor i printr-o mulime de segmente orientate (sgei) corespunztoare arcelor..O sgeat este orientat de la extremitatea iniial spre

    extremitatea final a arcului pe care l reprezint.

    Dac ( ),u x y U= spunem c x i y sunt adiacente n G i c nodurile x i y sunt incidente arcului u sau c arcul u este incident nodurilor x i y . Mai exact, spunem c u este incident exterior nodului x (u pleac sau iese din x ) i c u este incident interior nodului y (u ajunge sau intr n y ). Arcul

    ( ),x y U se mai noteaz i prin xy . Definiie. Fie ( ),G X U= un graf orientat i x X un nod fixat.

    a) Numim grad interior al lui x , numrul arcelor incidente interior lui x ,

    adic mrimea ( ) ( ){ },d x y x U y X = . b) Numim grad exterior al lui x , numrul arcelor incidente exterior lui x ,

    adic mrimea ( ) ( ){ },d x x y U y X+ = . c) Prin gradul nodului x nelegem numrul total al arcelor incidente lui x ,

    adic mrimea ( ) ( ) ( )d x d x d x += + . d) Dac ( ) 0d x = spunem c x X este vrf izolat. e) Dac ( ) 1d x = i ( ) 0d x+ = spunem c x X este vrf terminal; dac

    ( ) 0d x = i ( ) 1d x+ = spunem c x X este vrf iniial. Definiie. Fie ( ),G X U= un graf orientat i A X o mulime de vrfuri.

    a) Gradul interior lui A este numrul arcelor ce intr n A i care au nodul iniial n afara lui A , adic mrimea

    ( ) ( ){ }, ,d A y x U y A x A = .

  • 4

    b) Gradul exterior lui A este numrul arcelor ce ies din A i au nodul terminal n afara lui A , adic mrimea

    ( ) ( ){ }, ,d A x y U x A y A+ = . c) Gradul total al lui A este ( ) ( ) ( )d A d A d A += + .

    Observaii. 1) Evident, pentru orive A X avem ( ) ( )

    x A

    d A d x

    , deoarece s-ar putea ca anumite arce care ies din A s aib extremitatea final tot n A , arce care nu se numr la determinarea valorii ( )d A+ .

    2) Evident, pentru orive A X avem ( ) ( )x A

    d A d x+ +

    , deoarece s-ar putea ca anumite arce care intr n A s aib extremitatea iniial tot n A , arce care nu se numr la determinarea valorii ( )d A . Din 1) i 2) rezult c ( ) ( )

    x A

    d A d x

    .

    Definiie. Fie ( ),G X U= un graf orientat. Numim graf orientat parial al lui G graful orientat ( ),G X V= n care V U .

    Un graf orientat parial al lui G se obine prin suprimarea anumitor arce ale lui G .

    Definiie. Fie ( ),G X U= un graf orientat. Numim subgraf orientat al lui G , graful orientat ( ),H Y V= n care Y X , iar ( ){ }, ,V x y U x y Y= (mulimea tuturor arcelor lui G cu ambele extremiti n Y ).

    Un subgraf orientat se obine suprimnd anumite vrfuri din G i eliminnd toate arcele incidente vrfurilor suprimate.

    Definiie. Fie ( ),G X U= un graf orientat. Dac pentru orice ,x y X avem ( ),x y U sau ( ),y x U spunem c G este graf orientat complet.

    Un graf orientat complet cu n vrfuri se notean cu nK .

    Observaie. n cazul grafurilor neorientate, pentru un n , 2n , exist un singur graf complet cu n vrfuri, notat nK . n cazul grafurilor orientate

    pentru un n , 2n dat, exist mai multe grafuri orientate complete cu n vrfuri, ele diferind fie prin orientarea arcelor, fie prin numrul de arce ce unesc dou vrfuri, numr ce poate fi 1 sau 2.

  • 5

    Definiie. Fie ( ),G X U= un graf orientat. Numim drum n G o succesiune de vrfuri ( )0 1, ,..., rd x x x= astfel nct pentru orice 0,1,..., 1i r= ,

    1i ix x U+ (sau o succesiune de arce care au acelai sens, ( )1 1, ,..., pd u u u= , cu proprietatea c pentru orice 1,2,..., 1i p= , iu i 1iu + au o extremitate comun,

    mai exact extremitatea final a lui iu coincide cu extremitatea iniial a lui 1iu + .

    Fie ( )0 1, ,..., rd x x x= un drum n graful ( ),G X U= . 0x se numete extremitatea iniial, iar rx extremitatea final a drumului d .

    Definiie. Drumul ( )0 1, ,..., rd x x x= din graful ( ),G X U= se numete elementar dac pentru orice , 0,1,...,i j r= , i j , avem i jx x (drumul trece prin noduri distincte).

    Definiie. Fie ( ),G X U= un graf orientat. Numim lan n G , o secven de noduri [ ]0 1, ,..., rL x x x= cu proprietatea c pentru orice 0,1,..., 1i r= avem ( )1,i ix x U+ sau ( )1,i ix x U+ (sau o succesiune de arce

    1 2, ,..., pL u u u = astfel nct pentru orice 1,2,..., 1i p= , arcele iu i 1iu + au

    o extremitate comun - nu se mai pune condiia ca arcele s aib acelai sens, ca la drumuri).

    Observaie. Din definiie rezult imediat c orice drum este ntr-un graf orientat este n acelai timp i lan n graful orientat respectiv.

    Definiie. Fie ( ),G X U= un graf orientat. Pentru orice ,x y X spunem c y este accesibil din x sau y este atins din x dac i numai dac

    exist ( )0 1, ,..., rd x x x= un drum de capete x i y ..

    II. TIPURI PARTICULARE DE GRAFURI Definiie. Se nume te multigraf un graf neorientat n care cel puin dou

    vrfuri sunt unite prin muchii multiple.

    Definiie. Graful orientat ( ),G X U= se numete reflexiv (nereflexiv, simetric, antisimetric, total, tranzitiv) dac i numai dac relaia binar U este relaie binar reflexiv (nereflexiv, simetric,antisimetric, total, tranzitiv).

    Definiie. Fie ( ),G X U= un graf orientat. Dac pentru fiecare x X se asociaz o etichet pentru identificare spunem c G este un graf orientat etichetat.

  • 6

    Observc c la toate grafurile de mai sus un folosit o numerotare a vrfurilor. Numerele folosite pot fi considerate etichete pentru vrfuri i astfel grafurile pot fi considerate drept grafuri etichetate.

    Definiie. Fie ( ),G X U= un graf orientat. G se numete graf orientat marcat sau reea dac fiecrui u U i se asociaz o marc um . n acest caz, U X M X , M fiind mulimea mrcilor asociate arcelor. Dac ( ), ,x m y X M X , atunci arcul x y se marcheaz cu m i se reprezint prin mx y .

    Definiie. Numim reea etichetat un graf orientat marcat i etichetat. De fapt, graful din exemplul anterior, avnd vrfurile numerotate i

    muchiile marcate poate fi considerat i un exemplu de reea etichetat.

    2.1. Grafuri conexe

    Definiie. Graful neorientat ( ),G X U= se numete conex dac i numai dac oricare ar fi dou noduri ,x y X , x y , exist cel puin un lan n G ,

    ( )0 1, ,..., rL x x x= de extremiti x i y . Definiie. Fie ( ),G X U= un graf neorientat. Numim componenta

    conex a lui G , un subgraf conex ( ),C Y V= al su, i pentru orice x Y , subgraful obinut lund mulimea de vrfuri { }\Y x nu este conex (subgraful C este maximal n raport cu proprietatea de conexitate).

    Fie ( ),G X U= un graf neorientat. Pentru ,x y X spunem c x este conectat cu y dac exist un lan ce le unete, adic exist un lan

    ( )0 1, ,..., rL x x x= de extremiti x i y Pe mulimea X definim relaia binar ~ X X , dat prin ~x y dac

    i numai dac ( x y= sau x este conectat cu y ). Propoziia 1. Relaia " ~ " definit mai sus este o relaie de echivale Propoziia 2. Fie ( ),G X U= un graf n care X n= , U m= i 2n .

    Dac G este conex, atunci 1m n . Noiunea de graf conex este valabil i pentru grafurile orientate.

    Definiia este urmtoarea: Definiie. Graful orientat ( ),G X U= se numete conex dac i numai dac oricare ar fi dou noduri ,x y X , x y , exist cel puin un lan n G ,

    ( )0 1, ,..., rL x x x= de extremiti x i y .

  • 7

    Dac n definiia grafului conex pentru grafuri orientate nlocuim condiia de existen a unui lan cu cea de existen a unui drum se onine urmtoarea noiune. Definiie. Graful orientat ( ),G X U= se numete tare conex dac i numai dac oricare ar fi dou noduri ,x y X , x y , exist cel puin un drum n

    G , ( )0 1, ,..., rd x x x x y= = = de extremiti x i y . O posibilitate de a determina dac un graf neorientat este conex, sau determinarea efectiv a componentelor conexe (sau problemele similare pentru grafurile orientate) const n aplicarea unui algoritm de tip greede. S considerm nti problema determinrii conexitii unui graf neorientat ( ),G X U= . Algoritm 1.

    1. Se consider Y X= , V U= i se alege orice x X pentru care considerm { }B x= .

    2. Dac B = , atunci algoritmul se termin genernd un rspuns astfel:

    a. Dac V = , atunci graful este conex b. Dac V , atunci graful nu este conex (n plus se poate

    spune c mulimea \X Y reprezint componenta conex din care face parte i nodul x considerat la 1).

    Altfel se continu. 3. Se alege orice y B .

    4. Pentru fiecare \z Y B astfel nct { },y z V considerm { }B B z= i { }{ }\ ,V V y z=

    5. Considerm { }\B B y= i relum de la 2. Aa cum se vede din pasul 2, algoritmul prezentat d rspunsul la

    ntrebarea Este G un graf conex?. De asemenea, se poate determina componenta conex a grafului G din care face parte un anumit nod specificat. Acest lucru creaz premizele realizrii algoritmului de determinare a componentelor conexe, plecnd de la algoritmul 1.

    Algoritm 2. 1. Se consider Y X= , V U= 0k = . 2. Dac V = , atunci algoritmul se termin i componentele conexe

    ale grafului G sunt 1A , 2A , ..., kA . Vrfurile care nu sunt n 1

    k

    ki

    A=

    sunt vrfuri izolate i formeaz fiecare n parte cte o component conex a grafului G (n plus valoarea pentru k arat dac graful

  • 8

    G este sau nu conex. Astfel pentru 1k = i 1A X= graful este

    conex, altfel G nu este conex). 3. Alegem orice x Y . Fie 1k k= + , kA = , { }B x= . 4. Dac B = se trece le 8, altfel se continu. 5. Se alege orice y B .

    6. Pentru fiecare \z Y B astfel nct { },y z V considerm { }B B z= i { }{ }\ ,V V y z= .

    7. Considerm { }\B B y= , { }k kA A y= . Se trece la 4. 8. Se elimin din V orice muchie { },a b pentru care , ka b A . Se trece

    la 2.

    2.2. Grafuri complementare i izomorfe Definiie. Fie ( ),G X U= un graf neorientat, numim complementarul lui G (graf complementar lui G ), graful ( ),G X UC C= , n care { },x y UC dac i numai dac { },x y U .

    Definiie. Fie ( ),G X U= i ( ),G X U = dou grafuri neorientate. Spunem c G i G sunt izomorfe, notm G G , dac exist o funcie bijectiv :f X X astfel nct { },x y U dac i numai dac ( ) ( ){ },f x f y U .

    Din definiie rezult c dou grafuri sunt izomorfe dac au acelai numr de vrfuri i se poat obine unul din cellalt printr-o renumerotare a vrfurilor. Definiii similare celor de mai sus sunt valabile pentru grafurile orientate. Ele se obin nlocuid muchiile cu arce.

    Propoziia 3. Fie ( ),G X U= i ( ),G X U = dou grafuri orientate. Atunci G G dac i numai dac G GC C .

    2.3. Grafuri ciclice

    Definiie. Fie ( ),G X U= un graf neorientat. Numim ciclu n G un lan

    [ ]0 1, ,..., rL x x x= n care 0 rx x= (n care extremitile coincid). Definiie. Fie ( ),G X U= un graf neorientat i [ ]0 1, ,..., rL x x x= un ciclu. Spunem c L este ciclu elementar dac pentru orice 0 , 1i j r , i j ,

    avem i jx x (toate vrfurile sale, exceptnd extremitile, sunt distincte dou cte dou) .

  • 9

    Definiie. Fie ( ),G X U= un graf neorientat i [ ]0 1, ,..., rL x x x= un ciclu. Spunem c L este ciclu simplu daca pentru orice 0 , 1i j r , i j ,

    avem { } { }1 1, ,i i j jx x x x+ + (toate muchiile sale sunt distincte dou cte dou). Definiiile de mai sus continu s fie valabile i pentru grafurile

    orientate. Suplimentar intervin definiiile care urmeaz. Definiie. Fie ( ),G X U= un graf orientat. Numim circuit n G un drum

    ( )0 1, ,..., rC x x x= n care 0 rx x= (n care extremitile coincid). Definiie. Fie ( ),G X U= un graf orientat i ( )0 1, ,..., rC x x x= un circuit. Spunem c C este circuit elementar dac pentru orice 0 , 1i j r , i j , avem i jx x (toate vrfurile sale, exceptnd extremitile, sunt distincte dou cte dou) .

    Definiie. Fie ( ),G X U= un graf orientat i ( )0 1, ,..., rC x x x= un ciclu. Spunem c C este circuit simplu daca pentru orice 0 , 1i j r , i j ,

    avem ( ) ( )1 1, ,i i j jx x x x+ + (toate arcele sale sunt distincte dou cte dou). Definiie. Graful neorientat ( ),G X U= se numete ciclic dac G conine cel puin un ciclu i se numete aciclic n caz contrar.

    Definiie. Fie ( ),G X U= un graf orientat. Spunem c G este aciclic dac G nu conine nici un circuit i ciclic n caz contrar. Propoziia 4. Fie ( ),G X U= un graf neorientat. Dac U X , atunci G este ciclic. Definiie. Fie ( ),G X U= un graf neorientat avnd 1k componente conexe. Se numete punte n G o muchie m U pentru care graful parial

    { }( ), \G X U m = are numrul de componente conexe mai mare dect k . Propoziia 5. Fie ( ),G X U= un graful neorientat i m U . m este

    punte, dac i numai dac oricare ar fi ciclul [ ]1 2, ,..., rC m m m= n G dat prin muchiile sale, im m pentru orice 1 i r .

    Propoziia 6. Fie ( ),G X U= un graf orientat. G este tare conex dac i numai dac exist un circiut C care conine toare vrfurile grafului. Definiie. Fie ( ),G X U= un graf orientat. Definim

    ( ) ( ){ }, circuit in cu ,V x y U C G x y C= . Graful parial ( ),H X V= se numete graful orientat ciclu al lui G .

  • 10

    Propoziia 7. Fie ( ),G X U= un garf orientat i ( ),H X V= graful ciclu al lui G . Fie Y X i ( ),G Y W = subgraf. Atunci G component tare conex n G dac i numai dac G component tare conex n H .

    Definiie. Fie ( ),G X U= un graf orientat i 1C , 2C , ..., tC componentele tari conexe ale lui G . Fie { }1 2, ,..., tY C C C= i

    ( ) ( ){ }, , cu ,i j i jV C C x C y C x y U Y Y= . Graful ( ),H Y V= se numete graful condensat al lui G . Observaie. Graful condensat al oricrui graf orientat este aciclic.

    4. ARBORI

    4.1. Definire i proprieti

    Definiie. Numim arbore orice graf neorientat conex i fr cicluri.

    Teorema 1. Fie ( ),G X U= un graf neorientat. Urmtoarele afirmaii sunt echivalente:

    1. G este arbore. 2. G este aciclic maximal. 3. G este convex minimal.

    Corolar. Dac ( ),G X U= este arbore, atunci 1U X= . Propoziie 1. Dac ( ),G X U= este un arbire, atunci G are cel puin

    dou vrfuri terminale.

    4.2. Arbori pariali Definiie. Fie ( ),G X U= un graf neorientat i ( ),H X V= un graf parial al lui G . Dac H este arbore spunem c H este un arbore paial (de acoperire sau de traversare) al lui G . Observaie. Dac un graf neorientat ( ),G X U= are arbore parial, acesta nu este unic.

    Definiie. Fie ( ),G X U= un graf neorientat i ( ),A X V= un arbore parial al lui G . Numim coarde ale lui H elementele mulimii \U V , iar numrul

    \U V se numete numrul ciclomatic al lui G .

    Teorema 2. Fie ( ),G X U= un graf neorientat. G este conex dac i numai dac G are arbore parial.

  • 11

    Algoritm 1. 1. Fie V U= . 2. Dac graful ( ),H X V= nu conine cicluri, atunci algoritmul se termin i

    H este un arborele parial al lui G , altfel se coninu.

    3. Se consider un ciclu 1 2, ,..., pC e e e = n H

    4. Se alege { }1 2, ,..., pe e e e . Considerm { }\V V e= i mergem la 2. Propoziia 2. Fie ( ),G X U= un graf neorientat conex. Atunci numrul

    ciclomatic al lui G este 1U X + .

    Propoziia 3. Fie ( ),G X U= un graf neorientat conex, ( ),A X V= un arbore parial al lui G i { },e x y= o coard a lui A . Atunci graful

    { }( ),H X V e= conine exact un ciclu.

    4.3. Algoritmul lui Kruskal

    Problema arborelui parial de cost minim. Fie ( ),G X U= un graf neorientat conex, ( ): 0,c U o funcie, numit funcie cost a muchiilor lui G i ( ),H X V= un graf parial al lui G . Numim costul lui H suma costurilor tuturor muchiilor din V , adic valoarea ( ) ( )

    u U

    c H c u

    = . Se pune problema determinrii n G a unui graf parial conex de cost minim. Definiie. Fie ( ),G X U= un graf neorientat conex, ( ): 0,c U funcia cost a muchiilor lui G i ( ),cm cmT X V= un arbore parial cu proprietatea c pentru orice arbore parial ( ),T X V= avem ( ) ( )cmc T c T . Atunci spunem c cmT este arbore parial de cost minim al lui G .

    Teorema 3. Fie ( ),G X U= un graf neorientat conex, ( ): 0,c U funcia cost a muchiilor lui G i ( ),H X V= un graf parial al lui G . Dac H este graf parial conex de cost minim, atunci H este arbore parial de cost minim. Algoritmul 2. (Kruskal).

    1. Considerm c ( )L i i= pentru fiecare 1,2,...,i X= , construim ( )M j , . 1,2,...,j U= reprezentnd muchiile lui G n ordinea cresctoare a

    costurilor, considerm 0k = (pentru numrarea muchiilor selectate) i 1j = (pentru parcurgerea lui M ). Fie V = .

  • 12

    2. Dac 1k n , atunci algoritmul se oprete, muchiile din V determin arborele parial de cost minim, altfel se continu.

    3. Considerm { } ( ),p q M j= . 4. Dac ( ) ( )L p L q= , atunci punem 1j j= + i mergem la 3, altfel se

    continu.

    5. Punem 1k k= + i { }{ },V V p q= . 6. Dac ( ) ( )L p L q< , atunci nlocuim n L toate valorile ( )L q prin

    ( )L p , altfel nlocuim n L toate valorile ( )L p prin ( )L q . 7. Punem 1j j= + i mergem la 2.

    4.4. Arborescene

    Definiie. Fie ( ),G X U= un graf orientat conex i aciclic. Dac exist un unic vrf 0x X cu ( )0 0d x = i pentru orice x X , 0x x avem

    ( ) 0d x , spunem c G este o arborescen (sau arbore orientat). 0x poart numele de rdcin a arborescenei G . Vrfurile y pentru care ( ) 0d y+ = se numesc vrfuri terminale sau frunze.

    Definiie. Fie ( ),A X U= o arborescen cu rdcina 0x . Pentru un vrf x X definim nivelul nodului prin ( )0 ,...,l x x , unde ( )0 ,...,x x este drumul (unic) de extremitate iniial 0x i extremitate final x . Definiia de mai sus plasific vrfurile arborescenelor n funcie de distana lor fa de rdcin. Acest clasificare are ca efect o reprezentare n care nodurile sunt poziionate pe fiecare nivel, cu rdcina arborescenei n partea superioar a imaginii.

    Pentru o arborescena ( ),A X U= , dac ( ),x y U , spunem c x este printele (tatl) lui y i y este fiul (descendentul direct) lui x . Dac ,x y X

    i exist drumul (unic) ( )1, ,..., ,kx z z y , spunem c y este descendentul lui x . Definiie. Fie ( ),A X U= o arborescen. Dac pentru orice x X avem ( ) { }0,1,2d x+ . Spunem c A este o arborescen binar (arbore binar). Dac ( ) { }0,2d x+ , spunem c A este o arborescen binar complet (arbore binar complet).

    Teorema 4. Pentru orice *n exist ( ),A X U= o arborescen binar astfel nct

  • 13

    ( ){ }0x X d x n+ = = (numrul vrfurilor terminale s fie egal cu n ). Propoziia 4. Fie ( ),A X U= o arborescen binar complet n care

    ( ){ }0x X d x n+ = = . Atunci ( )2 1U n= . Definiie. Fie ( ),A X U= o arborescen binar i

    ( ) ( ){ }0 cu 0 si ,...,DT s x X d x l x x s+= = = (mulimea distanelor de la rdcin la fiecare vrf terminal). Dac max min 1DT DT , spunem c A este o arborescen binar echilibrat. Teorema 5. Fie ( ),A X U= o arborescen binar. Urmtoarele afirmaii sunt echivalente:

    1. A este o arborescen binar echilibrat; 2. pentru orice x X cu ( ) 0d x+ = , dac 2mX = , atunci

    ( )0 ,...,m l x x= i dac 12 2m mX +< < , atunci ( ) { }0 ,..., , 1l x x m m + .

    5. GRAFURI HAMILTONIENE I EULERIENE

    5.1. Grafuri Hamiltoniene

    Definiie. Fie ( ),G X U= un graf neorentat. Un lan (ciclu) elementar din G care conine toate vrfurile grafului se numete lan (ciclu) hamiltonian .

    Definiie. Un graf ( ),G X U= care con ine cel puin un ciclu hamiltonian se numete graf hamiltonian

    Aceste noiuni se regsesc i pentru grafurile orientate sub urmtoarele forme.

    Definiie. Fie ( ),G X U= un graf orentat. Un lan (rum, ciclu, circuit) elementar din G care conine toate vrfurile grafului se numete lan (drum, ciclu, circuit) hamiltonian .

    Definiie. Un graf ( ),G X U= care con ine cel puin un circiut hamiltonian se numete graf hamiltonian orientat

    Facem observaia c problematica grafurilor hamiltoniene este una de complexinate nepolinomial din punctul de vedere al algoritmcii.

    Teorema 1. Fie ( ),G X U= un graf neorientat n care 3X n= i

    pentru orice vrf x X avem ( )2

    nd x . Atunci G este graf hamiltonian.

  • 14

    5.2. Grafuri euleriene

    Definiie. Fie ( ),G X U= un graf neorientat. Un ciclu simplu din G se numete ciclu eulerian dac conine toate muchiile lui G .

    Definiie. Graful neorientat ( ),G X U= se numete graf eulerian dac G conine cel puin un ciclu eulerian.

    Dac trecem n cadrul grafurilor orientate avem definiia ce urmeaz

    Definiie. Fie ( ),G X U= cu U s= un graf orientat Fie [ ]1 2, ,..., sL m m m= un lan ( ( )1 2, ,..., sD m m m= un drum) simplu, atunci

    spunem c lanul L (drumul D ) este lan (drum) eulerian.. Lema 1. Fie ( ),G X U= un graf neorientat, nu neaprat conex. Dac

    pentru orice x X avem ( )d x numr par i pentru 0x X avem ( )0 0d x , atunci exist un ciclu simplu n G care trece prin 0x .

    Teorema 2. Fie ( ),G X U= un graf neorientat fr vrfuri izolate. Atunci G este eulerian dac i numai dac G este conex i pentru orice x X , ( )d x este numr par.

    Teorema 3. Fie ( ),G X U= un graf conex. Urmtoarele afirmaii sunt echivalente:

    1. G conine un ciclu eulerian.

    2. Orice x X , ( )d x este numr par.

    3. Exist 1 2, ,...,i i i

    ii pC m m m = cicluri,

    ijm U , 1,2,...,

    ij p= ,

    1,2,...,i k= , astfel nct notnd { }1 2, ,...,i i i ii pU m m m= avem i jU U = pentru orice 1 ,i j k , i j i

    1

    k

    ii

    U U=

    = (mulimea

    muchiilor poate fi partiionat n cicluri).

    Corolar 1. Fie ( ),G X U= un graf conex. G conine un lan eulerian dac i numai dac cel mult dou vrfuri ale lui G au gradul impar.

    Corolar 2. Fie ( ),G X U= un graf conex cu 2k vrfuri de grad impar,

    0k > . Atunci exist 1 2, ,...,i i i

    ii pL m m m = lan deschis,

    ijm U , 1,2,...,

    ij p= ,

    1,2,...,i k= , astfel nct notnd { }1 2, ,...,i i i ii pU m m m= avem i jU U =

  • 15

    pentru orice 1 ,i j k , i j i 1

    k

    ii

    U U=

    = (mulimea muchiilor poate fi

    partiionat n exact k lanuri deschise).

    VI. ALGORITMI PENTRU DRUMURI N GRAFURI ORIENTATE

    6.1. Algoritmi de calcul direct

    Pentru calculul direct a matricii drumurilor putem folosi n primul rnd

    operaiile + i i definite n capitolul 3. Algoritmul are la baz propoziia 5 din capitolul 3 i are forma urmtoare. Algoritmul 1.

    1. Considerm 1i = , D A= i T A= . 2. Dac i n> algoritmul se oprete, D conine matricea drumurilor din G ,

    altfel se continu.

    3. Considerm 1i i= + i calculm T T A= i folosind operaiile + i i .

    4. Calculm D D T= + folosind operaia + . 5. relum cu pasul 2.

    Teorema 1. Fie ( ),G X U= un grad orientat cu matricea de adiacea A i cu X n= . Algoritmul 1 produce matricea drumurilor din G i are

    complexitatea ( )42O n . Acest algoritm poate fi considerat i sub urmtoarea form.

    Algoritmul 1. 1. Considerm D A= . 2. Pentru 1,2,...,i n= i pentru 1,2,...,j n= se execut pasul 4. 3. Algoritmul se oprete; D conine matricea drumurilor lui G . 4. Dac 0ijd = , atunci pentru 1,2,...,k n= se execut pasul 5 altfel se

    continu.

    5. Se calculeaz ik ik jkd d d= + . O alt modalitate de calcul direct folosete operaiile uzuale definite pe mulimea numerelor naturale. Algoritmul se bazeaz pe propoziia 6 din capitalul 3 i pe legtura care exist ntre matricile GD i GND . Algoritmul are forma urmtoare.

    Algoritmul 2. 1. Considerm 1i = , D A= i T A= . 2. Dac i n> se trece la pasul 6, altfel se continu. 3. Considerm 1i i= + i calculm T T A= i folosind operaiile uzuale de

    adunare i nmulire a numerelor ntregi.

  • 16

    4. Calculm D D T= + folosind operaia de adunare a numerelor ntregi. 5. Relum cu pasul 2. 6. Pentru fiecare 1,2,...,i n= i fiecare 1,2,...,j n= se execut pasul 8. 7. Algoritmul se oprete, D conine matricea drumurilor din G 8. Dac 0ijd , atunci face 1ijd = , altfel se continu.

    Algoritmul 1 este cunoscut sub numele de Algoritmul lui Wharshal pentru determinarea matricii drumurilor.

    6.2. Algoritmul Wharshal pentru drumuri minime n grafuri orientate

    De o mare aplicabilitate practic este o problem de drumuri relatic la

    grafurile ponderate. Fie ( ),G X U= un graf ponderat, deci un graf orientat n care U X M X , M fiind mulimea ponderilor. Pentru reprezentarea acestui graf se utilizeaz o matrice specific

    ( )1 ,ij i j n

    P p

    = de elemente

    ( )pentru , ,altfel

    ij i ij jij

    m x m x Up

    =

    +.

    Matricea poart numele de matricea ponderilor grafului G . n graful G se poate defini astfel noinuea de lungime a unui drum

    ( ) ( ) ( )( )2 3 11 1 2 2 2 3 1, , , , , ,..., , , ki i i i i i i i i i i ik k kd x m x x m x x m x ++= , notat prin ( )L d = , i dat prin relaia

    ( )1

    1

    k

    i ij jj

    L d m+

    =

    = .

    Pentru orice ,x y X , putem defini mulimea drumurilor de la x la y ca

    fiind mulimea ( ) ( ){ }0 1, , ,..., drum in kD x y d x x x x y d G= = = = . O problem important este de a determina n G drumurile minime ntre vrfuri. Pentru acest lucru vom defini matricea drumurilor minime, notat

    ( )min1 ,G ij i j n

    D d

    = , unde

    ( )( )

    ,minij

    d D x xi j

    d L d

    =

    . Folosind aceste notaii, pentru determinarea matricii minGD a drumurilor minine se poate face folosind Algoritmul Wharshal pentru drumuri minime, adic:

  • 17

    Algoritmul 3. 1. Considerm 1i = (prelucrm linia i ), D P= . 2. Dac i n> , atunci algoritmul se termin i minGD D= , altfel se continu. 3. Pentru fiecare 1,2,...,j n= se aplic pasul 5. 4. Facem 1i i= + (trecem la urmtoarea linie) i trecem la pasul 2. 5. Dac ijd = + , atunci se continu, altfel se nlocuiete liniei i cu

    minimul dintre liniei i i linia obinut din linia j prin adugarea valorii

    ijd la fiecare element.

    Teorema 2. Dac ( ),G X U= este un graf orientat ponderat cu P matricea ponderilor dat pe mulimea de ponderi M i X n= . Algoritmul 3

    producea matricea drumurilor minime din graful G i are complexitatea ( )3O n exprimat ca numr de comparaii.

    6.3. Algoritmul lui Dantzig pentru drumuri minime de extremitate iniial dat

    Acest algoritm determin toate drumurile de lungime minim care pornesc de la un vrf dat i ajung la toate celelalte vrfuri.

    Se consider un graf orientat ( ),G X U= avnd X n= . Fie ix X un vrf considerat iniial pentru toate drumurile pe dare dorim s le determinm. Fie

    ( )1 ,ij i j n

    P p

    = matricea ponderilor definit ca mai sus.

    Se consider urmtorul proces de calcul: Algoritmul 4.

    1. Considerm 1m = , { }m iX x= i ( ) 0ic x = . 2. Dac ( ) 0md X+ = , atunci ne oprim; altfel se continu. 3. Pentru orice arc ( ),j kx x U pentru care j mx X i k mx X se

    calculeaz valoarea ( )jk jk jd p c x= + 4. Calculm min jk

    x Xmjx Xmk

    d d

    = .

    5. Pentru fiecare k astfel nct jkd d= considerm ( )kc x d= i { }1m m kX X x+ = . Facem 1m m= + i trecem la pasul 2.

    n urma execuiei acestui proces, m este numrul de vrfuri atinse din vrful ix , mX este mulmea acestor noduri i pentru fiecare mx X valoarea

    ( )c x indic lungimea unui drum minim de extremitate iniial ix i extremitate

  • 18

    final x . Procesul se termin n cel mult 1n repetri ale pailor 2, 3, 4 i 5 deoarece la pasul 5 se adaug cel puin cte un vrf la mulimea mX .

    6.4. Algoritmul lui Bellman-Kalaba pentru drumuri minime de extremitate final dat

    Acest algoritm rezolv problema similar celei prezentate la algoritmul Dantzig, adic determin drumurile de lungime minim care au extremitatea final fixat.

    Fie ( ),G X U= un graf orientat ponderat cu { }1 2, ,..., nX x x x= . Putem presupune c dorin s determinm drumurile de extremitate final nx . Acest lucru

    nu restrnge generalitatea deoarece putem gsi un izomorfism f de grafuri orientate astfel nct dac dorim s determinm drummurile cu extremitatea final

    ix s avem ( )i nf x x= . Considerm c ( )

    1 ,ij i j nP p

    = este matricea ponderilor pentru graful G .

    Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificat a

    matrici ponderilor, matricea ( )1 ,ij i j n

    W w

    = , definit dup cum urmeaz

    ( )

    ( )

    pentru si , ,pentru

    0 pentru pentru 0

    pentru si , ,

    ij i ij j

    ij

    ij

    i ij j

    m i j x m x Up i j

    w i ji j

    i j x m x U

    = = = =

    .

    Algoritmul 5. Etapa 1

    Se construiete matricea estins a valorilor arcelor ( ), 1,ij i j n

    W w=

    = .

    Construim un tabel n care liniile sunt liniile matricii , notat ( )1i i nL L = , unde iL este linia i a tabelului La tabelul format se adaug linia 1nL + care este transpusa

    coloanei n din matricea W . Etapa 2

    Se adaug tabelului L , liniile suplimentare iL , 2, 3,...i n n= + + , astfel:

    a) presupunnd completat linia kL se completeaz linia 1kL + conform relaiei:

    { }( )1, , 1, ,1,...,min , mink j k j k t k tt nL L w L+ +== + . b) se continu aplicarea punctului (a) pn la obinerea a dou linii kL i 1kL +

    identice. Etapa 3

  • 19

    Se determin regresiv drumul minim de la ix la nx astfel:

    - se adun linia i din L cu linia 1kL + urmrindu-se rezultatul minim ce se

    poate obine. S presupunem c 1, 1,k i ij k iL w L+ += + , atunci primul arc din

    drumul minim de la ix la nx este arcul ( )ji xx , ; - se adaug linia j din L cu 1kL + reinnd valoare minim, aflat de

    exemplu pe coloana k , atunci al doilea arc va fi ( )kj xx , .a.m.d. Ultimul succesor determinat va fi nx .

    Propoziia 1. Pentru orice *k avem

    { }1, ,1,

    mink i ij k jj n

    L v L+=

    = +

    Propoziia 2. Dac exist *k pentru care , 1,k i k iL L += , pentru orice

    1 i n , atunci , ,k i s iL L= , pentru orice 1 i n i orice 1s k + ,

    Teorema 3. Fie ( ),G X U= un graf orientat ponderat cu X n= . Atunci algoritmul 5 are ca rezultat determinarea tuturor drumurilor minime de

    extremitate final nx i complexitatea algoritmului este ( )22O n exprimat ca numr maxim de comparaii.

    6.4. Algoritmii lui Ford i Dijkstra pentru drumuri minime

    de extremiti date Comparativ cu algoritmii prezentai mai sus urmtorul algoritm se folosete pentru cazul n care ambele extremiti ale drumului cutat sunt fixate.

    Fie ( ),G X U= un graf orientat i ix , jx dou vrfuri. Dorim s determinm un drum optim de la ix la jx . Datorit izomorfiesmelor de grafuri,

    putem considera c determinm un drum de la 1x la nx , fr a restrnge generalitatea procesului de determinare. Calculul se realizeaz n trei faze, una de iniializare, una de calcul efectiv i una de obinere a drumul minim dintre 1x i nx , dac exist drumuri ntre cele dou vrfuri.

    Considerm c ( )1 ,ij i j n

    P p

    = este matricea ponderilor pentru graful G .

    Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificat a

    matrici ponderilor, matricea ( )1 ,ij i j n

    W w

    = , definit dup cum urmeaz

  • 20

    ( )

    ( )

    pentru si , ,pentru

    0 pentru pentru 0

    pentru si , ,

    ij i ij j

    ij

    ij

    i ij j

    m i j x m x Up i j

    w i ji j

    i j x m x U

    = = = =

    .

    Algoritmul 6. Etapa 1

    Se construiete matricea estins a valorilor arcelor ( ), 1,ij i j n

    W w=

    = .

    Construim un vector ( )1i i nv v = pentru care considerm 1 0v = i iv = + pentru 2 i n . Etapa 2

    a) Cu 1,2,...,i n= , n aceast ordine se construiete vectorul ( )* *1i i n

    v v

    = pe

    baza formului:

    ( ){ }*

    ,

    min , min

    i

    i i j jij

    x x Uj

    v v v w

    = +

    .

    b) Se continu aplicarea punctului (a) ct timp exist un indice k pentru care *k kv v< , nlocuinduse vectorul v prin vectorul

    *v .

    Etapa 3

    - Dac nw = + , atunci nu exist drumuri ntre 1x i nx .

    - Se determin drumul de la 1x la nx plecndu-se de la nx , procednd dup

    cum urmeaz: dac presupunem c s-a determinat ( )1 1, ,...,k k k niix x x x = , partea de la kix la nx a drumului minim. Lum 1kix + vrful pentru care are loc

    relaia 1 1k k k ki ii i

    v w v+ ++ =

    Algoritmul prezentat este un algoritm care conine o serie de complicaii datorate faptului c s-a dorit s funcioneze pentru toate grafurile orientate. Pentru cazul n care se cunoate faptul v graful G nu conine circuite, acest algoritm poate fi simplificat pentru a se ajunge la urmtoarea form.

    Algoritmul 7.

    1. Se construiete matricea estins a valorilor arcelor ( ), 1,ij i j n

    W w=

    = .,

    facem 1 0v = (. ( )1i i nv v = fiind un vector de dimensiune n ) i considerm mulimile { }1A x= i { }1\B X x= .

    2. Dac nu exist jx A i ix B astfel nct ( ),j ix x U , atunci ne oprin, nu exist drumuri de la 1x la nx ; altfel se continu.

  • 21

    3. Considerm mulimea ( ){ }, ,C x B y A y x U= . Pentru orice ix C , facem { }mini j ji

    jx Aj

    v v w

    = + .

    4. Facem nlocuirile A A C= , \B B C= . 5. Dac nx A atunci se trece la pasul 2, altfel se continu.

    6. Se determin drumul de la 1x la nx plecndu-se de la nx , procednd dup

    cum urmeaz: dac presupunem c s-a determinat ( )1 1, ,...,k k k niix x x x = , partea de la kix la nx a drumului minim. Lum 1kix + vrful pentru care

    are loc relaia 1 1k k k ki ii i

    v w v+ ++ = .

    Se poate observa c n algoritmul simplificat al lui Ford, n pasurile 3 i 4 se determin un minim i apoi are loc o trecere a tuturor vrfurilor din C n A . Pe de al parte, o parte din arcele considerate la pasul 3 nu vor face parte din drumul minim de la 1x la nx . Acest lucru se va ntmpla doar pentru vrfurile n care se

    atinge minimul calculat la aplicarea relaiei { }mini j jij

    x Aj

    v v w

    = + . Aceast

    consideraie ne conduce la un algoritm nbuntit pentru determinarea drumurilor minime n grafuri fr circuite, cunoscut sub numele de algoritmul lui Dijkstra.

    Algoritmul 8.

    1. Se construiete matricea estins a valorilor arcelor ( ), 1,ij i j n

    W w=

    = .,

    facem 1 0v = (. ( )1i i nv v = fiind un vector de dimensiune n ) i considerm mulimile { }1A x= i { }1\B X x= .

    2. Dac nu exist jx A i ix B astfel nct ( ),j ix x U , atunci ne oprin, nu exist drumuri de la 1x la nx ; altfel se continu.

    3. Considerm mulimea ( ){ }, ,C x B y A y x U= . Pentru orice ix C , facem { }mini j ji

    jx Aj

    v v w

    = + .

    4. Pentru fiecare kx C pentru care exist jx A astfel nct

    { }mink jk j jkj

    x Aj

    v w v w

    + = + considerm { }kA A x= i { }\ kB B x= .

    5. Dac nx A atunci se trece la pasul 2, altfel se continu.

  • 22

    6. Se determin drumul de la 1x la nx plecndu-se de la nx , procednd dup

    cum urmeaz: dac presupunem c s-a determinat ( )1 1, ,...,k k k niix x x x = , partea de la kix la nx a drumului minim. Lum 1kix + vrful pentru care

    are loc relaia 1 1k k k ki ii i

    v w v+ ++ = .

    VII.ALGORITMI PENTRU GRAFURI HAMILTONIENE I EULERIENE

    7.1. Algoritmul lui Foulkes pentru drumuri hamiltoniene

    Pentru a uura cutarea drumurilor hamiltoniene ntr-un graf orientat conex

    ( ),G X U= , vom face o cutarea a drumurilor hamiltoniene n subcomponente tari conexe ale grafului G i apoi vom asambla subdrumurile prin utilizarea punilor prin care sint conectate componentele tari conexe.

    Considerm un graf orientat conex ( ),G X U= care are matricea de asiacen A . Din matricea de adiacen putem determina matricea drumurilor D , utiliznd modalitile prezentate n capitolele anterioare. Procesul se desfoar n 3 etape, una de formare a componentelor tari conexe din graful G , a doua n care se formeaz cte un drum hamiltonian n fiecare din componentele tari conexe i ultima etap de formare a unui drum hamiltonian n G pe baza subdrumurilor determinare n etapa a doua.

    Algoritmul 1. Etapa 1 1.a) Facem M I D= + i 1i = 1.b) n matricea M se consider toate liniile formate dour cu

    valoarea 1. Vrfurile corespunztoare acestor linii formez mulimea de vrfuri iC .

    1.c) Se elimin din matricea M liniile i coloanele considerate n formarea mulimii iC .

    1.d) Dac matricea M nu s-a epuizat se trece la pasul (1.b), altfel se continu trecnd la etapa a doua.

    Etapa 2

    Se construiete un grag ( ),G Y V = unde { }1 2, ,..., rY C C C= i ( ),i jC C V dac i numai dac exist ix C i exist jy C astfel nct ( ),x y U .Se formeaz astfel un drum hamiltonian n G , i anume drumul

    ( )1 2, ,..., rd C C C = .

  • 23

    Etapa 3

    3.a) Se consider 1 1x C i 2 2x C pentru care exist ( )1 2,x x U . Gsim n

    1C un drum hamiltonian 1d de extremitate iniial *1x i extremitate final 1x

    i n 2C un drum hamiltonian 2d de extremitate iniial 2x i extremitate

    final *2x . Se foremaz astfel drumul hamiltonian ( )( )*1 1 1 2 2, , ,d d x x d= n graful parial al lui G de vrfuri 1 2C C . Facem 3i = .

    3.b) Dac i r> ne oprin, s-a obinut drumul hamiltonian, altfel se continu. 3.c) Dac exist i ix C astfel nct ( )* 1,i ix x U atunci se trece la pasul (3.d),

    altfel se trece la pasul (3.e). 3.d) Se consider n iC un drum hamiltonian id de extremitate iniial ix i

    notm extremitatea sa final prin *ix . Am format astfel drumul hamiltonian

    ( )( )* * *1 1, , ,i i i i id d x x d = n graful parial al lui G de vrfuri 1 2 ... iC C C . Facem 1i i= + i mergem la pasul (3.b).

    3.e) Fie ie partea din drumul *1id care formeaz acest drum mpreun cu 1id .

    Fie 1 1i ix C i i ix C pentru care ( )1,i ix x U . mprim drumul 1id n 1id de extremitate final 1ix i drumul 1id de extremitate iniial 1ix i

    extremitate final * 1ix . Considerm un drum 1id care pleac din 1ix , trece *1ix i apoi prin toate celelante vrfuri care apar n drumul 1id astfel nct

    extremitatea final a lui 1id s fie 1ix . Se consider n iC un drum

    hamiltonian id de extremitate iniial ix i notm extremitatea sa final prin *ix . Considerm drumul ( )( )* 1 1 1, , , ,i i i i i id d d x x d = n graful parial al lui G de vrfuri 1 2 ... iC C C . Facem 1i i= + i mergem la pasul (3.b).

    7.2. Teorema lui Chen Fie ( ),G X U= un graf orientat i fr circuite cu { }1 2, ,..., nX x x x= . Considerm c A este matricea de adiacen a grafului i putem determina matricea D a drumurilor din G .

  • 24

    Pentru fiecare nod ix notm cu ip puterea de atingere a vrfului ix , adic

    numrul de vrfuri jx pentru care exist drum de extremitate iniial ix i

    extremitate final jx .

    Propoziia 1. Fie ( ),G X U= un graf orientat i fr circuite i ( ),i jx x U . Atunci i jp p , unde ip este gradul de atingere al vrfului ix . Corolar. Fie ( ),G X U= un graf orientat i fr circuite i care conine un drum de la ix la jx . Atunci i jp p , unde ip este gradul de atingere al

    vrfului ix . Urmtoarele rezultate, dintre care primul este cunoscut drept teorema lui Chen stau la baza algoritmului lui Chen,

    Teorema 1. Fie ( ),G X U= un graf orientat i fr circuite cu X n= . G conine un drum hamiltonian dac i numai dac are loc relaia

    ( )1

    1

    2

    n

    ii

    n np

    =

    =

    unde ip este gradul de atingere al vrfului ix . Teorema 2. ntr-un graf orientat fr circuite, drumul hamiltonian, dac exist este unic.. Rezultatele prezentate mai sus dau au proces imediat pentru determinarea drumului hamiltonian ntr-un graf orientat fr circuite. Prentru acesta vom proceda dup cum urmeaz:

    1. Scriem matricea de adiacen A . 2. Calculm, prin una din metodele descrise n capitolele anterioare, matricea

    drumurilor D . Dac n aceast matrice apare cel puin o valoare 1 pe diagonala principal ne oprim pentru c graful G conine un circuit i teorema lui Chen nu se poate aplica.

    3. Se determin puterile de atingere ale vrfurilor ( ) 1,2,...,i i np = i se verific

    valoarea de adevr pentru relaia ( )

    1

    1

    2

    n

    ii

    n np

    =

    = . Dac aceast relaie

    nu este verificat atunci graful G nu conine un drum hamiltonian. 4. Se ordoneaz puterile de atingere ale vrfurilor i dac este permutarea

    pentru care are loc relaia

    ( ) ( ) ( )1 21 ... 0nn p p p = > > > = ,

    atunci drumul

    ( ) ( ) ( )( )1 2, ,..., nh x x x = este drumul hamiltonian cutat.

  • 25

    7.3. Algoritmul lui nmulirii latine

    Algoritmul de determinare a matricii drumurilor are un caracter prea sintetic, n sensul c prezena unei valori de 1 n matricea drumurilor nu d informaii asupra vrfurilor din care se compun drumurile corespunztoare, bineneles c nici asupra numrului de drumuri ntre vrfurile care corespund acelor valori de 1.

    Ca un exemplu de algoritm capabil s rspund acestor deziderate, prezentm algoritmul datorat lui Kaufmann, numit aloritmul nmulirii latine.

    Introducem ca punct de plecare, o matrice ( )1M , care n locul valorilor de 1 utilizate n matricea obinuit a arcelor, utilizeaz nsui arcul respectiv, reprezentat prin vrfurile care l compun. ( ) ( )( )

    njiijmM

    ,1,

    11

    == , unde

    dac exist arc de la ix la jx ( )

    =0

    1 ji

    ij

    xxm

    n rest

    Prin suprimarea primei litere n matricea ( )1M se obine o matrice ( )1~M

    numit a destinaiilor posibile. Se compun matricele ( )1M i ( )1~M prin operaia

    de nmulire latin. ( ) ( )1 1M LM . nmulirea latin a matricilor se face formal ca i nmulirea a dou matrici,

    fr nsumare i fr nmulire efectiv innd cont c: - produsul latin a dou componente participante la calcul este nul dac cel puin

    una din ele este nul. - produsul latin a dou componente participante este nul dac au vrf comun. - rezultatul compunerii const n scrierea n continuare a vrfurilor componente

    ale simbolurilor participante.

    Prin definiia produsului latin avem ( ) ( ) ( )2 1 1M M LM= , ( ) ( ) ( )3 2 1M M LM= , Algoritmul continu pn la obinerea matricii ( )1nM ,

    deoarece ntr-un graf cu n vrfuri un drum hamiltonian are 1n arce. n matricea ( )1nM citim, conform modului de scriere de mai sus toate

    drumurile hamiltoniene ale grafului.

    Dac toate elementele lui ( )1nM sunt zerouri ( ( ) 0=1nM ), graful nu admite drum hamiltonian.

    Observaie. Procedeul este aplicabil pentru orice tip de graf orientat (cu sau fr circuit), dar pentru grafurile fr circuite se recomand algoritmul lui Chen, ntruct pentru grafuri de dimensiuni mari, algoritmul nmulirii latine este greoi (dar sigur).

  • 26

    7.4. Algoritmul lui Fleury pentru drumuri euleriene Fie ( ),G X U= un graf conex n care X n= i U m= . Dorim ca n graful G s determinm un ciclu eulerian. Pentru acest lucru, o soluie este de a pleca de la un lan simplu C (iniial format dintr-o muchie a grafului) i la care s adugm muchii nct s pstrm lanul simplu i n garful care se formeaz s nu apar muchii izolate. Dac nu exist i alte opiuni, atunci se utilizeaz i muchiile izolate. Algoritmul care se bazeaz pe principiul enunat mai sus este cunoscut drept algoritmul lui Fleury. Pentru a putea prezenta acest algoritm este necesar s considerm un mod special de specificare a lanurilor. Pn acum am fcut acest lucru fie sub forma

    { }0 1, ,..., rL x x x= , unde ix X (reprezentarea prin noduri), fie prin { }1 2, ,..., sL u u u= , unde iu U avnd condiia ca pentru orice 1,2,..., 1i s=

    muchiile iu i 1iu + au o extremitate comun. (reprezentarea prin muchii).. Reprezentarea util a lanurilor este o reprezentare combinat n sensul c sunt prezente att nodurile ct i muchiile implicate n formarea lanului sub forma

    { }0 1 1 2 1, , , ,..., , ,r r rL x u x u x u x= , unde pentru orice 1,2,...,i r= avem { }1,i i iu x x= .

    Prezentm n comtinuare algoritmul lui Fleury: Algoritmul 2.

    6. Se alege un vrf 0x X i considerm { }0 0C x= i 0i = . 7. Pentru ix alegem o muchie ( )1 1,i i iu x x+ += care nu apare n iC i care

    nu este izolat n graful parial al lui G obinut prin eliminarea muchiiler care formeaz iC (sau o muchie izolat din graful parial menionat, dac nu avem alt variant).. Definim lanul

    { } { }1 1 1 0 1 1 2 1 1, , , , , ,..., , ,i i i i i i iC C u x x u x u x u x+ + + + += = i facem 1i i= + . 8. Dac i m= ne oprim, mC este ciclul eulerian, altfel se trece la pasul (2)..

    Teorema 3. Dac ( ),G X U= este un graf eulerian, atunci orice ciclu obinut prin aplicarea algoritmului 2 este un ciclu eulerian.

    7.5. Algoritmul lui Hierholzer pentru drumuri euleriene O alt idee pentru determinarea unui ciclu eulerian este s determinm ciclurile formate cu muchii distincte i care s aib cte un nod comun i unirea acestor cicluri n ciclul eulerian cutat. Existena ciclurilor cu un nod comun este garantat de faptul c graful considerat este conex.

  • 27

    Ideea de mai sus a fost utilizat de Hierholzer pentru realizarea argoritmului de mai jos, cunoscut drept algoritmul lui Hierholzer.

    Fie graful ( ),G X U= . Algoritmul 3.

    1. Se alege un vrf 0x X i plecnd de la 0x , prin traversarea fiecrei

    muchii neconsiderate formm un ciclu { }0 0 00 1 2 0, ,..., rC u u u= i 0i = . 2. Dac graful parial format cu muchiile cuprinse n ciclul iC coincide cu

    G atunci ne oprim, iC reprezint ciclul eulerian cutat, altfel se continu.

    3. Fie nodul ix , extremitate a muchiei iku din ciclul iC i al unei muchii

    *iu

    care nu este n iC . Pornind de la nodul ix , n graful parial al lui G cu

    mulimea de muchii format de muchiile nefolosite la formarea lui iC ,

    formm un ciclu ca la pasul (1), notat *iC .

    4. Formm ciclul { }1 1 11 1 2 1, ,...,i i ii riC u u u+ + ++ += pornin din ix , parcurgnd integral iC pn ajungen din nou la ix i apoi parcurgnd integral

    *iC

    pn se ajunge la ix

    5. Facem 1i i= + i trecem la pasul (2).

    VIII.FLUX MAXIM N REELE DE TRANSPORT

    8.1. Consideraii generale

    Definiie. Un graf orientat ponderatt ( ), ,G X U p= fr circuite, se numete reea de transport dac ndeplinete urmtoarele condiii:

    1. Dac { }nxxxX ,...,, 21= , atunci oricare ar fi 1 i n avem ( ),i ix x U . 2. Exist un vrf unic Xx 1 n care nu intr nici un arc, numit sursa reelei. 3. Exist un unic vrf nx din care nu iese nici un arc, numit destinaia reelei.

    4. G este conex i exist drumuri de la 1x la nx .

    5. S-a definit o funcie :c U astfel nct ( ) 0uc pentru orice arc u U ; numrul ( )uc se numete capacitatea reelei.

    Definiie. Fie ( ), ,G X U p= o reea de transport. Fiind dat o submulime XY , se numete tietur de suport Y mulimea de arce

    ( ) ( ){ }, ,i j i jY x x U x Y x Y U =

  • 28

    ( ) ( ){ }, ,i j i jY x x U x Y x Y U+ = . Cantitatea ( )( )

    ( ) ( )

    =YjxixijpYc

    ,

    este capacitatea tieturii ( )Y .

    Definiie. Fie ( ), ,G X U p= o reea de transport. O funcie :U + se numete flux pe reeaua de transport ( ), ,G X U p= dac ndeplinete urmtoarele condiii:

    1. Condiia de mrginire a fluxului:

    pentru orice ( ),i jx x U , avem ( ) ijpxx ji ,0 . 2. Condiia de conservare

    Pentru orice ix X , avem ( )( )

    ( )

    =

    =

    =n

    hxjx

    hhj

    n

    jxkx

    kjk xxxx

    ,

    1

    ,

    1

    ,, .

    Observaii. 1. Condiia 2) afirm c pentru orice vrf x cu 1xx i nxx , suma

    fluxurilor de pe arcele care intr n x este egal cu suma fluxurilor pe arcele care ies din x .

    2. Funcia nu este unic.

    Definiie. Fie ( ), ,G X U p= o reea de transport. Un arc ( ),i jx x U se numete arc saturat, dac n raport cu are loc relaia ( ) ijji pxx = , .

    Se pune problema determinrii funciei astfel nct suma fluxurilor pe

    arcele ce intr n nx s fie maxim, aa-numita problem a fluxului maxim.

    Adic, dintre toate fluxurile :U + posibile n reeaua de transport

    ( ), ,G X U p= se urmrete s se determine fluxul pentru care

    ( )

    ( )

    ( )

    ( )1 1

    , ,

    , ,n n

    h n h nh h

    x x U x x Un nh h

    x x x x = =

    .

    Propoziia 1. Fie ( ), ,G X U p= o reea de transport avnd sursa 1x , destinaia nx i :U

    + un flux oarecare n reeaua G , atunci:

    ( )( )

    ( )( )

    11 1

    , ,1

    , ,n n

    i j ni j

    x x U x x Ui j n

    x x x x = =

    =

    Definiie. Fie ( ), ,G X U p= o reea de transport avnd sursa 1x , destinaia nx i :U

    + un flux oarecare n reeaua G . Valoarea

  • 29

    ( )( ) ( )

    ( )( ) ( )

    1,, 1

    , ,j n ix x xx x xn n ij i

    x x x x

    +

    = =

    se numete valoarea total a fluxului : + .

    Propoziia 2. Fie ( ), ,G X U p= o reea de transport i fie XY o submulime cu proprietile: - pentru sursa 1x a lui G avem 1x Y ;

    - pentru destinaia nx a lui G avem Yxn .

    Atunci pentru orice flux :U + avem ( )

    ( ) ( )( )

    ( ) ( )( )( )Ycxxxx

    Yjxixji

    Yjxixji

    =

    +

    = ,,

    ,, .

    8.2. Algoritmul Ford-Fulkerson

    n continuare vom considera c toate capacitile sunt numere raionale sau ntruct numrul total de arce este finit, chiar numere naturale.

    Pe baze consideraiilor precedente se deduce urmtorul algoritm cunoscut sub numele de algoritmul Ford-Fulkerson pentru determinarea fluxului maxim ntr-o reea de transport. Algoritm Pasul I

    Se construiete un flux iniial 0 , care verific condiiile de conservare n fiecare vrf i de mrginire pe fiecare arc, de exemplu chiar fluxul avnd

    componente nule pe fiecare arc al reelei, ( )0 , 0i jx x = , oricare ar fi ( ),i jx x U . Pasul II

    Folosind operaiile de marcare ce vor fi prezentate mai jos, se cerceteaz dac fluxul iniial 0 este maxim; operaiunile de marcare constau n urmtoarele: a) se marcheaz sursa reelei 1x cu semnul + ;

    b) vrfurile ( )1xx j + vor fi marcate cu 1x+ dac arcul ( )jxx ,1 este nesaturat;

    c) dac vrful jx este deja marcat i dac pentru un vrf ( )jk xx + arcul ( )kj xx , este nesaturat, atunci marcm vrful kx prin jx+ ;

    d) dac vrful jx este deja marcat i dac pentru un vrf ( )jk xx arcul ( )jk xx are fluxul nenul, marcm vrful kx prin jx .;

  • 30

    n urma terminrii operaiei de marcare, putem ntlni urmtoarele situaii: 1. Dac destinaia nx a reelei nu s-a marcat, atunci fluxul este maxim i

    algoritmul se termin, altfel se aplic procesul (2) i se reia pasul II. 2. Dac destinaia nx s-a putut marca, atunci fluxul nu este maxim i poate fi

    msurat astfel: a) se alege un drum de la 1x la nx ;

    b) pe arcele drumului marcat cu + fluxul se majoreaz cu o cantitate de flux (de exemplu 1= );

    c) pe arcele drumului marcat cu - fluxul se micoreaz cu aceeai cantitate ;

    d) fluxul arcelor nemarcate nu se schimb; Algoritmul are un numr finit de pai, iar fluxul maxim se atinge cnd nu mai

    poate fi marcat destinaia nx a reelei. Observaie. Mrimea fluxului se poate face cu mai mult dect o unitate,

    evitndu-se astfel prea multe operaii de marcare, astfel: se consider un drum V format din drumuri marcate cu + sau - ce unete 1x cu nx , uor de gsit

    urmrind vrfurile marcate n sensul de la nx ctre 1x . Notm +V mulimea

    arcelor ( )yx, unde y este marcat cu + i V mulimea arcelor ( )yx, unde y este marcat cu -. Calculm

    ( ) ( ){ }uucVu

    =+

    min1

    ( )uVu=

    min2

    i { }21 ,min = . Observm c 0> i este numr ntreg. Mrim cu pe fiecare arc +Vu i micorm cu pe fiecare arc Vu ,

    obinnd la ieire un flux mrit cu . Se repet etapa a doua cu fluxul obinut. Valoarea fluxului maxim se gsete

    realiznd o tietur prin separarea cu o linie a vrfurilor marcate de cele nemarcate i capacitatea acestei tieturi reprezint fluxul maxim, sau adunnd fluxurile arcelor incidente interior lui nx .

    BIBLIOGRAFIE Obligatorie

    1. I. Tomescu, Combinatoric i teoria grafurilor, Editura Universitii.

    Bucureti, 1990 2. I. Tomescu, Probleme de combinatoric i teoria grafurilor, Editura

    Didactic i Pedagogic, Bucureti, 1981. Ediia englez: Problems in Combinatorics and Graph Theory, John Wiley, New York , 1985.

  • 31

    BIBLIOGRAFIE Opiomal

    1. Bang-Jensen, G. Gutin, Digraphs Theory, Algorithms and Applications,

    Springer-Verlag, 2007 2. M. Behzad, G. Chartrand, L. Lesniak-Foster, Graphs & Digraphs, Prindle,

    Weber & Schmidt, Boston, Massachusetts, 1979. 3. B. Bollobas, Graph Theory. An Introductory Course, Springer-Verlag,

    New York, Heidelberg, Berlin, 1979. 4. C. Berge, Teoria grafurilor i aplicaii, Editura Tehnica, Bucuresi, 1971