Sunteți pe pagina 1din 22

GRAFURILE

NEORIENTATE
Ghilescu Anca
CUPRINS

1. Introducere
2. Grafurile neorientate
o Definitie
o Reprezentarea grafurilor neorientate
o Subgraf, Graf partial, Graf complementar
o Graf nul. Graf complet. Graf regulat. Graf bipartit

3. Conexitate
4. Graf hamiltonian
5. Graf eulerian
1. INTRODUCERE
Un graf este o mulțime de obiecte (numite noduri) legate între ele printr-o
mulțime de muchii cărora le pot fi atribuite direcții (în acest caz, se spune că graful
este orientat). Un graf poate fi reprezentat geometric ca o mulțime de puncte legate
între ele prin linii (de obicei curbe).
2. GRAFURILE NEORIENTATE
Definiție: Se numește graf neorientat o pereche ordonată de mulțimi G=(X,U), unde:
o X este o mulțime finită și nevidă de elemente numite vârfuri sau noduri;
o U este o mulțime finită de submulțimi cu două elemente din X, numite muchii.

Vom nota în continuare vârfurile cu valori între 1 și n – unde n este număru de vârfuri din graf, iar muchiile cu [x,y]
sau (x,y), unde x și y sunt vârfuri și se numesc extremitățile muchiei.
 Un vecin al unui vârf x este orice vârf y cu proprietatea că există muchia [x,y].
 Două vârfuri între care există muchie se numesc adiacente.
 Două muchii sunt incidente dacă au o o extremitate comună. Un vârf este incident cu o muchie dacă vârful este
extremitate a acelei muchii.
 Gradul unui nod reprezinta numarul de varfuri cu care este adiacent sau numarul de muchii cu care este incident.
Gradul lui x se noteaza cu d(x).
 Un nod cu gradul 0 se numeste nod izolat.
 Un nod cu gradul 1 se numeste nod terminal.
 Gradul maxim al unui nod este n-1.
 Suma tuturor gradelor este dublul numarului de muchii.
REPREZENTAREA GRAFURILOR
NEORIENTATE

1. Matricea de adiacenta

O metoda de reprezentare a unui graf neorientat foarte folosita este matricea de adiacenta. Aceasta are
proprietatea ca a[i, j] = a[j, i] oricare ar fi i, j ∈ {1, 2, 3, …, n}, cu i ≠ j. Adica matriea de adiacenta a este simetrica
fata de diagonala principala.
REPREZENTAREA GRAFURILOR
NEORIENTATE
1. Matricea de adiacenta
Aplicatie:
Se dă lista muchiilor unui graf neorientat. Să se afișeze matricea de adiacență a grafului.
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("adiacenta.in");
ofstream g("adiacenta.out");
int x[101][101], n, m, a, b;
int main()
{ f>>n>>m; for(int i=1; i<=m; i++)
{ f>>a>>b; x[a][b]=x[b][a]=1; }
for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++)
g<<x[i][j]<<' '; g<<endl; }
return 0; }
REPREZENTAREA GRAFURILOR
NEORIENTATE

2. Lista de muchii

Lista de muchii a unui graf neorientat reprezintă o mulțime ce conține toate muchiile din graf. Pentru
reprezentarea în memorie putem folosi: un tablou unidimensional cu elemente de tip struct {int I,J;} două tablouri
unidimensionale cu elemente de tip int.
REPREZENTAREA GRAFURILOR
NEORIENTATE

2. Lista de muchii

Exemplu:

1. struct muchie {int x, y;


} v[101];

2. int x[101], y[101];

• Pentru graful alăturat, lista de muchii este:

U={[1,2],[1,5],[2,5],[4,5]}
REPREZENTAREA GRAFURILOR
NEORIENTATE

3. Lista de adiacenta

Lista de adiacență a unui nod i este formată din toate vârfurile adiacente cu i.
Exemplul descrierii unei liste de adiacență:

Proprietăți ale listelor de adiacenta


