Sunteți pe pagina 1din 32

GRAFURI NEORIENTATE .............................................................................................................................................................................................................................

3
Se numeste graf partial...............................................................................................................................................................................................................................4
Se numeste subgraf ....................................................................................................................................................................................................................................4
Reprezentarea grafurilor neorientate ........................................................................................................................................................................................................7

matricea de adiacenta ....................................................................................................................................................................................................................7

listele vecinilor ................................................................................................................................................................................................................................7

vectorul muchiilor ...........................................................................................................................................................................................................................7

Moduri de memorare ale unui graf ............................................................................................................................................................................................................7


Proprietatile matricei : ................................................................................................................................................................................................................................9
Vectorul muchiilor. .....................................................................................................................................................................................................................................9
Parcurgerea grafurilor ..............................................................................................................................................................................................................................12
Algoritmul de parcurgere in latime BF (Breadth First); ............................................................................................................................................................................14
Algoritmul de parcurgere in adancime DF (Depth First);.....................................................................................................................................................................15
Aplicatie ....................................................................................................................................................................................................................................................16
In C++ vom afisa matricea de adiacenta: ..................................................................................................................................................................................................17
Calcularea gradelor nodurilor ...................................................................................................................................................................................................................18
Parcurgerea in latime: ..............................................................................................................................................................................................................................19
CONEXITATE ..............................................................................................................................................................................................................................................22
Definiie -lant ............................................................................................................................................................................................................................................23
Sa se afiseze un lant de lungime minima intre nodurile a si b: ................................................................................................................................................................26
Se numete graf hamiltonian....................................................................................................................................................................................................................29
Grafuri hamiltoniene si euleriene .............................................................................................................................................................................................................31

Notiuni de baz : Definitii:grad, subgraf :


http://portal.edu.ro/bac2012/materiale/TIC_011/M1/index.html

GRAFURI NEORIENTATE

Definiie: Se numete graf neorientat o pereche ordonat de mulimi (X,U), X


fiind o mulime de elemente numite noduri sau vfuri, iar U o mulime din X
numite muchii.

Pentru graful de mai sus avem:


X={1, 2, 3, 4, 5, 6, 7, 8} :noduri
U={(1,2), (1,4), (1,5), (2,3), (2,5), (3,4), (6,7)} ;muchii
Dac u1i u2 sunt dou muchii ce au o extremitate comun ele se vor numi
adiacente.

Definiie : Un graf parial al grafului G=(X,U) este un graf G1(X,V) astfel nct V U,
adic G1 are aceeai mulime de vrfuri ca G, iar muimea de muchii V este chiar U sau o
submulime a acesteia.
Se numeste graf partial daca se pastreaza nodurile si se suprima niste muchii
Ex. Mai jos avem un graf parial al grafului de mai sus (Fig. 1)

Cu alte cuvinte, un graf parial al unui graf se obine pstrnd aceeai mulime de
noduri i eliminnd o parte din muchii.
Definiie : Un subgraf al unui graf G=(X,U) este un graf H(Y,V) astfel nct Y X
iar V conine toate muchiile din U care au ambele extremiti n Y. Vom spune c
subgraful H este indus sau generat de mulimea de vrfuri Y.
Se numeste subgraf daca se elimina niste noduri
Ex. Mai jos avem un subgraf al grafului din Fig. 1 obinut prin eliminarea nodului 3

Definiie : Gradul unui vrf x este numrul muchiilor incidente cu x.


Gradul vrfului x se noteaz d(x).
Ex. n Fig. 1 : d(1)=3 ; d(4)=2 ; d(8)=0 ; d(6)=1 ;
Un vrf care are gradul 0 se numete vrf izolat.
Un vrf care are gradul 1 se numete vrf terminal.
Propoziia 1 : Dac un graf G(X,U) are m muchii i n vrfuri, iar X={x1,x2,...,xn}
atunci suma gradelor fiecarui nod este dublul muchiilor :
d(x1)+d(x2)+...+d(xn)=2*m ;
Corolar : n orice graf G exist un numr par de vrfuri cu grad impar.

