Anda di halaman 1dari 15

Grafuri neorientate

Definitie : Se numeste graf neorientat o pereche de multimi G = (A,B) in care A este multimea nodurilor (este finita si nevida) si B este multimea relatiilor/muchiilor. B = { (x,y) / x apartine lui A, y apartine lui A } Definitie : O muchie a apartine de B este deci o submultime cu elemente {x,y} de varfuri distincte din A si o vom nota (x,y)-notatie muchie.Vom spune ca varfurile x si y sunt adiacente in G si ca ambele sunt incidente cu muchia (x,y). Varfurile x si y se mai numesc si extremitatile muchiei(x,y). Daca B1 si B2 sunt 2 muchii care au o extremitate comuna,ele vor fi numite deasemenea incidente. A = {1,2,3,4,5} B = {(1,2),(1,3),(2,3),(2,5)} Exemplu: -1 este adiacent cu 2 si 3 -1 si 2 sunt extremitatile (1,2) - nodul 1 este incident cu (1,2) - (5,2) si (2,3) sunt incidente Gradul unui nod la grafurile neorientate Gradul unui nod x , notat cu d(x),reprezinta numarul muchiilor care trec prin nodul x (incidente cu nodul x). Exemplu: - d(1)=2 Nodul care are gradul 1 se numeste nod terminal. Nodul care are gradul 0 se numeste nod izolat. Proprietati: 1. d + (x) + d - (x) = d(x) 2. Daca un graf are m muchii sau arce atunci: d( x 1 )+d(x 2 ) + ... + d(x n ) = 2m Lanturi Se numeste lant o succesiune de noduri x 1 ... x k , cu proprietatea ca oricare doua noduri vecine (x i ,x i+1 ) apartin de B. x 1 , x k sunt extremitatile lantului Lungimea lantului este egala cu numarul de muchii care il compun, k-1. Daca nodurile din lant sunt distincte, atunci lantul este elementar, in caz contrar este neelementar.

Exemplu:

1,2,3,1,4 - Lant neelementar (lungime 4) 1,2,3,4 - Lant elementar (lungime 3) 1,2,3,1,2,5 - Lant neelementar (lungime 5) 1,2,3,5 - Nu este lant

Cicluri Se numeste ciclu intr-un graf neorientat un lant x1 , x2 ... x k cu proprietea ca x1 =xk si oricare 2 mchii (x i ,x i+1 ) sunt distincte. Daca un ciclu are toate nodurile distincte 2 cate 2 cu exceptia capetelor, atunci el se numeste ciclu elementar, in caz contrar neelementar. Exemplu:

1,2,3,4,1 - Ciclu elementar 2,3,4,1,2 - Ciclu elementar 1,2,3,4,2,3,1 - Nu este ciclu 1,2,3,4,2,5,1 - Ciclu neelementar

Grafuri orientate

Definitie : S e numeste graf orientat o multime ordonata (A,B) in care A este multimea nodurilor (finita si nevida), iar B este multimea arcelor. Definitie : Pt muchia (x,y) nodul x reprezinta extremitatea initiala,iar y extremitatea finala a muchiei.De remarcat faptul ca la grafurile orientate muchia(x,y) este diferita de muchia(y,x). Raman valabile notiunile de varfuri adiacente si varfuri incidente cu o muchie prezentate la grafuri neorientate. Gradul unui nod la grafurile orientate Gradul exterior al unui varf x notat cu d + (x), reprezinta numarul arcelor care ies din nodul x,adica nr arcelor de forma (x,y)apartine de B. Gradul interior al unui varf x notat cu d - (x), reprezinta numarul arcelor care intra in nodul x,adica nr arcelor de forma (x,y)apartine de B. A = {1,2,3,4,5} B = {(1,2),(2,1),(2,3),(3,1),(5,2)} Exemplu: - d(1)=3 - d + (1)=1 - d - (1)=2 Proprietati: 1. d + (x 1 ) + d + (x 2 ) + ... + d + (x n ) = m 2.d - (x 1 ) + d - (x 2 ) + ... + d - (x n ) = m

Drumuri Se numeste lant o succesiune de arce u 1 , u 2 ... u k , cu proprietatea ca oricare doua arce de pe pozitii consecutive au un nod comun. Observatie: nu conteaza ordinea de parcurgere Se numeste drum o succesiune de noduri x 1 , x 2 ... x k cu proprietatea ca (x i ,x i+1 ) este arc. Observatie: conteaza ordinea de parcurgere Daca nodurile sunt distincte, drumul se numeste elementar,in caz contrar este neelementar. Exemplu: Lanturi (1,2),(2,3),(3,4) - Da (1,2),(5,2),(2,3) Da (1,2),(2,1),(1,3) Nu (1,2),(2,3),(1,5),(5,2) - Nu Drumuri 1,2,3,1,2 - Drum neelementar 1,2,3,4 - Drum elementar 3,1,2,5 - Nu este drum

