Documente Academic
Documente Profesional
Documente Cultură
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:
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ță:
Lant, ciclu
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
Observatie
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.