Definiie : Se numete graf complet cu n vrfuri un


graf care are proprietatea c orice dou noduri diferite sunt
adiacente.
4 varfuri are : 4*(4-1)/2=6 muchii
Propoziia 2 : Un graf complet Kn are n(n-1)/2 muchii.
Definiie: Un graf G=(X,U) se numete bipartit dac
exist dou mulimi nevide A, B astfel nct X=A U B, AB
6

i orice muchie a lui G are o extremitate n A iar cealalt n B.

Unele noduri din A pot fi adiacente cu nodurile din B

Definiie: Un graf bipartit complet dac pentru orice x


A i y din B, exist muchia (x,y).

din

toate noduriledin A sunt adiacente cu nodurile din B

Reprezentarea grafurilor neorientate


Cele mai cunoscute forme de reprezentare ale unui astfel de graf sunt:
matricea de adiacenta,
listele vecinilor si
vectorul muchiilor.

Moduri de memorare ale unui graf

1. Lista vecinilor : Putem memora graful dnd pentru fiecare nod mulimea nodurilor cu
care formeaz arce n care el este pe prima poziie.
x1 { x2, x3,x5}
x2 { x1, x3 }
x3 {x1, x2}
x4 { 0}
x5 { x1 }
x6 { x10, x7}
x7 { 6,8}
x8 { 9,7 }
x9 { x10, x8}
x10 { x6, x9}

2. Un graf poate fi memorat printr-o

matrice ptratic boolean,

de dimensiune egal cu

numrul de noduri, n care o poziie aij va fi 1 dac exist muchia (xi,xj) i 0 n caz
contrar, numit matricea adiacenelor directe.
x1
x2
x3
x4
x5
x6

x1
0
1
1
1
1
0

x2
1
0
1
1
1
0

x3
1
1
0
0
0
0

x4
1
1
0
0
1
1

x5
1
1
0
1
0
0

x6
0
1
0
1
0
0
8

Proprietatile matricei :
1. Este o matrice simetrica
2. Elementele de pe diagonala principale sunt egale cu 0
3. Suma elementelor pe lini i sau coloana j este egala cu gradul nodului i
4. Daca toate elementele pe linia/ coloana i sunt egale cu 0 atunci nodul este izolat
5. Daca toate elementele sunt egale cu 1 mai putin cele de pe DP atunci inseamna ca
graful este complet

Vectorul muchiilor.

Fiecare muchie a grafului poate fi privita ca o inregistrare cu doua componente: cele doua
varfuri care constitue extremitatile muchiei. Notand aceste extremitati cu nod1 si nod2, putem
defini tipul de date tmuchie, astfel:
int tmuchie
{ int nod1, nod2;
};
Graful in ansamblul sau, este o multime de muchii, adica o multime de elemente de tipul
tmuchie.In consecinta definim graful ca un vector de muchii, adica un vector cu elementele
de tipul muchie:
tmuchie vector[25];

Exemplul 2: Reprezentm graful de mai sus prin cele dou metode :

1.

1
0

A 0
0

1 0 0 0 0 0

0 1 1 0 0 0
1 0 1 0 0 0

1 1 0 0 0 0
0 0 0 0 1 0
0 0 0 1 0 0

0 0 0 0 0 0

nodul lista _ vecinilor

2.

1
2
3
.
4
5
6
7

2
1,3,4
2,4
2,3
6
5

Def.
Fie graful G = (X,U). Un graf parial se obine din G pstrnd toate vrfurile
i suprimnd nite muchii.

Def. Fie graful G = (X,U). Un subgraf al lui G se obine din G eliminnd nite vrfuri i
pstrnd doar acele muchii care au ambele extremiti n mulimea vrfurilor rmase.
Ex :
-graful initial

10

a. Eliminam muchiile care trec prin nodul 4 graf partial

Am eliminat muchiile u3 i u4, pstrnd toate vrfurile.