3.Circuite Se numeste circuit intr-un graf un drum x 1 ,x 2 ... x k cu prop ca x 1 = x k si arcele (x i ,x i+1 ) sa fie distincte doua cate doua. Un circuit in care toate nodurile sunt distincte cu exceptia capetelor se numeste circuit elementar. Exemplu:

1,2,3,1 - Circuit elementar 2,3,1,2 - Circuit elementar 1,2,3,1,2,1 - Nu este circuit

Reprezentarea grafurilor

1. Reprezentarea prin matrice de adiacenta A. Pentru grafuri neorientate a[i,j] = 1, daca intre i si j este muchie a[i,j] = 0 altfel 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 0

Observatie: Pe diagonala principala toate elementele sunt 0 (nu avem bucle). Matricea este simetrica fata de diagonala principala, deci: a[i,j] = a[j,i]. B. Pentru grafuri orientate a[i,j] = 1, daca exista arcul (i,j); a[i,j] = 0, altfel. 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0

Liste de adiacenta Pentru fiecare nod se memoreaza o lista a vecinilor sai. Pentru intregul graf este necesar un vector de liste (P) in care P i este adresa primului element al listei asociate lui i.

Nod 1 2 3 4 5

Lista de adiacenta asociata 2,3,5 1,3 1,2 1

De exemplu, pentru i = 1, informatia din lista figurata mai sus se va completa astfel:p[1] 2 3 5.

Nod 1 2 3 4 5 2,3 1,3 2 1

Lista de adiacenta asociata

Observatie: pentru grafurile orientate se memoreaza in lista lui i nodurile k pentru care exista arcul (i,k)

Fiecare arc al grafului poate fi privit ca o inregistrare cu 2 campuri care defapt sunt cele 2 noduri, care constituie extremitatile arcului.

Putem defini tipul typdef struct {int st,dr;} TARC;

Matrice arce-noduri Este o matrice b de dimensiune linii si m coloane in care elem b[i][j]= 1,daca iextremitatea initiala a arcului -1,daca i-extremitatea finala a arcului 0,daca nodul i-nu este nici o extremitate pt arcul cu nr j Este folosita in special pentru grafurile orientate.

Matricea noduri-arce Observatie: matricea noduri-arce poate fi adaptata si pentru grafurile neorientate.

Parcurgerea grafurilor
Parcurgerea unui graf presupune vizitarea (prelucrarea) nodurilor grafului, o o sigura data fiecare,intr-o anumita ordine. Nodurile vizitate sunt legate intre ele direct sau indirect. In functie de ordinea relativa a nodurilor exista 2 metode de parcurgere: 1. Metoda parcurgerii pe latime - Breadth First (BF) 2. Metoda parcurgerii in adancime - Depth First (DF) Metoda parcurgerii pe latime - Breadth First (BF) A. Pentru grafuri neorientate

Se porneste de la un nod oarecare x. Se viziteaza toti vecinii directi ai nodul au fost deja vizitati. Fiecare dintre nodurile vizitate la pasu devine nod curent si este prelucrat la f x=1 1, 2, 3, 4, 6, 7, 8, 9, 5

B. Pentru grafuri orientate Observatie: algoritmul se adapteaza astfel incat sa poata fi luati in considerare toti vecinii unui nod.

Metoda parcurgerii in adancime - Depth First (DF) A. Pentru grafuri neorientate


Se porneste de la un nod oarecare x. Se alege primul vecin al lui x care nu a fost inca vizitat,de ex y,dupa care se trece la primul vecin nevizitat al lui y si asa mai departe pana cand se parcurge in adancime ramura respectiva. Cand s-a ajuns la capatul ei, se revine la nodul din care s-a plecat ultima data si se parcurge urmatorii sai vecini nevizitati.

B.Pentru grafuri orientate Parcurgerea este similara, punandu-se conditia de parcurgere a tuturor vecinilor unui nod indiferent de sens.

Tipuri de grafuri

1.Graf partial Fie G=(A,B) si G 1 =(A 1 ,B 1 ). Spunem ca G 1 este un graf partial al lui G daca A=A 1 si B 1 este inclus sau egal cu B. Un graf partial se obtine dintr-un graf, indepartand o parte dintre muchiile sale si pastrand toate nodurile acestuia.

2.Subgraful unui graf Fie G=(A,B) si G 1 =(A 1 ,B 1 ); A 1 inclus sau egal cu A; B 1 inclus sau egal cu B. B 1 = {(x,y) / oricare x,y apartine A 1 daca (x,y) apartine de B => (x,y) apartine de de B1} Subgraful se obtine din graful initial selectand o parte din nodurile sale si o parte din nodurile adiacente cu acesta.

3. Graf complet Un graf este complet daca oricare doua varfuri distince sunt adiacente. Proprieti: 1. Un graf neorientat cu n noduri are n(n-1)/2 muchii. 2. Exista un singur graf complet neorientat cu n noduri. 3. Exista mai multe grafuri orientate complete cu n noduri.

