Sunteți pe pagina 1din 7

GRAFUL Dedinitie: Se numeste graf (G) o pereche ordonata de multimi (X,U), unde X este o multime finita si nevida, iar

U o multime de perechi formata cu elemente distincte din multimea X(famile de submultimi cu doua elemente din multimea X). Emenentele multimii X se numesc varfuri sau noduri. Multimea X se mai numeste varfurile sau multimea nodurilor grafului G, avand forma X={x , x!, x", #, xi, #, xn$. Graful G are n noduri si xi re%re&inta nodul ' al grafului. (rdinul grafului re%re&inta numarul de noduri ale grafului n, card)X*=n. Elementele multimii U sunt %erc+i de noduri, adica su,multimi cu doua elemente din multimea X, notate cu u-. Elementul u- este definit de %erec+ea de forma de forma {xi, x.$, unde xi, x.X si distincte. U={ u , u!, u", #, u-, #, um$ Multimea U are proprietatea de simetrie daca si numai daca pentru orice pereche de noduri (xi,xj), daca xi, xj!U, atunci si xj, xi!U. /lasificarea grafurilor din %unct de vedere al %ro%rietatii de simetrie Grafuri neorientate0 G=)X,U* este un graf neorientat daca multimea U este formata din %erc+i neordonate {xi, x.$. Grafuri orientate0 G=)X, U* este un graf orientat daca multimea U este formata din %erc+i ordonate {x., xi$. GRAFUL NEORIENTAT Elementele multimii U)%erec+ile de noduri* se numesc muc+ii. Muc+ia u- a grafului, determinata de su,multimea {xi, x.$,se notea&a 1xi,x.2. (,s0 1xi,x.2, 1x.,xi2 re%re&inta aceeasi muc+ie a grafului. /ard)U*=numarul de muc+ii=m. Definitii: 3umim noduri adiacente orice %erec+e de noduri care formea&a o muc+ie4{xi, x.$U. Fiecare dintre cele doua noduri xi, x. este nod incident cu muc+ia u-=1xi,x.2. 3odurile vecine unui nod xi sunt toate nodurile x. care sunt adiacente cu el. 5e numeste nod extrem ale unei muc+ii oricare dintre cele doua noduri care se gasesc la ca%atul mic+iei. 3odurile xi, x. sunt extremitatile muc+iei 1xi,x.2. 5e numesc muc+ii incidente doua muc+ii ui, u. care au o extremitate comuna. 6utem s%une ca un graf neorientat se defineste %rin multimea nodurilor sale X si multimea muc+iilor sale U. Ex 4manual, %agina !"7 Teorema1: 8aca graful neorientat G are n noduri )x , x!, x", #, xi, #, xn*, atunci numarul total de grafuri neorientate care se %ot forma cu aceste noduri este g0

Gradul unui nod al grafului neorientat 3odul unui graf este caracteri&at %rin grad. Gradul nodului x- al grafului G este egal cu numarul muc+iilor incidente cu nodul si se notea&a cu d)x-*.

Definitii: 3umim nod terminal, nodul care are gradul egal cu , d)x-*= )acest nod este incident cu o singura muc+ie*. 3umim nod i"olat, un nod care are gradul egal cu 9, d)x-*=9)nu este adiacent cu un alt nod al grafului, adica nu se gaseste in extremitatea nici unei muc+ii. 'ntr4un graf cu n noduri, oricare ar fi nodul x-,

9: d)x-*:n4

Teorema2: 8aca graful G are m muc+ii)u , u!, #, um* si n noduri )x , x!, #, xn*, atunci intre gradul nodurilor si numarul de muc+ii exista urmatoarea relatie0 suma gradelor tuturor nodurilor grafului este egala cu du,lul numarului de muc+ii0