b. Eliminm vrfurile 5,6,7 i muchiile corespunztoare(u5) subgraf

11

Parcurgerea grafurilor

Ne amintim:
Ce este un graf?

Se numete graf neorientat o pereche ordonat de mulimi (X,U), X fiind o mulime


de elemente numite noduri sau vfuri, iar U o mulime de perechi neordonate
numite muchii.

Ce este un graf
Se numeste graf partial daca se pastreaza nodurile si se suprima niste muchii
partial?
Ce este un subgraf? Se numeste subgraf daca se elimina niste noduri dintr-un graf
Cum aflam gradul
unui nod?
Care sunt
proprietatile unei
matrice de
adiacenta?
(reprezentarea
grafului in
memorie)

Gradul unui nod x este egal cu numrul muchiilor adiacente cu x.


Construim matricea de adiacenta si suma de 1 de pe fiecare linie este egal cu
gradul nodului i de pe linia i
Este o matrice simetrica
Elementele de pe diagonala principale sunt egale cu 0
Suma elementelor pe lini i sau coloana j este egala cu gradul nodului i
Daca toate elementele pe linia/ coloana i sunt egale cu 0 atunci nodul este izolat
Dac toate elementele sunt egale cu 1 mai putin cele de pe DP atunci inseamna ca
graful este complet

12

1) parcurgere in latime BF (Breadth First):


6,3,5,1,4,2
2)

parcurgere in adancime DF

(Depth First):

6,3, 1,2,4,5

http://portal.edu.ro/bac2012/materiale/TIC_011/M8/index.html
13

Algoritmul de parcurgere in latime BF (Breadth First);

Metoda consta in:


1) se viziteaza varful de pornire,
2) se viziteaza toate varfurile adiacente in ordine crescatoare,
3) in ordine crescatoare se alege primul varf adiacent cu varful de pornire si se
viziteaza toate varfurile adiacente cat timp este posibil.

Exemplul 1:
Presupunem ca varful de pornire este 1,atunci parcurgerea BF este:1,2,5,6,3,4,7.
Pentu 3 varf de pornire:3,2,4,1,5,6,7.
Pentru implementare vom folosi :
1) un vector care are proprietatile unei cozi, fie
c=(c1,c2,,ck). Capetele de intoducere si
extragere vor fi identificate prin pozitiile p si
respectiv u.
2) Mai avem nevoie de un vector viz cu n elemente, in care elementele viz[k]
(k=1,2,.,n) au semnificatia: viz*i+=0, daca varful i nu a fost vizitat sau viz[i]=1daca a
fost vizitat. Mai intai initializam tot vectorul viz cu 0.
14

Initial in coada se gaseste varful de pornire: p=1, u=1, c[p]:=x, viz[x]:=1.


Cat timp mai sunt elemente in coada(while p<=u):
Extragem din coada varful aflat in capatul de extragere u, si-l memoram intr-o variabila
z{z:=c[p]};
Pe linia z in a cautam vecinii lui z si ii introducem in coada.

Algoritmul de parcurgere in adancime DF (Depth First);

Metoda consta in:


1) alegem varful de pornire,
2) se alege primul vecin al sau nevizitat inca,
3) pentru acest vecin cautam primul vecin al sau
nevizitat si asa in continuare.
4) In cazul in care un varf nu mai are vecini
nevizitati atunci ne intoarcem la nodul
anterior, iar pentru acel nod cautam
urmatorul vecin nevizitat al sau.
Pentru graful de mai sus parcurgerea in adancime plecand de la varful 1 este:
1,2,3,4,6,7,5.
Pentru a implementa vom folosi o stiva si metoda backtracking.
15

Aplicatie
Construirea matricei de adiacenta:
Se considera urmatorul graf:

16

In C++ vom afisa matricea de adiacenta:

else cout<<a[i][j]<<" ";


cout<<endl;}}
17

Calcularea gradelor nodurilor

cout<<" nodurile la dreapta muchiei: "<<i;


a[x][y]=1; a[y][x]=1;

