Def. Se numeste graf neorientat o perechi de multimi G=(X,U) unde:
-X este o multime finita si nevida de elemente numite noduri sau arce -U este o multime de perechi neordonate de cate 2 elemente din X nuite muchii sau arce Fie u=(a,b) o muchie a grafului G, spunem ca: -vf a si b sunt extremitatile muchiei -vf a si muchiei u sunt incidente in graf, la fel si vf b si muchia u -vf a si b sunt adiacente -muchia (a,b) este totuna cu muchia (b,a) Exp. Pt GT1 X={1,2,3,4,5,6,7} multimea nodurilor U={(1,2),(1,4),(2,3),(3,4),(4,5),(4,6),(5,6),(5,7)} Def. se numeste gradul unui nod notat cu d(x) numarul muchiilor ce pleaca din nodul x. Daca gradul unui nod este 0 se numeste vf izolat, iar daca gradl este 1 atunci nodul se numeste terminal. Exp. x d(x) 1 2 2 2 3 2 4 4 5 3 6 2 7 1 Teorema. Intr-un graf G=(X,U) cu n noduri si m muchii se verifica relatia: n
∑ d (xi)=d ( x 1 )+ d ( x 2 ) +…+ d ( xn ) =2∗m
i=1
Cu alte cuvinte suma gradelor tuturor nodurilor este egala cu 2* nr
de muchii. Reprezentare a. matricea de adiacenta- este data de relatia a[i][j]=1, daca exista muchia (i,j) 0, in caz contrar Exp. X 1 2 3 4 5 6 7 1 0 1 0 1 0 0 0 2 1 0 1 0 0 0 0 3 0 1 0 1 0 0 0 4 1 0 1 0 1 1 0 5 0 0 0 1 0 1 1 6 0 0 0 1 1 0 0 7 0 0 0 0 1 0 0
2. Listele vecinilor- pentru fiecare nod se construieste o lista de vecini
ce contine extremitatile muchiilor ce pleaca din nodul respectiv x L(x) 1 2,4 2 1,3 3 2,4 4 1,3,6,5 5 4,6,7 6 5,4 7 5 3. Vectorul de muchii- o muchie poate fi reprezentata ca o structura cu 2 elemente si anume extremitatile muchiei, iar graful poate fi privit ca un vector de astfel de elemente struct muchie {int nod1,nod2;}v[100]; v[1].nod1-este o extremitate a muchiei 1 v[1].nod2- cealalta extremitate a muchiei 1 Tipuri de grafuri 1. Graf partial- un graf partial se obtine din graful initial pastrand toate nodurile si eliminand muchii 2. subgraful- se obtine din graful initial eliminand noduri cu tot cu muchiile aferente 3. Graf complet- este un graf care are proprietatea ca oricare doua noduri x,y ale sale exista o muchie care sa le lege. Teorema. Un graf complet cu n noduri are n(n-1)/2 muchii 4. graf bipartit- este un graf cu prop ca multimea nodurilor X se poate imparti in doua submultimi A si B cu prop ca : 1. AUB=X 2.AႶB=Ǿ 3. orice muchie a grafului G are o extremitate in A si cealalta extremitate in B 5. graf bipartit complet- este un graf bipartit cu prop ca toate nodurile unei submultimi sunt adiacente cu nodurile celeilalte submultimi Lant. Ciclu Def. se numeste lant o succesiune de noduri L=(z1,z2,..,zk) cu prop ca oricare doua noduri vecine sunt adiacente i.c. exista muchiile [z1,z2], [z2,z3],…[zk-1,zk] Daca nodurile unii lant sunt distincte doua cate doua lantul se numeste elementar, in caz contrar ne-elementar Exp.GT1 L=1-2-8-7-6 lant elementar L=1-2-3-2-8-7 lant ne-elementar Ciclu- se numeste ciclu o succesiune de noduri C=z1,z2,..,zk cu prop ca z1=zk si oricare doua noduri vecine sunt adiacente i.c. exista muchiile [z1,z2],[z2,z3],…[zk-1,zk]. Daca nodurile, cu exceptia primului si a ultimului nod, sunt distincte doua cate doua ciclu se numeste elementar, in caz contrar ne- elementar Exp. C-3-4-5-3- ciclu elementar C=4-3-2-3-5-4 ciclu ne-elementar Graf conex. Se numeste graf conex un graf cu prop ca pentru oricare doua noduri ale sale exista un lant care sa lege. Obs. Graful conex este un graf care NU are varfuri izolate(in principiu). Def. componenta conexa este un subgraf conex cu prop ca din orice nod al componentei NU se poate ajunge in celelalte noduri ale grafului Obs. Varfurile izolate sunt componente conexe Def. Graf hamiltonian este graful care contine un ciclu elementar ce trece prin toate nodurile grafului Teorema. Un graf neorientat cu n noduri este hamiltonian daca si numai daca gradul fiecarui nod respecta relatia d(x)>=n/2. Graful eulerian. Se numeste graf euelrian un graf care contine un ciclu elementar care trece prin toate muchiile grafului. Teorema. Un graf neorientat cu n noduri este eulerian daca si numai daca NU are varfuri izolate si gradele tuturor nodurilor sunt pare. Formule 1. Numarul de grafuri neorientate cu n noduri este dat de 2n(n-1)/2 Variante 1 Citirea matricei de adiacenta 1. de la tastatura cin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { do { cin>>a[i][j];}while(a[i][j]==1 ││ a[i][j]==0); } 2. prin citirea muchiilor cin>>n>>m; for(k=1;k<=m;k++) { do{ cin>>x>>y;}while(x>=1 && x<=n && y>=1 && y<=n); a[x][y]=a[y][x]=1; } 3. din fisier f>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>a[i][j];