Sunteți pe pagina 1din 7

REPREZENTAREA

GRAFURILOR
MATRICEA DE ADIACENTA
REPREZENTAREA GRAFURILOR
Exista mai multe moduri de reprezentare la nivel logic a unui graf.
Aceste reprezentari pot fi folosite in algoritmii care prelucreaza
grafuri.
Printre modurile de reprezentare a unui graf se numara:

Reprezentarea prin matricea de adiacenta


Reprezentarea prin lista muchiilor (arcelor)
Reprezentarea prin lista de adiacenta(lista vecinilor)

In functie de modul de reprezentare se utilizeaza diverse tipuri de


structuri de date: tablouri bidimensionale, vectori, inregistrari.
REPREZENTAREA GRAFURILOR PRIN MATRICEA
DE ADIACENTA
Matricea de adiacenta – o matrice patrata binara de ordinul n ale
carei elemente aij sunt definite astfel:

1, dacă  xi , x j   U

aij  
0, altfel

Implementarea grafului prin matricea de adiacenta se face


printr-o matrice patrata cu dimensiunea n astfel:
int a[<n>][<n>]

Proprietatile matricei de adiacenta:


•Elementele de pe diagonala principala au valoarea 0.
•In cazul grafului neorientat matricea de adiacenta este
simetrica fata de diagonala principala
Exemplu:
Graf neorientat
G=(X,U)
X={1,2,3,4,5} U={[1,2],[1,3],[1,4],[1,5],[2,3],[2,4],[2,5],[3,4]}

0      1      1      1      1    
  
1      0      1      1      1    
  
1      1      0      1      0    
  
1      1      1      0      0    
  
1      1      0      0      0  
Exemplu
Graf orientat
G=(X,U)
X={1,2,3,4,5} U={[1,2],[1,5],[2,1],[2,3],[3,1],[3,4],[5,2]}

0      1      0      0      1      

1      0      1      0      0      

1      0      0      1      0      

0      0      0      0      0      

0      1      0      0      0      
IMPLEMENTAREA GRAF NEORIENTAT
int a[10][10],n,m;
void scrie()
{int i,j;
cout<<n<<endl;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;}}

void main()
{int i,j,k;
cout<<"Numar de noduri:"; cin>>n;
cout<<"Numar de muchii:"; cin>>m;
for(k=1;k<=m;k++)
{cout<<"Primul nod al muchiei:"; cin>>i;
cout<<"Al doilea nod al muchiei:"; cin>>j;
a[i][j]=1; a[j][i]=1;}
scrie();}
IMPLEMENTAREA GRAF ORIENTAT
int a[10][10],n,m;
void scrie()
{int i,j;
cout<<n<<endl;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;}}

void main()
{int i,j,k;
cout<<"Numar de noduri:"; cin>>n;
cout<<"Numar de arce:"; cin>>m;
for(k=1;k<=m;k++)
{cout<<“Nodul initial al arcului:"; cin>>i;
cout<<“Nodul final al arcului:"; cin>>j;
a[i][j]=1; }
scrie();}

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