cin>>y;

}
18

for(i=1;i<=n;i++)
//afisare grad nod
cout<<"varful "<<i<<" are gradul "<<grad(i)<<endl;
}
Parcurgerea in latime:

19

20

Metoda consta in:


-alegem varful de pornire, pentru acesta se alege primul vecin al sau nevizitat inca,pentru acest
vecin cautam primul vecin al sau nevizitat si asa in continuare. In cazul in care un varf nu mai
are vecini nevizitati atunci ne intoarcem la nodul anterior, iar pentru acel nod cautam urmatorul
vecin nevizitat al sau.
21

Pentru graful de mai sus parcurgerea in adancime plecand de la varful 1 este: 1,2,3,4,5,6,7.
Pentru a implementa vom folosi o stiva si metoda backtracking.

CONEXITATE
Prin parcurgerea in latime acelui graf am subliniat o
proprietate importanta a grafului:faptul ca in urma
parcurgerii au fost vizitate toate varfurile.
Luand oricare doua varfuri,putem gasi cel putin un traseu care porneste dintr-un varf si
ajunge in celalalt.
Luand oricare doua varfuri, ele pot fi legate printr-un lant.
Dar nu toate grafurile sunt conexe. In schimb putem desprinde din el portiuni care, fiecare
luata separat, este un graf conex.
Exemplu:
Se numeste componenta conexa a grafului G=(X,U), un subgraf G1=(X1,U1) a lui G,
conex, cu proprietatea ca nu exista nici un lant care sa lege un varf din X1 cu un varf din
X-X1.

Fie G=(X,U) un graf neorientat, X={x1,x2,..,xn}.

22

Definiie -lant: Se numete lan n G succesiunea de vrfuri L={xi1,xi2,...,xik} cu


proprietate c orice dou noduri consecutive din lant sunt adiacente, adic (xi1,xi2),
(xi2,xi3), ..., (xik-1,xik) U
Dac vrfurile xi1, xi2, ..., xik sunt diferite dou cte dou atunci lanul se
numete elementar. n caz contrar, lanul este neelementar.

ex. L1=[1, 2, 4] lan elementar


L2=[1, 2, 3, 1, 2, 4] lan neelementar
Definiie : Se numete ciclu n G un lan L pentru care xi1=xik i toate muchiile
adiacente (xi1, xi2), (xi2, xi3), ..., (xik-1, xik) sunt diferite.
Ex. C=[1, 2, 3, 1] este un ciclu
Definiie : Se numete ciclu elementar un ciclu care are proprietate c oricare
dou vrfuri ale sale, cu excepia primului i ultimului, sunt diferite dou cte dou.
Ex. C1=[1, 2, 3, 1] este ciclu elementar.
C2=[3, 1, 2, 4, 8, 2, 3] este un ciclu neelementar.
Definiie : Un graf G se numete conex dac pentru orice dou vrfuri x i y
diferite ale sale exist un lan ce le leag.
23

Definiie : Se numete component conex a grafului G=(X,U) un subgraf


C=(X1,U1), conex, al lui G care are proprietatea c nu exist nici un lan care s lege un
vrf din X1 cu un vrf din X-X1.

L1 = (1,2,3,4) - lan elementar


L2 = (1,2,4,3,2,3,4) - lan ne-elementar
L3 = (2,4,3,2,1) lan ne-elementar
L4 = (6,5,1,2,3,4) -lan elementar

Def. Se numete ciclu ntr-un graf, un lan L = (z1,z2,...,zk) cu proprietatea c z1 = zk i