1. Gradul unui nod este dat de numărul de elemente din
lista lui;
2. Numărul total de elemente din toate listele este egal cu
2*m (dublul numărului de muchii).
REPREZENTAREA GRAFURILOR
NEORIENTATE
{
v[a]++;
3. Lista de adiacenta
v[b]++;
Se dă lista muchiilor unui graf neorientat. Să se afișeze, pentru
}
fiecare vârf al grafului, lista vecinilor săi.
x[a][b]=x[b][a]=1;
#include <iostream>
}
#include <fstream>
for(int i=1; i<=n; i++)
using namespace std;
{
ifstream f("listavecini.in");
g<<v[i]<<' ';
ofstream g("listavecini.out");
for(int j=1; j<=n; j++)
int x[101][101], v[101], n, m, a, b;
if(x[i][j]==1)
int main()
g<<j<<' ';
{
g<<endl;
f>>n;
}
while(f>>a>>b)
return 0;
{
}
if(x[a][b]==0)
​​SUBGRAF, GRAF PARTIAL, GRAF
COMPLEMENTAR
• Definiție. Fie G=(X, U) un graf orientat. Se numeşte subgraf al grafului G graful
neorientat G1=(X1,U1) unde X1 ⊆ X iar U1 conține toate arcele din U care au extremitățile
în X1.
• Definiție. Fie G=(X, U) un graf neorientat. Se numeşte graf parțial al grafului G, graful
neorientat G1=(X, U1), unde U1 ⊆ U.
• Definiție. Fie G=(X, U) un graf neorientat. Se numeşte graf complementar al grafului G, graful
neorientat G1=(X, U1), cu proprietatea că două vârfuri x și y sunt adiacente în G1 dacă și numai
dacă nu sunt adiacente în G.
12
GRAF NUL. GRAF COMPLET. GRAF
REGULAT. GRAF BIPARTIT
Definiție: Un graf neorientat se numește graf nul dacă mulțimea muchiilor este vidă.
Definiție. Fie G=(X, U) un graf neorientat. Graful G se numește graf complet dacă oricare
două vârfuri distincte ale sale sunt adiacente. Un graf complet cu n vârfuri se notează Kn.
• Într-un graf complet cu n vârfuri sunt n∗(n−1)/2 muchii și fiecare vârf are gradul n-1.
Definiție: Un graf în care toate nodurile au acelaşi grad se numește graf regulat.
Definiţie: Un graf G=(X, U) se numește graf bipartit dacă există două mulţimi
nevide A și B astfel încât X=A ∪ B, A ∩ B = ∅ şi orice muchie u a lui G are o extremitate
în A iar cealaltă în B. Mulţimile A şi B formează o partiţie a lui X.
EXEMPLE

Graf complet Graf regulat

Graf bipartit Bipartit complet


​3. CONEXITATE

Lant, ciclu

Definiție: Se numește lanț o succesiune de vârfuri L=[x1,x2,⋯xk] cu proprietatea că


oricare două vârfuri consecutive sunt adiacente.
Lanțul care conține numai vârfuri distincte, două câte două, este lanț elementar.
Lanțul care conține numai muchii distincte este lanț simplu. Dacă muchiile unui lanț nu
sunt distincte se numește lanț compus.

Definiție: Se numește ciclu un lanț simplu în care primul vârf este identic cu ultimul.
Dacă toate vârfurile sunt distincte, mai puțin primul și ultimul, se numește ciclu
elementar.
Lungimea unui ciclu este egală cu numărul de muchii din ciclu. Lungimea minimă a unui
ciclu este 3.
Un ciclu se numește par dacă lungimea sa este pară, respectiv impar în caz contrar.
Un graf neorientat care nu conține niciun ciclu se numește aciclic.
Lant, ciclu

Exemplu:
Graf conex. Componente conexe

Definiție: Un graf neorientat se numește graf conex dacă pentru oricare două


vârfuri x și y diferite ale sale, există cel puțin un lanț care le leagă, adică x este
extremitatea inițială și y este extremitatea finală.
Un graf cu un singur nod este, prin definiție, conex.

Definiție: Se numește componentă conexă a unui graf G=(X,U) un subgraf H=(Y, V),


conex, al lui G
care are proprietatea că nu există nici un lanț în G care să lege un vârf din Y cu un vârf
din X – Y.
Subgraful H este conex și maximal cu această proprietate (dacă s-ar mai adăuga un vârf nu
ar mai fi conex.)
Un graf este conex dacă admite o singură componentă conexă.
Graf conex. Componente conexe si exemple:
Parcurgerea grafurilor
 Prin parcurgerea unui graf neorientat se înţelege examinarea în mod sistematic a
vârfurilor, plecând dintr-un vârf dat start, astfel încât fiecare vârf accesibil din start pe
muchii incidente două câte două să fie vizitat o singură dată. Trecerea de la un
vârf x la altul se face prin examinarea, într-o anumită ordine a vecinilor săi.
 Exista doua tipuri de parcurgere a grafurilor:
• In latime
• In adancime

Observatie

Parcurgerea grafurilor se foloseste pentru verificarea conexitatii unui


graf. Daca graful este conex, se vor vizita toate nodurile.
Parcurgerea in latime

 Se parcurge vârful de start, apoi vecinii acestuia, apoi vecinii nevizitați ai acestora, etc,
până când sunt vizitate toate vârfurile accesibile. Practic, pentru a stabili ordinea de
vizitare se folosește o coadă, iar pentru a stabili dacă un vârf a fost sau nu vizitat se
foloseşte un vector caracteristic.

Vârfurile grafului au fost parcurse în


ordinea: 5 2 4 7 1 3 6 8 9.
Parcurgerea in adancime

• Parcurgerea în adâncime reprezintă explorarea “naturală” a unui graf neorientat.


Parcurgerea în adâncime se face astfel:
1. Se începe cu un vârf inițial x, care este în acest moment vârf curent.
2. Vârful x se vizitează. Se determină primul său vecin nevizitat y al lui x, care
devine vârf curent.
3. Apoi se vizitează primul vecin nevizitat al lui y, şi aşa mai departe, mergând în
adâncime, până când ajungem la un vârf care nu mai are vecini nevizitați. Când
ajungem într-un astfel de vârf, ne întoarcem la “părintele” acestuia – vârful din
care am ajuns în acesta.
4. Dacă acest vârf mai are vecini nevizitați, alegem următorul vecin nevizitat al său și
continuam parcurgerea în același mod.
5. Dacă nici acest vârf nu mai are vecini nevizitați, revenim în vârful său părinte și
continuăm în același mod, până când toate vârfurile accesibile din vârful de start
sunt vizitate.

Ex: Parcurgerea din nodul 5: 5 2 1 4 6 3 7 8 9


4. GRAF HAMILTONIAN

Definiție: Se numește graf hamiltonian un graf care conține un ciclu hamiltonian. Se


numește ciclu hamiltonian un ciclu elementar care conține toate vârfurile grafului.
Teoremă: Un G un graf neorientat. Dacă are n≥3 vârfuri şi gradul oricărui vârf verifică
inegalitatea d(x)≥n/2 atunci G este hamiltonian.
5. GRAF EULERIAN

Definiție: Se numește graf eulerian un graf care conține un ciclu eulerian. Se


numește ciclu eulerian un ciclu care conține toate muchiile grafului.
Teoremă: Un graf G = (X,U), fără vârfuri izolate, este eulerian dacă şi numai dacă este
conex şi gradele tuturor vârfurilor sale sunt numere pare.

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