6ro%o&itie 0 6entru orice graf G, numarul nodurilor de grad im%ar este %ar. 6ro%o&itie!0 3umarul minim de muc+ii %e care tre,uie sa le ai,a un graf neorientat, cu n noduri, ca sa nu existe noduri i&olate este0 mmin=1)n; *<!2 Teorema3: 8aca graful G are n noduri atunci cel %utin doua au acelasi grad. GRAFUL ORIENTAT 'n ca&ul acestui graf, %erec+ile de noduri sunt ordonate. Elementele multimii )%erec+ile de noduri* se numesc arce. Arcul - al grafului u-, ce uneste nodurile xi cu x., este determinat de su,multimea {xi, x.$ si se noteaza 1xi,x.2. 5e numesc noduri adiacente in graful G oricare din %erec+ile de noduri care formea&a un arc0 )xi, x.*U sau )x., xi*U. Fiecare din cele doua noduri este incident cu arcul u-=1xi, x.2 sau u-=1x., xi2. Exem%lu manual, %agina !=" Teorema4: 8aca graful orientat G are n noduri )x , x!, x", #, xi, #, xn*, atunci numarul total de grafuri care se %ot forma cu aceste noduri este g0

g==n)n4
Gradele unui nod al grafului orientat

*<!

3odulunui graf este caracteri&at %rin gradul intern si gradul extern. Gradul intern al unui nod xi al grafului G este egal cu numarul arcelor care intra in nodul xi, notat d4)x*. Gradul extern al unui nod xi al grafului G este egal cu numarul arcelor care ies din nodul xi, notat d;)x*. 3odul terminal este nodul care are suma gradelor si este incident cu un singur arc.

3odul i&olat este nodul care are suma gradelor 9, nefiind adiacent cu nici un alt nod. 5e numeste successor al nodului xi orice nod la care a.unge un arc care iese din nodul xi.

5)x*=multimea succesorilor nodului xi, formata din multimea nodurilor la care a.ung arcele care ies din nodul xi. 5)x*={x.X/)xi, x.*U$ 5e numeste %redecesor al nodului xi orice nod de la care intra un arc in nodul xi. 6)x*=multimea %redeccesorilor nodului xi, formata din multimea nodurilor la care a.ung arcele care intra in nodul xi. 6)x*={x.X/)x., xi*U$ >eorema?0 8aca graful orientat G are m arce )u , u!, #, um* si n noduri )x , x!, x", #, xn*, atunci intre gradele nodurilor si numarul de muc+ii are loc relatia0 suma gradelor interne ale tuturor nodurilor este egala cu suma gradelor externe ale tuturor nodurilor si cu numarul de arce0

8emonstratie0 Fiecare arc ui=1xi,x.2 cores%unde unei unitati din gradul extern al nodului xi si a unei unitati din gradul intern al nodului x., astfel fiecare arc contri,uie cu o unitate la suma gradelor interne si cu o unitate la suma gradelor externe. Re%re&entarea si im%lementarea grafului Re%re&entarea %rin matricea de adiacenta Re%re&entarea %rin lista muc+iilor)arcelor* Re%re&entarea %rin lista de adiacenta)listelor vecinilor* Fie graful G=)X,U* ce are n noduri si m muc+ii. Re%re&entarea %rin matricea de adiacenta Matricea de adiacenta a unui graf este o matrice %atratica ,inara de ordinal n, An,n , definita astfel0

'm%lementarea grafului %rin matricea de adiacenta se face %rintr4un ta,lou ,idimensional de ordin n, astfel0 int a1@nA21@nA2B 6ro%rietatile matricei de adiacenta0 . Elementele de %e diagonala %rinci%ala au valoarea 9 )orice muc+ie 1i,.2 tre,uie sa res%ecte conditia i. !. 'n ca&ul unui graf neorientat, matricea de adiacenta este o matrice simetrica fata de %rima diagonala, deoarece daca exista muc+ia 1i,.2, atunci exista si muc+ia 1.,i2 Matricea de adiacenta este utila %entru determinarea existentei unei muc+ii sau a unui arc intre doua noduri , %utandu4se calcula gradul unui nod.

