Sunteți pe pagina 1din 6

Clasa XI GRAFURI Informatica

Lectia 2
REPREZENTAREA GRAFURILOR ÎN MEMORIA CALCULATORULUI

Reprezentarea în memoria calculatorului a grafurilor presupune memorarea numărului de noduri si a


legăturilor dintre acestea. În practică cele mai folosite moduri de reprezentare presupun utilizarea
variabilelor de tip tablou sau a structurilor de date dinamice.

a. Matricea de adiacenţă: 

    Fie un graf neorientat cu n noduri. Pentru memorarea muchiilor acestui graf se utilizează o matrice
binară, cu n linii şi n coloane, notată A, unde nreprezintă numărul de noduri din graf. Fiecare
element A[i][j] din matricea de adiacenţă A poate avea următoarele valori:

Declararea maricei de adiacenţă:

 int A[număr maxim de linii][număr maxim de coloane];

Observaţii:
    1. Matricea de adiacenţă este simetrică faţă de diagonala principală;
    2. Numărul de muchii din graf este egal cu numărul de valori de 1 aflate deasupra diagonalei principale;
    3. Diagonala principală va conţine doar valori nule;
    4. Numărul valorilor de 1 de pe linia X reprezintă gradul nodului X
Exemplu:

 Graf neorientat     Matricea de adiacenta

<Exercitiu de desenare 1>


Clasa XI GRAFURI Informatica

b. Listele de vecini (liste de adiacență)

Listele de vecini conțin nodurile care sunt adiacente cu fiecare nod din graf:

Exemplu:

 Graf neorientat     Lista de vecini

 Nod    Lista de vecini


1 3, 5 
2 1, 5, 6
3  1
4  8
5  1,2
6  2
7  -
8  4

pentru nodul 1: 2, 5
          

<Exemplu !>      <Exercițiu de desenare 2>  <Aprofundare-Lectie AEL>

Listele de vecini se pot implementa static( cu ajutorul vectorilor) sau dinamic(cu ajutorul listelor


simplu înlănţuite). 

1. Implementarea statică a listelor de vecini:

     1.1 Implementarea tată-fii: 

Se utilizează un vector V care pentru oricare nod i ce aparţine grafului păstrează toate nodurile j cu
care acesta este adiacent (dacă graful este neorientat atunci trebuie respectată condiţia j >
i, deoarece se repetă muchii ). Prin convenţie se separă nodurile tată şi adiacenţii lor prin valoarea
0.

...,0, Nodul i, fiul 1i, fiul 2i, fiul 3i,..., 0,... 

Fie următorul graf, cu cinci noduri reprezentat grafic:


Clasa XI GRAFURI Informatica

atunci implementarea folosind vectorul tata-fii este:

2. Implementarea dinamică a listelor de vecini:


În cazul acestei reprezentări fiecărui nod al grafului i se asociază o listă de adiacenţă în care sunt
înlănţuite toate nodurile cu care acesta este conectat. Acest mod de reprezentare va studiat mai în
capitolele următoare. 

Exemplu:

   

c. Vectorul de muchii
Această modalitate de memorare presupune utilizarea unui vector cu un număr de elemente egal cu
numărul de muchii din graf, fiecare element din vector memorând extremităţile unei muchii. Pentru a
memora o muchie se va folosi o structură, pe care o vom numi muchie şi care se defineşte astfel:

                                                               struct muchie {  int x;


                                                                                        int y;
                                                                                    };
Clasa XI GRAFURI Informatica

Declararea vectorului de muchii se face astfel:

 muchie V [ număr maxim de muchii ];

Vectorul de muchii reprezentat grafic este:

V.x V.x[1] V.x[2] … V.x[i] … V.x[m-1] V.x[m]


Vectorul de muchii V:
V.y V.y[1] V.y[2] … V.y[i] … V.y[m-1] V.y[m]

unde m reprezintă numărul de muchii din graf. 

    

Exemplu:

 Graf neorientat    Vectorul de muchii

          

    
Aplicatii rezolvate:

1. Scrieți o funcție care citește de la tastatură numărul de noduri ale unui graf neorientat si matricea
de adiacență.

    Rezolvare:
Clasa XI GRAFURI Informatica

2. Scrieți o funcție care afișează pe ecran matricea de adiacență a unui graf neorientat cu n noduri. 

    Rezolvare:

3. Scrieți o funcție care citește  numărul de noduri și matricea de adiacență a unui graf neorientat din
fișierul text graf.in. Fișierul text conține pe  prima linie un număr natural care reprezintă numărul de
noduri ale grafului iar pe următoarele n linii matricea de adiacență a grafului.

    Rezolvare:

   Fișierul text graf.in  va conține


valorile:
4
0    1    1    1
1    0    0    1        
1    0    0    1
1    1    1    0

3. Scrieți o funcție cu numele matrice_adiacenta, care construiește matricea de adiacență a unui graf


neorientat cu n noduri. Funcția va avea doi parametri și anume a- matrice pătratică și n numărul de
noduri din graf. Datele de intrare se citesc din fișierul text graf.in care conține pe prima linie un număr
natural care reprezintă numărul de noduri din graf iar pe următoarele linii perechi de valori naturale
care reprezintă muchiile grafului.
Clasa XI GRAFURI Informatica

Rezolvare:

   Fișierul text graf.in va avea


următorul conținut:
4
12
13
14
24
34

4. Scrieți o funcție cu numele lista_vecinilor care va afișa pe ecran lista vecinilor unui nod,transmis ca


parametru. Funcția va avea un singur parametru, notat x, care reprezintă nodul pentru care se dorește
afișarea listei vecinilor.

Rezolvare:

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