4.Grafuri bipartite Fie G=(A,B) neorientat. G este bipartit daca exista doua multimi, A 1 si A 2 astfel incat A 1 n A 2 = si A 1 U A 2 = A, iar oricare uchie (x,y) apartinand lui B are un capat in multimea A 1 si celalalt in A 2 . Un graf bipartit este bipartit complet daca fiecare nod din multimea A 1 este adiacent cu toate nodurile din A 2 si reciproc.

5.Grafuri conexe Un graf este conex daca este format dintr-un singur nod sau daca intre oricare doua noduri ale sale exista cel putin un lant. Aplicand algoritmul de parcurgere in latime a unui graf putem stabili daca un graf este conex sau nu astfel:daca in urma parcurgerii vor fi vizitate toate nodurile grafului atunci graful este conex, in caz contrar nu este conex. A. Pentru grafuri neorientate

B. Pentru grafuri orienate

Se numeste componenta conexa a unui graf G un subgraf conex al grafului si care este maximal in raport cu aceasta proprietate (daca i se adauga un nod isi pierde aceasta proprietate). Observatie: pentru grafurile orientate nu se tine cont de orientarea arcelor. Daca numarul componentelor conexe dintr-un graf este mai mare decat 1, atunci graful nu este conex.U graf conex are o sigura componenta conexa care cuprinde nodurile sale. Un graf fara ciclu se numeste aciclic. Teorema :Un graf neorientat conex cu n noduri si n-1 muchii este aciclic maximal cu aceasta proprietate. Daca se adauga o noua muchie graful nu mai este aciclic.

Proprietati: 1. Daca un graf cu n noduri are p comp conexe,atunci numarul minim de muchii care trebuie adaugat ca sa devina conex este p-1. 2. Daca un graf conex cu n noduri are n-1 muchii, atunci orice pereche de noduri este legata printr-un lant si numai unul. 3. Daca un graf neorientatat cu n noduri si m muchii este conex, numarul maxim de muchii care se pot elimina pentru a obtine un graf partial conex este: mn+1. 4. Daca un graf are n noduri,m muchii si p componente conex, numarul de muchii care trebuie eliminate pentru a obtine un graf partial aciclic este egal cu m-n+p. Teorema: Un graf care nu contine noduri izolate este eulerian daca si numai daca este conex si gradul tuturor nodurilor sunt numere pare. 6.Grafuri tare conexe Un graf este tare conex daca ar un singur nod sau daca oricare ar fi (x,y) exista drum de la x la y si exista drum de la y la x. Determinarea componentelor tare conexe: Se poate realiza prin 2 metode:

Utilizand metoda DF/BF Utilizand matricea drumurilor

O componenta tare conexa este un subgraf conex al grafului si care este maximal in raport cu aceasta proprietate. Observatie: reunind toate arcele din componentele tare conexe se poate obtine o multime mai mica decat multimea arcelor grafului initial. Se poate construi un graf al componentelor tare conexe in care fiecare componenta tare conexa formeaza un nod iar arcele simuleaza legaturile dintre ele.

Determinarea componentelor tare conexe utilizand matricea drumurilor d(i,j) = 1, daca exista drum de la i la j d(i,j) = 0, altfel G31:

1 1 1 1 1

1 1 1 1 1

0 0 1 0 1

1 1 1 1 1

0 0 1 0 1

Componentele tare conexe se determina cu ajutorul algoritmului lui Roy- Warshall. 7.Graful Hamiltonian 1. Lant hamiltonian: lant elementar care contine toate nodurile grafului. 2. Ciclu hamiltonian: ciclu elementar care contine toate nodurile grafului. 3. Graf hamiltonian: graf care contine un ciclu hamiltonian.

Conditii de suficienta: Teorema lui Dirac: Fie G dat prin perechea (A,B). Daca G are un numar de cel putin 3 varfuri astfel incat gradul fiecarui nod respecta conditia d(x)=n/2, atunci graful este hamiltonian. Un graf hamiltonian nu poate avea noduri izolate.

8.Grafuri euleriene 1. Ciclu eulerian: ciclu care trece prin toate muchiile unui graf exact o data. 2. Graf eulerian: graf care contine cel putin un ciclu eulerian G33:G34:G35: 3. Teorema : Fie un graf conex fara noduri izolate cu n= 3 noduri.Graful este eulerian daca si numai daca p entru oricare nod al sau, x, d(x) este par.

Determinarea unui ciclu eulerian


Se porneste de la un nod oarecare si se construieste un ciclu. Se parcurg nodurile din ciclul determinat anterior; daca exista un nod care mai are muchii neincluse in ciclul anterior se onstruieste un nou ciclu provenind de le acest nod. Ciclul construit este inclus in ciclul initial in locul nodului gasit la pasul anterior.

pas 1: c1: 1,2,3,1 c2: 2,4,7,2 pas 2: c1: 1,2,4,7,2,3,1 c2: 7,5,10,7 pas 3: c1: 1,2,4,7,5,10,7,2,3,1 c2: 7,8,11,7 pas 4: c1: 1,2,4,7,8,11,7,5,10,7,2,3,1 c2: 7,6,9,7 pas 5: c1: 1,2,4,7,6,9,7,8,11,7,5,10,7,2,3,1

Anda mungkin juga menyukai