Implementarea algoritmilor pentru repre entarea grafurilor !u matri!ea "e a"ia!enta 1# $rearea matri!ei "e a"ia!enta prin intro"u!erea "atelor "e la ta%tatura# Determinarea gra"ului unui no"# &al'area matri!ei "e a"ia!enta intr(un fi%ier te)t Graf neorientat #include<iostream.h> #include<fstream.h> int a[10][10],n,m;//n=nr de noduri,m=numarul de muchii ofstream f("graf1.t t"!; "oid scrie(!#//functie cu a$utorul careaia se scrie matricea de adiacenta in fisier int i,$; f<<n<<endl; for(i=1;i<=n;i%%!# for($=1;$<=n;$%%! f<<a[i][$]<<" "; f<<endl; & f.close(!; & int grad(int i!# int $,g=0; for($=1;$<=n;$%%! g%=a[i][$]; return g; & int main(!# int i,$,'; cout<<"numarul de noduri "; cin>>n; cout<<"numarul de muchii "; cin>>m; for('=1;'<=m;'%%!# cout<<"(rimul nod al muchiei "<<'<<")"; cin>>i; cout<<"al doilea nod al muchiei "<<'<<")"; cin>>$; a[i][$]=1; a[$][i]=1; & cout<<"*odurile i+olate sunt) "; for(i=1;i<=n;i%%! if(grad(i!==0! cout<<i<<" "; cout<<"nodurile terminale sunt) "; for(i=1;i<=n;i%%! if(grad(i!==1!

cout<<i<<" "; scrie(!; return 0; & Graf orientat #include<iostream.h> #include<fstream.h> int a[10][10],n,m;//n=nr de noduri,m=numarul de muchii ofstream f("graf,.t t"!; "oid scrie(!#//functie cu a$utorul careaia se scrie matricea de adiacenta in fisier int i,$; f<<n<<endl; for(i=1;i<=n;$%%! #for($=1;$<=n;$%%! f<<a[i][$]<<" "; f<<endl;& f.close(!;& int grad-e t(int i!# int $,g=0; for($=1;$<=n;$%%! g%=a[i][$]; return g;& int grad-int(int i!# int $,g=0; for($=1;$<=n;$%%! g%=a[$][i]; return g;& int main(!# int i,$,'; cout<<"numarul de noduri "; cin>>n; cout<<"numarul de muchii "; cin>>m; for('=1;'<=m;'%%! #cout<<"nodul initial al arcului "<<'<<")"; cin>>i; cout<<"nodul final al arcului "<<'<<")"; cin>>$; a[i][$]=1; & cout<<"*odurile i+olate sunt) "; for(i=1;i<=n;i%%! if(grad-int(i!%grad-e t(i!==0! cout<<i<<" "; cout<<endl<<"nodurile terminale sunt) "; for(i=1;i<=n;i%%! if(grad-int(i!%grad-e t(i!==1! cout<<i<<" "; scrie(!;

return 0;& 2# $rearea matri!ei "e a"ia!enta prin !itirea "atelor "in fi%ier# Determinarea numarului "e 'e!ini ai unui no"# Afi%area mu!*iilor+ar!elor, grafului Graf neorientat #include<iostream.h> #include<fstream.h> int a[10][10],n,m;//n=nr de noduri,m=numarul de muchii ifstream f("graf..t t"!; "oid citeste(!#//functie cu a$utorul careaia se citeste matricea de adiacenta din fisier int i,$; f>>n; for(i=1;i<=n;i%%! for($=1;$<=n;$%%! f>>a[i][$]; f.close(!;& int nr-m(!#//functie cu a$utorul careia se determina nr de muchii ale grafului int i,$,m=0; for(i=1;i<=n;$%%! for($=1;$<=n;$%%! m%=a[i][$]; return m/,;& int grad(int i!# int $,g=0; for($=1;$<=n;$%%! g%=a[$][i]; return g;& int main(!# int i,$,ma ; citeste(!; ma =grad(1!; for(i=,;i<=n;i%%! if(grad(i!>ma ! ma =grad(i!; cout<<"nodurile cu cei mai multi "ecini sunt) "; for(i=1;i<=n;i%%! if(grad(i!==ma ! cout<<i<<" "; cout<<endl<<"graful are) "<<nr-m(!<<"muchii "<<endl; cout<<"/uchiile grafului sunt) "; for(i=1;i<=n;i%%! for($=i%1;$<=n;$%%! if(a[i][$]==1! cout<<i<<"0"<<$<<" "; return 0;& Graf orientat

S-ar putea să vă placă și