muchiile [z1,z2], [z2,z3+,, *zk-1,zk+ sunt distincte dou cte dou.
Def. Dac ntr-un ciclu, toate vrfurile cu excepia primului i a ultimului sunt distincte
dou cte dou, atunci ciclu se numete elementar. In caz contrar, el este ne-elementar.

24

C1 = (2,3,4,2) - ciclu elementar


C2 = (1,2,4,3,1)

- ciclu elementar

C3 = (5,2,4,3,1,5) - ciclu elementar


C4 = (1,2,3,4,2,5,1) - ciclu ne-elementar
C5 = (5,2,3,4,2,1,5)

- ciclu ne-elementar

Obs. In cadrul unui lan, muchiile se pot repeta, dar n cadrul unui ciclu ele trebuie s fie
distincte.

Def. Un graf G este conex dac oricare ar fi dou vrfuri ale sale, exist un lan care le
leag.
Obs. Intr-un graf conex, lund oricare dou vrfuri , putem gsi cel putin un traseu(lan)
care pornete dintr-un vrf i ajunge n cellalt.

25

Def. Se numete component conex a grafului G =(X,U), un subgraf G1=(X1,U1) a lui


G,conex, cu proprietatea c nu exist nici un lan care s lege un vrf din X1 cu un vrf din
X-X1.

Ex.

In acest exemplu exista 3 componente conexe


- G1 =(X1,U1), cu X1=,1,2,3,4- i U1={u1,u2,u3,u4}
- G2 =(X2,U2), cu X2=,5,.6- i U2={u5}
- G3 =(X3,U3), cu X3={7- i U1=

Sa se afiseze un lant de lungime minima intre nodurile a si b:


Exista un lant de la a la b daca si numai daca o percurgere DF sau BF porneste de la a si ajunge sa viziteze nodul b.

26

27

28

Def. Se numete ciclu hamiltonian ntr-un graf, un ciclu elementar care conine toate
vrfurile grafului.
Se numete graf hamiltonian un graf care conine un ciclu hamiltonian.

Ex

Graful din acest exemplu este hamiltonian, deoarece ciclu C =[2,5,1,3,4,2] este
elementar (pleac din vrful 2 i se ntoarce tot n 2, iar muchiile *2,5+, *5,1+, *1,3+, *3,4+,
*4,2+ sunt distincte dou cte dou) i n plus conine toate vrfurile.

Def. Se numete lan hamiltonian ntr-un graf, un lan elementar care conine toate
vrfurile grafului.
29

Ex L = [2,5,1,3,4]

Th. Dac ntr-un graf G=(X,U) cu n 3 vrfuri, gradul fiecrui vrf verific condiia

d ( x)

n
2

atunci graful este hamiltonian.


Def. Se numete ciclu eulerian ntr-un graf un ciclu care conine toate muchiile
grafului.
Def: Se numete graf eulerian un graf care conine un ciclu eulerian.
Ex.

Pentru acest graf, ciclu C = *2,1,5,2,3,4,2+ este eulerian, deoarece pleac din 2 i se
ntoarce tot n doi, iar muchiile sale consecutive, adica [2,1], [1,5], [5,2], [2,3], [3,4], [4,2]
sunt distincte dou cte dou i reprezint toate muchiile grafului.

30

Th. Un graf fr vrfuri izolate este eulerian dac i numai dac este conex i gradele
tuturor vrfurilor sunt numere pare.

Grafuri hamiltoniene si euleriene


Se numeste ciclu hamiltonian intr-un graf, un ciclu elementar
care contine toate varfurile grafului.
Un graf care contine un ciclu hamiltonian se numeste graf
hamiltonian.
Un lant elementar care contine toate varfurile grafului se
numeste lant hamiltonian.

Un graf hamiltonian are cel putin trei varfuri.

Graful complet cu n varfuri este un graf hamiltonian.

Teorema:
31


Fie G=(X,U), cu n>=3 varfuri, daca oricare ar fi x un nod al
grafului si d(x)>=n/2, atunci graful este hamiltonian.
Se numeste ciclu eulerian intr-un graf, un ciclu care contine
toate muchiile grafului.
Un graf care contine un ciclu eulerian se numeste graf
eulerian.
Un lant eulerian este un lant care contine toate muchiile
grafului.
Teorema:
Un graf fara varfuri izolate este eulerian, daca si numai daca este
conex si gradele tuturor varfurilor sunt numere pare

32

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